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