Christian Robottom Reis kiko@linaro.org writes:
On Fri, Nov 26, 2010 at 05:57:57PM +0000, Richard Sandiford wrote:
More ARM testing of binutils support for STT_GNU_IFUNC.
Implemented the GLIBC support for STT_GNU_IFUNC. Simple ARM testcases seem to run correctly.
Coincidentally I was reading about this exact feature at
http://www.airs.com/blog/page/4
In the interest of self-education, could you tell me a little bit about what GLIBC support for ifunc entails -- is it basically infrastructure to allow libc functions to be defined as ifuncs, now that the assembler supports it?
Fortunately, that infrastructure was part of the initial x86/x86_64 effort, and it was a once-only thing. You can now use the appropriate GCC or GAS syntax to define IFUNCs for any target.
However, IFUNC support requires each target to define a new relocation (R_*_IRELATIVE). Each target's dynamic linker code needs to handle that new relocation and also the STT_GNU_IFUNC symbol type.
It's basically boiler-plate, to be honest. The interesting target-dependent work is in BFD.
Richard