aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-powerpc/tlsopt2.s
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2011-03-23 15:25:06 +0000
committerAlan Modra <amodra@gmail.com>2011-03-23 15:25:06 +0000
commit663a1470e1a7af58a3d0691f480bc5621bd0c54f (patch)
treeeb7a84aef9f6d307fdb4f8472b0e1759b04f6625 /ld/testsuite/ld-powerpc/tlsopt2.s
parent6f8a4444ff2b2239ccc23fb175f89d8c5fc4435f (diff)
downloadgdb-663a1470e1a7af58a3d0691f480bc5621bd0c54f.zip
gdb-663a1470e1a7af58a3d0691f480bc5621bd0c54f.tar.gz
gdb-663a1470e1a7af58a3d0691f480bc5621bd0c54f.tar.bz2
bfd/
* elf32-ppc.c (ppc_elf_tls_optimize): Catch more cases where old-style __tls_get_addr calls without marker relocs don't match their arg setup insn one for one. If such mismatches are found report the reloc and don't do any tls optimization. * elf64-ppc.c (ppc64_elf_tls_optimize): Likewise. ld/testsuite/ * ld-powerpc/tlsmark.s: Delete non-optimizable section. * ld-powerpc/tlsmark32.s: Likewise. * ld-powerpc/tlsmark.d: Adjust to suit. * ld-powerpc/tlsmark32.d: Likewise. * ld-powerpc/tlsopt1.d, * ld-powerpc/tlsopt1.s: New. * ld-powerpc/tlsopt2.d, * ld-powerpc/tlsopt2.s: New. * ld-powerpc/tlsopt3.d, * ld-powerpc/tlsopt3.s: New. * ld-powerpc/tlsopt4.d, * ld-powerpc/tlsopt4.s: New. * ld-powerpc/tlsopt1_32.d, * ld-powerpc/tlsopt1_32.s: New. * ld-powerpc/tlsopt2_32.d, * ld-powerpc/tlsopt2_32.s: New. * ld-powerpc/tlsopt3_32.d, * ld-powerpc/tlsopt3_32.s: New. * ld-powerpc/tlsopt4_32.d, * ld-powerpc/tlsopt4_32.s: New. * ld-powerpc/powerpc.exp: Run new tests.
Diffstat (limited to 'ld/testsuite/ld-powerpc/tlsopt2.s')
-rw-r--r--ld/testsuite/ld-powerpc/tlsopt2.s11
1 files changed, 11 insertions, 0 deletions
diff --git a/ld/testsuite/ld-powerpc/tlsopt2.s b/ld/testsuite/ld-powerpc/tlsopt2.s
new file mode 100644
index 0000000..adfbfa8
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/tlsopt2.s
@@ -0,0 +1,11 @@
+ .section ".no_opt2", "ax", %progbits
+# this section should not be optimised since we have old-style
+# __tls_get_addr without marker relocs, and two arg setup insns
+# feed into one __tls_get_addr call.
+ addi 3,2,gd@got@tlsgd
+ cmpdi 4,0
+ beq 0f
+ addi 3,2,gd@got@tlsgd
+0:
+ bl __tls_get_addr
+ nop