mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-19 07:13:40 +08:00
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.
This commit is contained in:
parent
211b0bed95
commit
86038de0d8
14
ld/ChangeLog
14
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.
|
||||
|
@ -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}
|
||||
|
@ -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>
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 .*
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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 .*
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user