aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2017-10-31 22:13:21 +1030
committerAlan Modra <amodra@gmail.com>2017-11-01 18:46:34 +1030
commit3988aed54acce3c682a877b51b0e09cce1079e81 (patch)
treef06e9392e2810d410cd007b7d8ee52fb75320c99 /ld
parente48f0c8f1b9fdb195394dc7afea02ce55e4ba5e4 (diff)
downloadgdb-3988aed54acce3c682a877b51b0e09cce1079e81.zip
gdb-3988aed54acce3c682a877b51b0e09cce1079e81.tar.gz
gdb-3988aed54acce3c682a877b51b0e09cce1079e81.tar.bz2
PR22374, PowerPC unnecessary PLT entries
We don't need a PLT entry when function pointer initialization in a read/write section is the only reference to a given function symbol. This patch prevents the unnecessary PLT entry, and ensures no dynamic relocs are emitted when UNDEFWEAK_NO_DYNAMIC_RELOC says so. bfd/ PR 22374 * elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Don't create a plt entry when just a dynamic reloc can serve. Ensure no dynamic relocations when UNDEFWEAK_NO_DYNAMIC_RELOC by setting non_got_ref. Expand and move the non_got_ref comment. * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Likewise. ld/ * testsuite/ld-powerpc/ambiguousv2.d: Remove FIXME.
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog4
-rw-r--r--ld/testsuite/ld-powerpc/ambiguousv2.d5
2 files changed, 4 insertions, 5 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 84bebb3..bdc98d6 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,5 +1,9 @@
2017-11-01 Alan Modra <amodra@gmail.com>
+ * testsuite/ld-powerpc/ambiguousv2.d: Remove FIXME.
+
+2017-11-01 Alan Modra <amodra@gmail.com>
+
PR 22374
* testsuite/ld-elf/pr22374a.s,
* testsuite/ld-elf/pr22374b.s,
diff --git a/ld/testsuite/ld-powerpc/ambiguousv2.d b/ld/testsuite/ld-powerpc/ambiguousv2.d
index fec3a2c..7afdfe1 100644
--- a/ld/testsuite/ld-powerpc/ambiguousv2.d
+++ b/ld/testsuite/ld-powerpc/ambiguousv2.d
@@ -8,16 +8,11 @@
# anything to mark it as ELFv1 or ELFv2. We should get a dynamic
# reloc on the function address, not have a global entry stub, and
# my_func should be undefined dynamic with value zero.
-# FIXME someday: No need for a plt entry.
Relocation section .* contains 1 entries:
.*
.* R_PPC64_ADDR64 .* my_func \+ 0
-Relocation section .* contains 1 entries:
-.*
-.* R_PPC64_JMP_SLOT .* my_func \+ 0
-
Symbol table '\.dynsym' contains 5 entries:
.*
0: .*