This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Difference in documentation vs implementation of R_X86_64_GOTPC32/64


On 3/19/19, Siva Chandra via binutils <binutils@sourceware.org> wrote:
> Hello,
>
> The documentation I have at hand for the x86_64 ABI says the
> R_X86_64_GOTPC32/64 should be evaluated as:
>
> GOT + A - P
>
> where GOT is the address of the global offset table, A the addend, and
> P the program counter. But, I notice that, the implementations
> actually interpret GOT as the address of .got.plt.
>
> Also, it seems to me that a similar interpretation is also applied to
> R_X86_64_GOTOFF64, R_386_GOTPC and R_386_GOTOFF.
>
> Is there any reason why GOT is interpreted to be the address of
> .got.plt? Or, is it a defect in the documentation?

In 5.2 Dynamic Linking, there are

The symbol _GLOBAL_OFFSET_TABLE_ may reside in the middle of the .got section,
allowing both negative and non-negative offsets into the array of addresses.

-- 
H.J.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]