[RFC][MIPS] What to do about DT_MIPS_RLD_MAP and PIE
Maciej W. Rozycki
macro@codesourcery.com
Thu Oct 30 23:53:00 GMT 2014
On Thu, 30 Oct 2014, Roland McGrath wrote:
> > Alternatively, we could cook up a generic DT_GNU_RLD_MAP tag for
> > platforms that want to opt in to a read-only dynamic section/segment and
> > start using it with the MIPS target first. I think I like the latter a
> > bit better, any thoughts, anyone?
>
> What's the specification of this tag's semantics?
Here's what the 32-bit MIPS psABI[1] says about it:
"DT_MIPS_RLD_MAP
This member is used by debugging. It contains the
address of a 32-bit word in the .data section which is
supplied by the compilation environment. The word's
contents are not specified and programs using this value
are not ABI - compliant."
In a 64-bit ELF file the word is 64-bit instead; the 64-bit MIPS ELF
specification[2] mentions the tag, but does not document it further.
The GNU toolchain does not really use a location in the `.data' section;
instead the BFD linker creates a separate `.rld_map' section that spans
only this piece of data, and points DT_MIPS_RLD_MAP at it. The section is
then mapped to a writable segment.
Our `ld.so' then puts the address of its link map there just as it puts
it directly into the DT_DEBUG tag if present instead. The value of the
DT_MIPS_RLD_MAP tag is intepreted as a final virtual memory address and
therefore does not work for PIE executables though.
For a new DT_GNU_RLD_MAP to work universally, both for traditional and
PIE executables, I propose that the contents of this tag were not an
address of, but a relative offset from the location of the tag to the
location referred. This will be straightforward to handle in GDB too.
References:
[1] "SYSTEM V APPLICATION BINARY INTERFACE, MIPS RISC Processor
Supplement, 3rd Edition"
http://www.linux-mips.org/pub/linux/mips/doc/ABI/mipsabi.pdf
[2] "64-bit ELF Object File Specification, Draft Version 2.5"
http://techpubs.sgi.com/library/manuals/4000/007-4658-001/pdf/007-4658-001.pdf
Maciej
More information about the Libc-alpha
mailing list