diff options
Diffstat (limited to 'ld/testsuite/ld-powerpc/tlsld.s')
-rw-r--r-- | ld/testsuite/ld-powerpc/tlsld.s | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/ld/testsuite/ld-powerpc/tlsld.s b/ld/testsuite/ld-powerpc/tlsld.s new file mode 100644 index 0000000..4ab2630 --- /dev/null +++ b/ld/testsuite/ld-powerpc/tlsld.s @@ -0,0 +1,58 @@ + .section ".tbss","awT",@nobits + .p2align 3 +pad: .space 8 + .global a +a: .space 8 + .global b +b: .space 8 + .global c +c: .space 8 + .global d +d: .space 8 +z2: .space 8 +z3: .space 8 + + .text + .globl _start +_start: +#Small model OpenPower + addi 3,2,.La@toc + bl __tls_get_addr(.La@tlsld) + nop + .section .toc,"aw",@progbits + .p2align 3 +.La: + .quad a@dtpmod + .quad 0 + .text + +#Medium mode ELF + addis 3,2,b@got@tlsld@ha + addi 3,3,b@got@tlsld@l + bl __tls_get_addr(b@tlsld) + nop + +#PCrel, with dtprel access to vars + pla 3,c@got@tlsld@pcrel + bl __tls_get_addr@notoc(c@tlsld) + paddi 9,3,z2@dtprel + pld 10,z3@got@dtprel@pcrel + add 10,10,3 + +#All of the above using the same symbol + addis 3,2,.Ld@toc@ha + addi 3,3,.Ld@toc@l + bl __tls_get_addr(.Ld@tlsld) + nop + .section .toc,"aw",@progbits + .p2align 3 +.Ld: + .quad d@dtpmod + .quad 0 + .text + addis 3,2,d@got@tlsld@ha + addi 3,3,d@got@tlsld@l + bl __tls_get_addr(d@tlsld) + nop + pla 3,d@got@tlsld@pcrel + bl __tls_get_addr@notoc(d@tlsld) |