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: gold vs. BFD handling of relocations


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


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