Relocations reference local (static or hidden) symbols on ia64

Florian Weimer fweimer@redhat.com
Thu Sep 23 20:01:11 GMT 2021


I am trying to get rid of relocations with symbols in ld.so in glibc.
It will simplify self-relocation of the dynamic loader *a lot*.  (The
amount of cruft that goes away with this change is utterly ridiculous.)

Consider my surprise when I learnt that ia64 ld produces symbolic
relocations for static functions in some cases, for example this:

Relocation section '.rela.dyn' at offset 0xeb8 contains 53 entries:
    Offset             Info             Type               Symbol's Value  Symbol's Name + Addend
[…]
0000000000061608  0000001800000047 R_IA64_FPTR64LSB       000000000001dc00 openaux + 0
[…]

Against:

Symbol table '.dynsym' contains 65 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
[…]
    24: 000000000001dc00   176 FUNC    LOCAL  DEFAULT   10 openaux
[…]

Is this just a fancy way of using the value 0x1dc00 in the relocation?
I have attached an object like this.

Are there any other targets I should watch out for if I want to avoid
fancy relocations?

(ld.so in glibc does not use thread local storage and should otherwise
be very harmless.  On most targets, there will be exactly one relocation
type to process.  Even hppa has just 3.)

Thanks,
Florian
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ld-linux-ia64.so.2.gz
Type: application/gzip
Size: 132256 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20210923/d6de1311/attachment-0001.gz>


More information about the Binutils mailing list