aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@axis.com>2012-04-24 16:14:31 +0000
committerHans-Peter Nilsson <hp@axis.com>2012-04-24 16:14:31 +0000
commit4646d23b552899b6993d5d71f31e8d8206b3d3ca (patch)
treeb11b3abbc19ecac663c550c02911444e97543f62 /ld
parent2758625139030bb7c1cdffcc99ce46a27d6ca0ce (diff)
downloadgdb-4646d23b552899b6993d5d71f31e8d8206b3d3ca.zip
gdb-4646d23b552899b6993d5d71f31e8d8206b3d3ca.tar.gz
gdb-4646d23b552899b6993d5d71f31e8d8206b3d3ca.tar.bz2
PR ld/13990
* ld-arm/arm-elf.exp: Run gc-hidden-1. * ld-arm/gc-hidden-1.d: New test-file. * ld-arm/gcdfn.s, ld-arm/hideall.ld, ld-arm/hidfn.s, ld-arm/main.s: New files.
Diffstat (limited to 'ld')
-rw-r--r--ld/testsuite/ChangeLog8
-rw-r--r--ld/testsuite/ld-arm/arm-elf.exp1
-rw-r--r--ld/testsuite/ld-arm/gc-hidden-1.d25
-rw-r--r--ld/testsuite/ld-arm/gcdfn.s8
-rw-r--r--ld/testsuite/ld-arm/hideall.ld1
-rw-r--r--ld/testsuite/ld-arm/hidfn.s7
-rw-r--r--ld/testsuite/ld-arm/main.s8
7 files changed, 58 insertions, 0 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index e91ed61..c18ba8e 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2012-04-24 Hans-Peter Nilsson <hp@axis.com>
+
+ PR ld/13990
+ * ld-arm/arm-elf.exp: Run gc-hidden-1.
+ * ld-arm/gc-hidden-1.d: New test-file.
+ * ld-arm/gcdfn.s, ld-arm/hideall.ld, ld-arm/hidfn.s,
+ ld-arm/main.s: New files.
+
2012-04-23 Andreas Schwab <schwab@linux-m68k.org>
* ld-pie/pie.exp: Remove extra braces.
diff --git a/ld/testsuite/ld-arm/arm-elf.exp b/ld/testsuite/ld-arm/arm-elf.exp
index 05dc7bb..b6eb3d3 100644
--- a/ld/testsuite/ld-arm/arm-elf.exp
+++ b/ld/testsuite/ld-arm/arm-elf.exp
@@ -759,3 +759,4 @@ run_dump_test "attr-merge-vfp-6r"
run_dump_test "attr-merge-incompatible"
run_dump_test "unresolved-1"
run_dump_test "unresolved-1-dyn"
+run_dump_test "gc-hidden-1"
diff --git a/ld/testsuite/ld-arm/gc-hidden-1.d b/ld/testsuite/ld-arm/gc-hidden-1.d
new file mode 100644
index 0000000..80c7e9e
--- /dev/null
+++ b/ld/testsuite/ld-arm/gc-hidden-1.d
@@ -0,0 +1,25 @@
+#target: arm*-*-*eabi
+#source: main.s
+#source: gcdfn.s
+#source: hidfn.s
+#ld: --gc-sections --shared --version-script hideall.ld
+#objdump: -dRT
+
+# See PR ld/13990: a forced-local PLT reference to a
+# forced-local symbol is GC'ed, trigging a BFD_ASSERT.
+
+.*: file format elf32-.*
+
+DYNAMIC SYMBOL TABLE:
+0+124 l d .text 0+ .text
+0+ g DO \*ABS\* 0+ NS NS
+
+Disassembly of section .text:
+
+0+124 <_start>:
+ 124: e52de004 push {lr} ; \(str lr, \[sp, #-4\]!\)
+ 128: eb000000 bl 130 <hidfn>
+ 12c: e8bd8000 pop {pc}
+
+0+130 <hidfn>:
+ 130: e8bd8000 pop {pc}
diff --git a/ld/testsuite/ld-arm/gcdfn.s b/ld/testsuite/ld-arm/gcdfn.s
new file mode 100644
index 0000000..f2afae7
--- /dev/null
+++ b/ld/testsuite/ld-arm/gcdfn.s
@@ -0,0 +1,8 @@
+ .text
+ .globl gcdfn
+ .type gcdfn, %function
+gcdfn:
+ str lr, [sp, #-4]!
+ bl hidfn(PLT)
+ ldmfd sp!, {pc}
+ .size gcdfn, . - gcdfn
diff --git a/ld/testsuite/ld-arm/hideall.ld b/ld/testsuite/ld-arm/hideall.ld
new file mode 100644
index 0000000..077d6b5
--- /dev/null
+++ b/ld/testsuite/ld-arm/hideall.ld
@@ -0,0 +1 @@
+NS { local: *; };
diff --git a/ld/testsuite/ld-arm/hidfn.s b/ld/testsuite/ld-arm/hidfn.s
new file mode 100644
index 0000000..a66b558
--- /dev/null
+++ b/ld/testsuite/ld-arm/hidfn.s
@@ -0,0 +1,7 @@
+ .text
+ .globl hidfn
+ .hidden hidfn
+ .type hidfn, %function
+hidfn:
+ ldmfd sp!, {pc}
+ .size hidfn, . - hidfn
diff --git a/ld/testsuite/ld-arm/main.s b/ld/testsuite/ld-arm/main.s
new file mode 100644
index 0000000..046d19d
--- /dev/null
+++ b/ld/testsuite/ld-arm/main.s
@@ -0,0 +1,8 @@
+ .text
+ .globl _start
+ .type _start, %function
+_start:
+ str lr, [sp, #-4]!
+ bl hidfn(PLT)
+ ldmfd sp!, {pc}
+ .size _start, . - _start