PowerPC ifunc with local symbols
authorAlan Modra <amodra@gmail.com>
Mon, 7 Dec 2015 03:22:01 +0000 (13:52 +1030)
committerAlan Modra <amodra@gmail.com>
Mon, 7 Dec 2015 03:22:01 +0000 (13:52 +1030)
commitcbf959729423640e28a0d571338d3c8045cbb1e1
treeeffa35927d0b86145a691ea37273431d55460df8
parentc20f6f63eda61348326a861a155716b8d9073307
PowerPC ifunc with local symbols

This fixes some cases where the linker would incorrectly error on plt
relocs to local ifunc symbols.  I've also tidied plt and ifunc
handling for ppc64, where check_relocs was allowing for the
possibility of plt calls via addr14/addr24 relocs but relocate_section
was not.

* elf32-ppc.c (ppc_elf_check_relocs): Don't error on local ifunc
plt call.  Wrap long lines.
(ppc_elf_relocate_section): Wrap long lines.
* elf64-ppc.c (ppc64_elf_check_relocs): Don't error on local ifunc
plt calls.  Move __tls_get_addr checks later.  Don't create plt
for addr14/addr24 relocs.
(ppc64_elf_gc_sweep_hook): Adjust to suit check_relocs changes.
(ppc64_elf_relocate_section): Correct local ifunc handling for
PLT64, PLT32 and PLT16 relocs.
bfd/ChangeLog
bfd/elf32-ppc.c
bfd/elf64-ppc.c