Thursday, 2 December 2010

0x000000006ffffef5 (GNU_HASH) 0x4005f0

This is the output from a 'readelf -a /bin/ls'. It is the cause
of the dynamic linker problem (glibc 2.5 or later). By allowing
/bin/ld write this into the ELF executable, the /lib/ld-linux.so.2
does not like it on the older systems. Additionally, we are missing
a ".hash" ELF section, but the above is a trigger.

I have a tool which removes the .gnu.hash section and adds a .hash
section. Whilst the above .dynamic entry exists, it doesnt know what
I did. Additionally, gdb gets confused too.

Next step is to polish off the code so it can create a fully
conforming/working ELF executable, and its ready to roll.

(In case you didnt follow any of this, how to create an executable
on Linux which runs on any release of Linux/glibc. Later Linux
distros dont create backward compliant executables leading to an
arms race of platform and version specific releases which is a waste
of everyones' effort).


Post created by CRiSP v10.0.2c-b5917


No comments:

Post a Comment