PATCH: Make STT_GNU_IFUNC symbol dynamic
H.J. Lu
hjl.tools@gmail.com
Sat May 23 23:54:00 GMT 2009
More information about the Binutils mailing list
Sat May 23 23:54:00 GMT 2009
- Previous message (by thread): PATCH: Make STT_GNU_IFUNC symbol dynamic
- Next message (by thread): PATCH: Make STT_GNU_IFUNC symbol dynamic
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Sat, May 23, 2009 at 2:44 PM, Ulrich Drepper <drepper@redhat.com> wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > H.J. Lu wrote: >> Which tool will generate the new relocation? Will it be internal to linker. > > The code the compiler generates contains ordinary calls. The assembler > will have to refrain from optimizing calls to static IFUNC functions. Assembler will always generate PLT relocation for @PLT. I don't think we need to change the assembler. > But the real logic is entirely internal to the static linker. For every > local IFUNC symbol create a PLT slot. This slot has no global symbol > attached and the relocation should be R_*_IRELATIVE (my proposed name). > This relocation works like a R_*_RELATIVE relocation but it uses the > return value as for SHT_GNU_IFUNC symbols. The reason we need such a > relocation is that we have no symbol at runtime. We cannot use a normal > PLT slot relocation since this would perform a global name lookup, which > is wrong. The R_*_IRELATIVE relocation is also more efficient. > > I took a look. It isn't hard to implement. Should it be R_*_IJUMP_SLOT since it will be processed closer to R_*_JUMP_SLOT than R_*_RELATIVE? My linker only patch for x86-64 is ready for test. I just need to verify it works with glibc on x86-64. -- H.J.
- Previous message (by thread): PATCH: Make STT_GNU_IFUNC symbol dynamic
- Next message (by thread): PATCH: Make STT_GNU_IFUNC symbol dynamic
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Binutils mailing list