Using linker script assignments in shared object
Alan Modra
amodra@gmail.com
Wed May 28 14:12:00 GMT 2014
On Wed, May 28, 2014 at 05:29:26PM +0400, Max Dmitrichenko wrote:
> But when I paste this code into shared object then I got some address
> in the middle of memory address space. Though readelf outputs
> following for this symbol:
>
> 552: 0000000000000005 0 NOTYPE LOCAL HIDDEN ABS test_ls_value
This isn't a problem with ld, but with the dynamic loader ld.so.
ld.so shouldn't relocate absolute symbols but does, because some
ancient linkers made symbols like _GLOBAL_OFFSET_TABLE_ absolute, and
GNU ld followed this bad practise. It's not impossible to fix in a
way that keeps backward compatibility (eg. bump EI_ABIVERSION to
indicate to ld.so that absolute symbols really are absolute), but no
one has cared enough to do the glibc and ld work required.
--
Alan Modra
Australia Development Lab, IBM
More information about the Binutils
mailing list