Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: syssrc/sys/compat/irix



Module Name:    syssrc
Committed By:   manu
Date:           Sat Jan 19 14:56:04 UTC 2002

Modified Files:
        syssrc/sys/compat/irix: irix_syssgi.c irix_syssgi.h

Log Message:
Fixes the problem with libX11.so mapping by syssgi(MAPELF): the load address
for the text section of libx11.so was overlapping with other ELF sections
aloready loaded, and this resulted into an ENOMEM error.

syssgi(MAPELF) uses elf32_load_psection() from syssrc/sys/kern/exec_subr.c
The problem was never experienced with load_psection() because it only has
to load one section, hence the requested address are not already allocated.

The fix is done when the initial mapping at the default address fails by
finding a free location in the VM space using uvm_map_findspace(), and then
retrying to load the section.

Other details:
- once the ELF section has been relocated, the ELF program header must be
updated with the new address and copied back to userland. For now we always
do it, maybe we could copy it only when it was modified.
- We are able to emulate the exact address where IRIX loads libX11.so instead
of the default location


To generate a diff of this commit:
cvs rdiff -r1.11 -r1.12 syssrc/sys/compat/irix/irix_syssgi.c
cvs rdiff -r1.2 -r1.3 syssrc/sys/compat/irix/irix_syssgi.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.




Home | Main Index | Thread Index | Old Index