From b293661219c36e72acb80502a86b51160bb88cfd Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 3 May 2021 10:03:06 +0930 Subject: PPC: ensure_undef_dynamic on weak undef only in plt It's slightly weird to have a call to a weak function not protected by a test of that function being non-NULL, but the non-NULL test might be covered by a test of another function. For example: if (func1) { func1 (); func2 (); } where func2 is known to exist if func1 exists. * elf32-ppc.c (allocate_dynrelocs): Call ensure_undef_dynamic for weak undefined symols that only appear on PLT relocs. * elf64-ppc.c (allocate_dynrelocs): Likewise. --- bfd/elf64-ppc.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'bfd/elf64-ppc.c') diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c index ed72de2..bc960bf 100644 --- a/bfd/elf64-ppc.c +++ b/bfd/elf64-ppc.c @@ -9855,6 +9855,9 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) for (pent = h->plt.plist; pent != NULL; pent = pent->next) if (pent->plt.refcount > 0) { + if (!ensure_undef_dynamic (info, h)) + return false; + if (use_local_plt (info, h)) { if (h->type == STT_GNU_IFUNC) -- cgit v1.1