fix computation of entry point and main app phdrs when invoking via ldso
authorRich Felker <dalias@aerifal.cx>
Fri, 26 Jul 2013 18:25:51 +0000 (14:25 -0400)
committerRich Felker <dalias@aerifal.cx>
Fri, 26 Jul 2013 18:25:51 +0000 (14:25 -0400)
commit876748ead3de7798623c09af835a4b56dcc28e0f
treed15d30c3b088e55ded494a437923448072df46ca
parent16ac00ac46a14a568ce836db09ffc3f21799690d
fix computation of entry point and main app phdrs when invoking via ldso

entry point was wrong for PIE. e_entry was being treated as an
absolute value, whereas it's actually relative to the load address
(which is zero for non-PIE).

phdr pointer was wrong for non-PIE. e_phoff was being treated as
load-address-relative, whereas it's actually a file offset in the ELF
file. in any case, map_library was already computing it correctly, and
the incorrect code in __dynlink was overwriting it with junk.
src/ldso/dynlink.c