diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 981e0cd4e9..9f7a8cfc6a 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2019-08-24 Alan Modra + + * elf64-ppc.c (ppc64_elf_edit_toc): Exclude undefined weak + symbols from GOT optimisation. + 2019-08-23 Stafford Horne * elf32-or1k.c (or1k_elf_finish_dynamic_symbol): Use correct value for diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c index 60918d91a1..4eba829450 100644 --- a/bfd/elf64-ppc.c +++ b/bfd/elf64-ppc.c @@ -9112,6 +9112,11 @@ ppc64_elf_edit_toc (struct bfd_link_info *info) r_symndx, ibfd)) goto got_error_ret; + if (sym_sec == NULL + || sym_sec->output_section == NULL + || discarded_section (sym_sec)) + continue; + if (!SYMBOL_REFERENCES_LOCAL (info, h)) continue;