aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2017-07-14 18:37:26 +0930
committerAlan Modra <amodra@gmail.com>2017-07-14 22:51:01 +0930
commit86038de0d810f8639d22573921d2589a99829b36 (patch)
tree6b8e27da2402a1a1378a2593a662d55ba693a3fd
parent211b0bed95b3f6b177a541ec52302b8febd6b49c (diff)
downloadgdb-86038de0d810f8639d22573921d2589a99829b36.zip
gdb-86038de0d810f8639d22573921d2589a99829b36.tar.gz
gdb-86038de0d810f8639d22573921d2589a99829b36.tar.bz2
ppc32 tlsopt tests
These all were odd in that they used r13 as the GOT pointer. That didn't matter for the purpose of testing, but would never occur in practice. Also, the tlsopt5 tests could have their global dynamic sequences optimized to initial exec, so link with -shared. * testsuite/ld-powerpc/powerpc.exp: Add -shared to tlsop5 tests. * testsuite/ld-powerpc/tlsopt5.d: Adjust. * testsuite/ld-powerpc/tlsopt1_32.s: Use r30 as GOT pointer. * testsuite/ld-powerpc/tlsopt2_32.s: Likewise. * testsuite/ld-powerpc/tlsopt3_32.s: Likewise. * testsuite/ld-powerpc/tlsopt4_32.s: Likewise. * testsuite/ld-powerpc/tlsopt5_32.s: Rewrite. * testsuite/ld-powerpc/tlsopt1_32.d: Adjust. * testsuite/ld-powerpc/tlsopt2_32.d: Adjust. * testsuite/ld-powerpc/tlsopt3_32.d: Adjust. * testsuite/ld-powerpc/tlsopt5_32.d: Adjust.
-rw-r--r--ld/ChangeLog14
-rw-r--r--ld/testsuite/ld-powerpc/powerpc.exp4
-rw-r--r--ld/testsuite/ld-powerpc/tlsopt1_32.d2
-rw-r--r--ld/testsuite/ld-powerpc/tlsopt1_32.s2
-rw-r--r--ld/testsuite/ld-powerpc/tlsopt2_32.d4
-rw-r--r--ld/testsuite/ld-powerpc/tlsopt2_32.s4
-rw-r--r--ld/testsuite/ld-powerpc/tlsopt3_32.d4
-rw-r--r--ld/testsuite/ld-powerpc/tlsopt3_32.s4
-rw-r--r--ld/testsuite/ld-powerpc/tlsopt4_32.s10
-rw-r--r--ld/testsuite/ld-powerpc/tlsopt5.d14
-rw-r--r--ld/testsuite/ld-powerpc/tlsopt5_32.d53
-rw-r--r--ld/testsuite/ld-powerpc/tlsopt5_32.s18
12 files changed, 87 insertions, 46 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 425a46f..942cca8 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,17 @@
+2017-07-14 Alan Modra <amodra@gmail.com>
+
+ * testsuite/ld-powerpc/powerpc.exp: Add -shared to tlsop5 tests.
+ * testsuite/ld-powerpc/tlsopt5.d: Adjust.
+ * testsuite/ld-powerpc/tlsopt1_32.s: Use r30 as GOT pointer.
+ * testsuite/ld-powerpc/tlsopt2_32.s: Likewise.
+ * testsuite/ld-powerpc/tlsopt3_32.s: Likewise.
+ * testsuite/ld-powerpc/tlsopt4_32.s: Likewise.
+ * testsuite/ld-powerpc/tlsopt5_32.s: Rewrite.
+ * testsuite/ld-powerpc/tlsopt1_32.d: Adjust.
+ * testsuite/ld-powerpc/tlsopt2_32.d: Adjust.
+ * testsuite/ld-powerpc/tlsopt3_32.d: Adjust.
+ * testsuite/ld-powerpc/tlsopt5_32.d: Adjust.
+
2016-07-14 Maciej W. Rozycki <macro@imgtec.com>
* testsuite/ld-unique/pr21529.ld: New test linker script.
diff --git a/ld/testsuite/ld-powerpc/powerpc.exp b/ld/testsuite/ld-powerpc/powerpc.exp
index f709b1e..9816eff 100644
--- a/ld/testsuite/ld-powerpc/powerpc.exp
+++ b/ld/testsuite/ld-powerpc/powerpc.exp
@@ -140,7 +140,7 @@ set ppcelftests {
"tlsopt4_32"}
{"TLS32 DLL" "-shared -melf32ppc --version-script tlsdll.ver" "" "-a32" {tlsdll_32.s}
{} "tlsdll32.so"}
- {"TLS32 opt 5" "-melf32ppc --gc-sections --secure-plt tmpdir/tlsdll32.so" "" "-a32" {tlsopt5_32.s}
+ {"TLS32 opt 5" "-melf32ppc -shared --gc-sections --secure-plt tmpdir/tlsdll32.so" "" "-a32" {tlsopt5_32.s}
{{objdump -dr tlsopt5_32.d}}
"tlsopt5_32"}
{"Shared library with global symbol" "-shared -melf32ppc" "" "-a32" {sdalib.s}
@@ -210,7 +210,7 @@ set ppc64elftests {
"tlsopt4"}
{"TLS DLL" "-shared -melf64ppc --version-script tlsdll.ver" "" "-a64" {tlsdll.s}
{} "tlsdll.so"}
- {"TLS opt 5" "-melf64ppc --gc-sections --no-plt-localentry tmpdir/tlsdll.so" "" "-a64" {tlsopt5.s}
+ {"TLS opt 5" "-melf64ppc -shared --gc-sections --no-plt-localentry tmpdir/tlsdll.so" "" "-a64" {tlsopt5.s}
{{objdump -dr tlsopt5.d}}
"tlsopt5"}
{"sym@tocbase" "-shared -melf64ppc" "" "-a64" {symtocbase-1.s symtocbase-2.s}
diff --git a/ld/testsuite/ld-powerpc/tlsopt1_32.d b/ld/testsuite/ld-powerpc/tlsopt1_32.d
index ec9c7ca..fd0f7eb 100644
--- a/ld/testsuite/ld-powerpc/tlsopt1_32.d
+++ b/ld/testsuite/ld-powerpc/tlsopt1_32.d
@@ -15,7 +15,7 @@ Disassembly of section \.text:
Disassembly of section \.no_opt1:
0+1800098 <\.no_opt1>:
-.*: (38 6d ff f4|f4 ff 6d 38) addi r3,r13,-12
+.*: (38 7e ff f4|f4 ff 7e 38) addi r3,r30,-12
.*: (2c 04 00 00|00 00 04 2c) cmpwi r4,0
.*: (41 82 00 0c|0c 00 82 41) beq .*
.*: (4b ff ff f1|f1 ff ff 4b) bl 1800094 <__tls_get_addr>
diff --git a/ld/testsuite/ld-powerpc/tlsopt1_32.s b/ld/testsuite/ld-powerpc/tlsopt1_32.s
index aba2bbc..79d6662 100644
--- a/ld/testsuite/ld-powerpc/tlsopt1_32.s
+++ b/ld/testsuite/ld-powerpc/tlsopt1_32.s
@@ -2,7 +2,7 @@
# this section should not be optimised since we have old-style
# __tls_get_addr without marker relocs, and the arg setup insn
# is shared with two __tls_get_addr calls.
- addi 3,13,gd@got@tlsgd
+ addi 3,30,gd@got@tlsgd
cmpwi 4,0
beq 0f
bl __tls_get_addr
diff --git a/ld/testsuite/ld-powerpc/tlsopt2_32.d b/ld/testsuite/ld-powerpc/tlsopt2_32.d
index baffe91..7dc1bce 100644
--- a/ld/testsuite/ld-powerpc/tlsopt2_32.d
+++ b/ld/testsuite/ld-powerpc/tlsopt2_32.d
@@ -15,9 +15,9 @@ Disassembly of section \.text:
Disassembly of section \.no_opt2:
0+1800098 <\.no_opt2>:
-.*: (38 6d ff f4|f4 ff 6d 38) addi r3,r13,-12
+.*: (38 7e ff f4|f4 ff 7e 38) addi r3,r30,-12
.*: (2c 04 00 00|00 00 04 2c) cmpwi r4,0
.*: (41 82 00 08|08 00 82 41) beq .*
-.*: (38 6d ff f4|f4 ff 6d 38) addi r3,r13,-12
+.*: (38 7e ff f4|f4 ff 7e 38) addi r3,r30,-12
.*: (4b ff ff ed|ed ff ff 4b) bl 1800094 <__tls_get_addr>
#pass
diff --git a/ld/testsuite/ld-powerpc/tlsopt2_32.s b/ld/testsuite/ld-powerpc/tlsopt2_32.s
index bca1247..8c387d0 100644
--- a/ld/testsuite/ld-powerpc/tlsopt2_32.s
+++ b/ld/testsuite/ld-powerpc/tlsopt2_32.s
@@ -2,9 +2,9 @@
# 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,13,gd@got@tlsgd
+ addi 3,30,gd@got@tlsgd
cmpwi 4,0
beq 0f
- addi 3,13,gd@got@tlsgd
+ addi 3,30,gd@got@tlsgd
0:
bl __tls_get_addr
diff --git a/ld/testsuite/ld-powerpc/tlsopt3_32.d b/ld/testsuite/ld-powerpc/tlsopt3_32.d
index 55827a2..2bc999f 100644
--- a/ld/testsuite/ld-powerpc/tlsopt3_32.d
+++ b/ld/testsuite/ld-powerpc/tlsopt3_32.d
@@ -15,9 +15,9 @@ Disassembly of section \.text:
Disassembly of section \.no_opt3:
0+1800098 <\.no_opt3>:
-.*: (38 6d ff ec|ec ff 6d 38) addi r3,r13,-20
+.*: (38 7e ff ec|ec ff 7e 38) addi r3,r30,-20
.*: (48 00 00 0c|0c 00 00 48) b .*
-.*: (38 6d ff f4|f4 ff 6d 38) addi r3,r13,-12
+.*: (38 7e ff f4|f4 ff 7e 38) addi r3,r30,-12
.*: (48 00 00 0c|0c 00 00 48) b .*
.*: (4b ff ff ed|ed ff ff 4b) bl 1800094 <__tls_get_addr>
.*: (48 00 00 08|08 00 00 48) b .*
diff --git a/ld/testsuite/ld-powerpc/tlsopt3_32.s b/ld/testsuite/ld-powerpc/tlsopt3_32.s
index 6432c24..c2b5fcd 100644
--- a/ld/testsuite/ld-powerpc/tlsopt3_32.s
+++ b/ld/testsuite/ld-powerpc/tlsopt3_32.s
@@ -5,9 +5,9 @@ gd0: .space 8
.section ".no_opt3", "ax", %progbits
# this section should also not be optimised
- addi 3,13,gd@got@tlsgd
+ addi 3,30,gd@got@tlsgd
b 0f
- addi 3,13,gd0@got@tlsgd
+ addi 3,30,gd0@got@tlsgd
b 1f
0:
bl __tls_get_addr
diff --git a/ld/testsuite/ld-powerpc/tlsopt4_32.s b/ld/testsuite/ld-powerpc/tlsopt4_32.s
index 9643fcb..762067e 100644
--- a/ld/testsuite/ld-powerpc/tlsopt4_32.s
+++ b/ld/testsuite/ld-powerpc/tlsopt4_32.s
@@ -4,7 +4,7 @@
gd0: .space 8
.section ".opt1", "ax", %progbits
- addi 3,13,gd@got@tlsgd
+ addi 3,30,gd@got@tlsgd
cmpwi 4,0
beq 0f
bl __tls_get_addr(gd@tlsgd)
@@ -14,17 +14,17 @@ gd0: .space 8
1:
.section ".opt2", "ax", %progbits
- addi 3,13,gd@got@tlsgd
+ addi 3,30,gd@got@tlsgd
cmpwi 4,0
beq 0f
- addi 3,13,gd@got@tlsgd
+ addi 3,30,gd@got@tlsgd
0:
bl __tls_get_addr(gd@tlsgd)
.section ".opt3", "ax", %progbits
- addi 3,13,gd@got@tlsgd
+ addi 3,30,gd@got@tlsgd
b 0f
- addi 3,13,gd0@got@tlsgd
+ addi 3,30,gd0@got@tlsgd
b 1f
0:
bl __tls_get_addr(gd@tlsgd)
diff --git a/ld/testsuite/ld-powerpc/tlsopt5.d b/ld/testsuite/ld-powerpc/tlsopt5.d
index b356a2e..7a74679 100644
--- a/ld/testsuite/ld-powerpc/tlsopt5.d
+++ b/ld/testsuite/ld-powerpc/tlsopt5.d
@@ -1,6 +1,6 @@
#source: tlsopt5.s
#as: -a64
-#ld: --gc-sections --no-plt-localentry tlsdll.so
+#ld: -shared --gc-sections --no-plt-localentry tlsdll.so
#objdump: -dr
#target: powerpc64*-*-*
@@ -8,7 +8,7 @@
Disassembly of section \.text:
-0000000010000300 <.*\.plt_call\.__tls_get_addr_opt@@GLIBC_2\.22>:
+0+2c0 <.*\.plt_call\.__tls_get_addr_opt@@GLIBC_2\.22>:
.*: (00 00 63 e9|e9 63 00 00) ld r11,0\(r3\)
.*: (08 00 83 e9|e9 83 00 08) ld r12,8\(r3\)
.*: (78 1b 60 7c|7c 60 1b 78) mr r0,r3
@@ -27,14 +27,14 @@ Disassembly of section \.text:
.*: (a6 03 68 7d|7d 68 03 a6) mtlr r11
.*: (20 00 80 4e|4e 80 00 20) blr
-0000000010000344 <_start>:
+0+304 <_start>:
.*: (08 80 62 38|38 62 80 08) addi r3,r2,-32760
.*: (b9 ff ff 4b|4b ff ff b9) bl .*
.*: (00 00 00 60|60 00 00 00) nop
-.*: (b8 02 01 00|00 00 00 00) .*
-.*: (00 00 00 00|00 01 02 b8) .*
+.*: (f8 01 01 00|00 00 00 00) .*
+.*: (00 00 00 00|00 01 01 f8) .*
-0000000010000358 <__glink_PLTresolve>:
+0+318 <__glink_PLTresolve>:
.*: (a6 02 08 7c|7c 08 02 a6) mflr r0
.*: (05 00 9f 42|42 9f 00 05) bcl .*
.*: (a6 02 68 7d|7d 68 02 a6) mflr r11
@@ -50,5 +50,5 @@ Disassembly of section \.text:
.*: (08 00 6b e9|e9 6b 00 08) ld r11,8\(r11\)
.*: (20 04 80 4e|4e 80 04 20) bctr
-0000000010000390 <__tls_get_addr_opt@plt>:
+0+350 <__tls_get_addr_opt@plt>:
.*: (c8 ff ff 4b|4b ff ff c8) b .*
diff --git a/ld/testsuite/ld-powerpc/tlsopt5_32.d b/ld/testsuite/ld-powerpc/tlsopt5_32.d
index 9749248..64acf10 100644
--- a/ld/testsuite/ld-powerpc/tlsopt5_32.d
+++ b/ld/testsuite/ld-powerpc/tlsopt5_32.d
@@ -1,6 +1,6 @@
#source: tlsopt5_32.s
#as: -a32
-#ld: --gc-sections --secure-plt tlsdll32.so
+#ld: -shared --gc-sections --secure-plt tlsdll32.so
#objdump: -dr
#target: powerpc*-*-*
@@ -8,12 +8,25 @@
Disassembly of section \.text:
-01800230 <_start>:
-.*: (f8 ff 6d 38|38 6d ff f8) addi r3,r13,-8
-.*: (0d 00 00 48|48 00 00 0d) bl 1800240 <__tls_get_addr_opt@plt>
- \.\.\.
+0+200 <_start>:
+.*: (f0 ff 21 94|94 21 ff f0) stwu r1,-16\(r1\)
+.*: (a6 02 08 7c|7c 08 02 a6) mflr r0
+.*: (05 00 9f 42|42 9f 00 05) bcl .*
+.*: (08 00 c1 93|93 c1 00 08) stw r30,8\(r1\)
+.*: (a6 02 c8 7f|7f c8 02 a6) mflr r30
+.*: (01 00 de 3f|3f de 00 01) addis r30,r30,1
+.*: (14 00 01 90|90 01 00 14) stw r0,20\(r1\)
+.*: (7c 01 de 3b|3b de 01 7c) addi r30,r30,380
+.*: (f8 ff 7e 38|38 7e ff f8) addi r3,r30,-8
+.*: (1d 00 00 48|48 00 00 1d) bl 240 <.*__tls_get_addr_opt.*>
+.*: (14 00 01 80|80 01 00 14) lwz r0,20\(r1\)
+.*: (08 00 c1 83|83 c1 00 08) lwz r30,8\(r1\)
+.*: (a6 03 08 7c|7c 08 03 a6) mtlr r0
+.*: (10 00 21 38|38 21 00 10) addi r1,r1,16
+.*: (20 00 80 4e|4e 80 00 20) blr
+.*
-01800240 <__tls_get_addr_opt@plt>:
+0+240 <.*__tls_get_addr_opt.*>:
.*: (00 00 63 81|81 63 00 00) lwz r11,0\(r3\)
.*: (04 00 83 81|81 83 00 04) lwz r12,4\(r3\)
.*: (78 1b 60 7c|7c 60 1b 78) mr r0,r3
@@ -22,31 +35,31 @@ Disassembly of section \.text:
.*: (20 00 82 4d|4d 82 00 20) beqlr
.*: (78 03 03 7c|7c 03 03 78) mr r3,r0
.*: (00 00 00 60|60 00 00 00) nop
-.*: (81 01 60 3d|3d 60 01 81) lis r11,385
-.*: (9c 03 6b 81|81 6b 03 9c) lwz r11,924\(r11\)
+.*: (0c 00 7e 81|81 7e 00 0c) lwz r11,12\(r30\)
.*: (a6 03 69 7d|7d 69 03 a6) mtctr r11
.*: (20 04 80 4e|4e 80 04 20) bctr
+.*: (00 00 00 60|60 00 00 00) nop
-01800270 <__glink>:
+0+270 <__glink>:
.*: (00 00 00 60|60 00 00 00) nop
.*: (00 00 00 60|60 00 00 00) nop
.*: (00 00 00 60|60 00 00 00) nop
.*: (00 00 00 60|60 00 00 00) nop
-01800280 <__glink_PLTresolve>:
-.*: (81 01 80 3d|3d 80 01 81) lis r12,385
-.*: (80 fe 6b 3d|3d 6b fe 80) addis r11,r11,-384
-.*: (94 03 0c 80|80 0c 03 94) lwz r0,916\(r12\)
-.*: (90 fd 6b 39|39 6b fd 90) addi r11,r11,-624
+0+280 <__glink_PLTresolve>:
+.*: (00 00 6b 3d|3d 6b 00 00) addis r11,r11,0
+.*: (a6 02 08 7c|7c 08 02 a6) mflr r0
+.*: (05 00 9f 42|42 9f 00 05) bcl .*
+.*: (1c 00 6b 39|39 6b 00 1c) addi r11,r11,28
+.*: (a6 02 88 7d|7d 88 02 a6) mflr r12
+.*: (a6 03 08 7c|7c 08 03 a6) mtlr r0
+.*: (50 58 6c 7d|7d 6c 58 50) subf r11,r12,r11
+.*: (01 00 8c 3d|3d 8c 00 01) addis r12,r12,1
+.*: (00 01 0c 80|80 0c 01 00) lwz r0,256\(r12\)
+.*: (04 01 8c 81|81 8c 01 04) lwz r12,260\(r12\)
.*: (a6 03 09 7c|7c 09 03 a6) mtctr r0
.*: (14 5a 0b 7c|7c 0b 5a 14) add r0,r11,r11
-.*: (98 03 8c 81|81 8c 03 98) lwz r12,920\(r12\)
.*: (14 5a 60 7d|7d 60 5a 14) add r11,r0,r11
.*: (20 04 80 4e|4e 80 04 20) bctr
.*: (00 00 00 60|60 00 00 00) nop
.*: (00 00 00 60|60 00 00 00) nop
-.*: (00 00 00 60|60 00 00 00) nop
-.*: (00 00 00 60|60 00 00 00) nop
-.*: (00 00 00 60|60 00 00 00) nop
-.*: (00 00 00 60|60 00 00 00) nop
-.*: (00 00 00 60|60 00 00 00) nop
diff --git a/ld/testsuite/ld-powerpc/tlsopt5_32.s b/ld/testsuite/ld-powerpc/tlsopt5_32.s
index 36b4858..d07b742 100644
--- a/ld/testsuite/ld-powerpc/tlsopt5_32.s
+++ b/ld/testsuite/ld-powerpc/tlsopt5_32.s
@@ -1,4 +1,18 @@
.globl _start
_start:
- addi 3,13,gd@got@tlsgd
- bl __tls_get_addr(gd@tlsgd)
+ stwu 1,-16(1)
+ mflr 0
+ bcl 20,31,.L2
+.L2:
+ stw 30,8(1)
+ mflr 30
+ addis 30,30,_GLOBAL_OFFSET_TABLE_-.L2@ha
+ stw 0,20(1)
+ addi 30,30,_GLOBAL_OFFSET_TABLE_-.L2@l
+ addi 3,30,gd@got@tlsgd
+ bl __tls_get_addr(gd@tlsgd)@plt
+ lwz 0,20(1)
+ lwz 30,8(1)
+ mtlr 0
+ addi 1,1,16
+ blr