gold vs. BFD handling of relocations
Ian Lance Taylor
iant@google.com
Thu Apr 17 07:34:00 GMT 2008
David Miller <davem@davemloft.net> writes:
> One area which I've noticed gold behaves significantly differently
> from the BFD linker is the handling of new relocations emitted that
> essentially preempt a given input relocation.
>
> For example, if we emit a dynamic relocation in response to an input
> relocation to the same exact location (ie. not a situation like a PLT
> reloc where the emitted dynamic reloc is to a different location than
> the input reloc on the call instruction), BFD skips the input reloc in
> the final relocation processing pass completely whereas gold still
> processes the input relocation.
>
> I don't know which is right or whether it matters at all. What's
> the story here?
The right thing to do is target dependent. For most REL targets, even
when an input relocation is turned into a dynamic relocation, if the
input relocation is against a section symbol, some processing is
necessary.
For i386, see should_apply_static_reloc.
For x86_64, it doesn't much matter what the linker does, since the
dynamic linker mostly ignores the contents of the input sections when
applying dynamic relocs. I suppose it might be a little bit more
efficient if we skipped the reloc processing.
Ian
More information about the Binutils
mailing list