diff options
-rw-r--r-- | bfd/ChangeLog | 7 | ||||
-rw-r--r-- | bfd/elf32-ppc.c | 8 |
2 files changed, 9 insertions, 6 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index f92b273..9cdd4fe 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2019-03-18 Alan Modra <amodra@gmail.com> + + PR 24355 + * elf32-ppc.c (ppc_finish_symbols): Don't call write_glink_stub + for local iplt syms with ent->plt.offset == -1. Remove ineffective + attempt at writing glink stubs only once. + 2019-03-16 Alan Modra <amodra@gmail.com> PR 24337 diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c index 593ef47..6991e8d 100644 --- a/bfd/elf32-ppc.c +++ b/bfd/elf32-ppc.c @@ -9704,6 +9704,7 @@ ppc_finish_symbols (struct bfd_link_info *info) bfd_byte *loc; bfd_vma val; Elf_Internal_Rela rela; + unsigned char *p; if (!get_sym_h (NULL, &sym, &sym_sec, NULL, &local_syms, lplt - local_plt, ibfd)) @@ -9748,14 +9749,9 @@ ppc_finish_symbols (struct bfd_link_info *info) loc = relplt->contents + (relplt->reloc_count++ * sizeof (Elf32_External_Rela)); bfd_elf32_swap_reloca_out (info->output_bfd, &rela, loc); - } - if ((ent->glink_offset & 1) == 0) - { - unsigned char *p = ((unsigned char *) htab->glink->contents - + ent->glink_offset); + p = (unsigned char *) htab->glink->contents + ent->glink_offset; write_glink_stub (NULL, ent, htab->elf.iplt, p, info); - ent->glink_offset |= 1; } } |