This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [RFC] [gold] Simplify relocation strategy logic
- From: Cary Coutant <ccoutant at google dot com>
- To: Cary Coutant <ccoutant at google dot com>, Binutils <binutils at sourceware dot org>, Ian Lance Taylor <iant at google dot com>, Paul Pluzhnikov <ppluzhnikov at google dot com>, Doug Kwan <dougkwan at google dot com>, David Miller <davem at davemloft dot net>, Andreas Schwab <schwab at redhat dot com>, richard dot sandiford at linaro dot org
- Date: Mon, 14 Mar 2011 08:58:33 -0700
- Subject: Re: [RFC] [gold] Simplify relocation strategy logic
- References: <AANLkTikM3rO-S+zp18957Nd_krKZdDaLAC_9=Y4uPOzP@mail.gmail.com> <g4ipvm3rn8.fsf@linaro.org>
> I don't believe this is correct. ?ABSOLUTE_REF is defined as:
>
> ? ?// A reference to the symbol's absolute address. ?This includes
> ? ?// references that cause an absolute address to be stored in the GOT.
> ? ?ABSOLUTE_REF = 1,
>
> and the final symbol reference (by the GOT entry) is absolute
> in all these cases. ?("Absolute in GOT" was supposed to mean
> "an absolute reference _in_ the global offset table", not "to".)
> Whether the reference to the GOT entry itself is absolute, relative
> to the GP, or relative to the PC, isn't modelled by these flags.
>
> Does the patch rely on this, or was it just something you noticed
> by inspection?
My understanding of the ABI is that R_X86_64_GOTPCREL is a pc-relative
relocation to the GOT entry, and R_X86_64_GOTPLT64 is an absolute
reference to a GOT entry. In both cases, I believe the GOT entry
itself is expected to contain an absolute address. I rely on these
flags modeling the reference to the GOT entry, not the GOT entry
itself, and I think they're correct as they stand (although I'll
definitely take a closer look before committing to this). I'll fix the
comments, though.
-cary