What is R_X86_64_GOTPLT64 used for?

Michael Matz matz@suse.de
Mon Nov 17 14:05:00 GMT 2014


Hi,

On Thu, 13 Nov 2014, H.J. Lu wrote:

> @GOTPLT will create a PLT entry, but it doesn't mean PLT entry will be 
> used.

Correct.  The compiler was supposed to somehow make a good decision (e.g. 
if there were calls and address-takings in the same unit).

> Only @PLTOFF will use PLT entry.  Linker should be smart enough to use 
> only one GOT slot, regardless if @GOTPLT or @GOT is used to take 
> function address and call via PLT.

For @GOT the respective GOT slot needs to resolve to the final address (to 
provide stable function pointers).  For @GOTPLT it could at first resolve 
to the PLT slot (which would be only a relative reloc, not a symbol based 
one), like Richard said.  So there still would be a difference.  Apart 
from that I agree that the linker should ideally only use one GOT slot, 
which would remove that particular advantage of @GOTPLT (note that it 
doesn't do so currently contrary to what you said downthread, I'll respond 
separately).

> I'd like to propose
> 
> 1. Update psABI to remove R_X86_64_GOTPLT64.

I don't have much against this, but would like others to say something.


Ciao,
Michael.



More information about the Binutils mailing list