aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2021-03-02 21:25:20 +1030
committerAlan Modra <amodra@gmail.com>2021-03-02 21:49:56 +1030
commitb80e421f9136117389be9d96210b35b3d562d725 (patch)
tree218091e1eab9d0be37a1b4bf1d7488c037a9412e /ld
parentf5b9c288a3057f0f04e74f00fdb0e79d171d54a8 (diff)
downloadgdb-b80e421f9136117389be9d96210b35b3d562d725.zip
gdb-b80e421f9136117389be9d96210b35b3d562d725.tar.gz
gdb-b80e421f9136117389be9d96210b35b3d562d725.tar.bz2
PR27451, -z start_stop_gc for powerpc64
PowerPC64 has its own gc_mark_dynamic_ref. bfd/ PR 27451 * elf64-ppc.c (ppc64_elf_gc_mark_dynamic_ref): Ignore synthesized linker defined start/stop symbols when start_stop_gc. ld/ * testsuite/ld-powerpc/startstop.d, * testsuite/ld-powerpc/startstop.r, * testsuite/ld-powerpc/startstop.s: New test. * testsuite/ld-powerpc/powerpc.exp: Run it.
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog7
-rw-r--r--ld/testsuite/ld-powerpc/powerpc.exp3
-rw-r--r--ld/testsuite/ld-powerpc/startstop.d10
-rw-r--r--ld/testsuite/ld-powerpc/startstop.r2
-rw-r--r--ld/testsuite/ld-powerpc/startstop.s16
5 files changed, 38 insertions, 0 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 2bb97bd..d12e537 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,5 +1,12 @@
2021-03-02 Alan Modra <amodra@gmail.com>
+ * testsuite/ld-powerpc/startstop.d,
+ * testsuite/ld-powerpc/startstop.r,
+ * testsuite/ld-powerpc/startstop.s: New test.
+ * testsuite/ld-powerpc/powerpc.exp: Run it.
+
+2021-03-02 Alan Modra <amodra@gmail.com>
+
* testsuite/ld-powerpc/weak1.d,
* testsuite/ld-powerpc/weak1.r,
* testsuite/ld-powerpc/weak1.s,
diff --git a/ld/testsuite/ld-powerpc/powerpc.exp b/ld/testsuite/ld-powerpc/powerpc.exp
index 8aa0ecc..2ac02b1 100644
--- a/ld/testsuite/ld-powerpc/powerpc.exp
+++ b/ld/testsuite/ld-powerpc/powerpc.exp
@@ -350,6 +350,9 @@ set ppc64elftests {
{"weak1.so" "-shared -melf64ppc --hash-style=both" ""
"-a64 -mpower10" {weak1.s}
{{objdump -d weak1so.d} {readelf {-srW} weak1so.r}} "weak1.so"}
+ {"startstop" "-shared -melf64ppc --hash-style=sysv --gc-sections -z start-stop-gc" ""
+ "-a64 -mpower10" {startstop.s}
+ {{objdump -d startstop.d} {readelf {-rW} startstop.r}} "startstop.so"}
}
set ppceabitests {
diff --git a/ld/testsuite/ld-powerpc/startstop.d b/ld/testsuite/ld-powerpc/startstop.d
new file mode 100644
index 0000000..2bf4c73
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/startstop.d
@@ -0,0 +1,10 @@
+
+.*: file format .*
+
+Disassembly of section \.text:
+
+0+140 <_start>:
+ 140: (04 10 00 01|01 00 10 04) pld r3,66000
+ 144: (e4 60 01 d0|d0 01 60 e4)
+ 148: (04 10 00 01|01 00 10 04) pld r4,65984
+ 14c: (e4 80 01 c0|c0 01 80 e4)
diff --git a/ld/testsuite/ld-powerpc/startstop.r b/ld/testsuite/ld-powerpc/startstop.r
new file mode 100644
index 0000000..9a583fb
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/startstop.r
@@ -0,0 +1,2 @@
+
+There are no relocations in this file.
diff --git a/ld/testsuite/ld-powerpc/startstop.s b/ld/testsuite/ld-powerpc/startstop.s
new file mode 100644
index 0000000..8e88a72
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/startstop.s
@@ -0,0 +1,16 @@
+ .weak __start_xx
+ .weak __stop_xx
+
+ .global _start
+_start:
+ pld 3,__start_xx@got@pcrel
+ pld 4,__stop_xx@got@pcrel
+
+ .section xx,"a",unique,0
+ .byte 0
+
+ .section xx,"a",unique,1
+ .byte 1
+
+ .section xx,"a",unique,2
+ .byte 2