COMMITTED: Add support for STT_IFUNC

Daniel Jacobowitz drow@false.org
Wed Dec 3 16:21:00 GMT 2008
On Wed, Dec 03, 2008 at 02:47:04PM +0000, Nick Clifton wrote:
>   Run-time relocations against this symbol type are placed into a new
>   section called .rel[a].ifunc.dyn which immediately follows the
>   .rel[a].dyn section.  The idea here is to allow the dynamic linker
>   to execute all of the normal dynamic relocations first, before it
>   tries to execute any of the STT_IFUNC using dynamic relocs.  This is
>   just in case the invoked STT_IFUNC function has any dependencies
>   upon other symbols.

Interesting.  I had to read it a couple of times to work out how this
worked, but I think I understand.

>   Plus objdump and readelf will append "()" to relocs which are made
>   against STT_IFUNC symbols, as a hint that the relocation invokes a
>   function:
> 
>     RELOCATION RECORDS FOR [.text]:
>     OFFSET   TYPE              VALUE 
>     00000009 R_386_32          .rodata
>     0000009f R_386_PC32        ifunction() 

This is ambiguous w.r.t. C++ demangling.  Maybe *ifunction?  Still,
technically, ambiguous but less likely.

-- 
Daniel Jacobowitz
CodeSourcery



More information about the Binutils mailing list