Using linker script assignments in shared object

Max Dmitrichenko dmitrmax@gmail.com
Wed May 28 14:18:00 GMT 2014


Alan, thanks for the quick answer. I've googled around an hour to find
an answer but never thought that issue was so deep.

So, is there any other way to pass some specified value to the code of
shared object with the linker script?

2014-05-28 18:11 GMT+04:00 Alan Modra <amodra@gmail.com>:
> 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