Don't move weak alias dyn_relocs to weakdef
authorAlan Modra <amodra@gmail.com>
Wed, 22 Nov 2017 10:37:03 +0000 (21:07 +1030)
committerAlan Modra <amodra@gmail.com>
Thu, 23 Nov 2017 12:12:33 +0000 (22:42 +1030)
commit287c7eaf0d90cc1bbb5a5463c665b163c6ee04e7
tree3ba8bdf4004c201e2d8265ebd552e5dbc8ee0967
parentab2477e15cbe067ff119f1bb5dea05de3cadbdd5
Don't move weak alias dyn_relocs to weakdef

I did this for powerpc64 a while ago.  Not moving weak symbol
dyn_relocs to the strong alias makes for a much simpler test for
dynamic relocs in relocate_section.

This patch implements the change for powerpc and hppa.  Other targets
could benefit from similar changes.

* elf32-hppa.c (pc_dynrelocs): Define.
(elf32_hppa_copy_indirect_symbol): Don't copy dyn_relocs to weakdefs.
(alias_readonly_dynrelocs): New function.
(elf32_hppa_adjust_dynamic_symbol): Don't clear non_got_ref to
indicate dyn_relocs should be discarded, discard them here.
Use alias_readonly_dynrelocs.
(allocate_dynrelocs): Don't test or clear non_got_ref.
(elf32_hppa_relocate_section): Simplify test for dynamic relocs.
* elf32-ppc.c (ppc_elf_copy_indirect_symbol): Don't copy dyn_relocs
to weakdefs.
(alias_readonly_dynrelocs, pc_dynrelocs): New functions.
(ppc_elf_adjust_dynamic_symbol): Don't clear non_got_ref to
indicate dyn_relocs should be discarded, discard them here.
Use alias_readonly_dynrelocs.
(allocate_dynrelocs): Don't test or clear non_got_ref.
(ppc_elf_relocate_section): Simplify test for dynamic relocs.
bfd/ChangeLog
bfd/elf32-hppa.c
bfd/elf32-ppc.c