This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Proposal for STT_GNU_IFUNC and R_*_IRELATIVE
On Tue, May 26, 2009 at 09:30:42AM -0700, Ian Lance Taylor wrote:
> "H.J. Lu" <hjl.tools@gmail.com> writes:
>
> > I don't see the fundamental difference between the new relocation and
> > the new DT_* tags. The end result is the same. If your OS doesn't support
> > them, the application will crash if they are used. I will propose a new
> > x86-64 psABI extension, which will be optional. If an OS supports
> > STT_GNU_IFUNC, it must support R_X86_64_IRELATIVE.
>
> One difference is that a new relocation has to be defined for every
> processor ABI separately. New DT_* tags can be defined once.
The new relocation types aren't useful just for hidden/local
STT_GNU_IFUNC, but also for prelink, which in .gnu.conflict section
needs to preresolve a normal relocation against STT_GNU_IFUNC symbol
into some kind of relocation which ensures that a function is called
and result returned.