Correct elf64-ppc.c handling of protected symbols
authorAlan Modra <amodra@gmail.com>
Tue, 5 Nov 2013 23:50:52 +0000 (10:20 +1030)
committerAlan Modra <amodra@gmail.com>
Mon, 11 Nov 2013 04:01:58 +0000 (14:31 +1030)
commitafe397ea85a3d09d936c93328a1f6bf640577cf3
tree6d606d47fa3bb6fccaf79d6bb082e45ccd602d13
parent32798b4b81ae308b1a2df5d439a1e87c4e23d578
Correct elf64-ppc.c handling of protected symbols

Some places in elf64-ppc.c carelessly used SYMBOL_CALLS_LOCAL when
the proper test is SYMBOL_REFERENCES_LOCAL for cases where we take the
address of a protected symbol.  This works OK for function descriptors
but not for ELFv2.  Setting symbols to their global entry stub a
little earlier is to ensure _bfd_elf_hash_symbol allows such symbols
in .gnu.hash.

* elf64-ppc.c (ppc64_elf_edit_toc): Use SYMBOL_REFERENCES_LOCAL
here, not SYMBOL_CALLS_LOCAL.
(ppc64_elf_relocate_section): Likewise.
(size_global_entry_stubs): Set undefined symbols on their global
entry stubs here..
(build_global_entry_stubs): ..rather than here.
(ppc64_elf_build_stubs): Don't reset glink->size before calling
build_global_entry_stubs.
bfd/ChangeLog
bfd/elf64-ppc.c