Allow copy relocations with pie links

Cary Coutant ccoutant@google.com
Wed May 7 23:46:00 GMT 2014


> * symtab.h (may_need_copy_reloc): Extra default parameter to
> indicate if this is a PC relative relocation.

In the PC-rel case, you need to check for output_is_executable. With
your patch, we will now allow copy relocs for pc-relative relocations
even in shared libraries.

I'd prefer to move the check for output format to the points of call;
there are two calls in each target, one for pc-relative relocs, and
one for absolute relocs. For the absolute reloc, use:

  if (!parameters->options().output_is_position_independent()
      && gsym->may_need_copy_reloc())

For the pc-relative reloc, use:

  if (parameters->options().output_is_executable()
      && gsym->may_need_copy_reloc())

> * x86_64.cc (Target_x86_64<size>::Scan::global): Call
> may_need_copy_reloc with parameter set to true.

Please update the other targets, too.

Thanks!

-cary



More information about the Binutils mailing list