aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-powerpc/tlsld.s
diff options
context:
space:
mode:
Diffstat (limited to 'ld/testsuite/ld-powerpc/tlsld.s')
-rw-r--r--ld/testsuite/ld-powerpc/tlsld.s58
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)