GOLD handling of weak symbols (including x86 vs. ARM)

Ian Lance Taylor iant@google.com
Fri Nov 5 17:33:00 GMT 2010


Richard Sandiford <richard.sandiford@linaro.org> writes:

> Well, the problem is that Thumb doesn't have separate relocs for
> non-@PLT and @PLT function calls.  (ARM itself only has it with a
> legacy relocation, R_ARM_PLT32.)

Yeah, so there we would say that if a reloc always implies a function
call, we should always use the PLT if there is one.  We could do by
passing a flag to use_plt_offset, or we could do that instead of calling
use_plt_offset.  I guess the advantage of passing a flag is that it is
more likely to be done right for a new target.

> On targets like x86_64 that _do_ have this distinction, we've
> already honoured that distinction when deciding whether to create
> a PLT in the first place.  Is there actually any harm in resolving
> a R_X86_64_PC32 to a PLT if a PLT had already been created for
> other reasons?

The R_X86_64_PC32 reloc is generated for instructions which are not
function calls, such as references to global variables when using the
(default) small memory model.

Ian



More information about the Binutils mailing list