* 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-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.
run_dump_test "attr-merge-incompatible"
run_dump_test "unresolved-1"
run_dump_test "unresolved-1-dyn"
+run_dump_test "gc-hidden-1"
--- /dev/null
+#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}
--- /dev/null
+ .text
+ .globl gcdfn
+ .type gcdfn, %function
+gcdfn:
+ str lr, [sp, #-4]!
+ bl hidfn(PLT)
+ ldmfd sp!, {pc}
+ .size gcdfn, . - gcdfn
--- /dev/null
+NS { local: *; };
--- /dev/null
+ .text
+ .globl hidfn
+ .hidden hidfn
+ .type hidfn, %function
+hidfn:
+ ldmfd sp!, {pc}
+ .size hidfn, . - hidfn
--- /dev/null
+ .text
+ .globl _start
+ .type _start, %function
+_start:
+ str lr, [sp, #-4]!
+ bl hidfn(PLT)
+ ldmfd sp!, {pc}
+ .size _start, . - _start