summaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-x86-64/tlsld3.s
diff options
context:
space:
mode:
Diffstat (limited to 'ld/testsuite/ld-x86-64/tlsld3.s')
-rw-r--r--ld/testsuite/ld-x86-64/tlsld3.s27
1 files changed, 27 insertions, 0 deletions
diff --git a/ld/testsuite/ld-x86-64/tlsld3.s b/ld/testsuite/ld-x86-64/tlsld3.s
new file mode 100644
index 0000000000..9bcdfbd568
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/tlsld3.s
@@ -0,0 +1,27 @@
+ .text
+ .globl _start
+_start:
+1: movabsq $_GLOBAL_OFFSET_TABLE_-1b, %r11
+ pushq %rbx
+ pushq %rbx
+ leaq 1b(%rip), %rbx
+ addq %r11, %rbx
+
+ /* LD, -mcmodel=large */
+ leaq foo@tlsld(%rip), %rdi
+ movabsq $__tls_get_addr@pltoff, %rax
+ addq %rbx, %rax
+ call *%rax
+
+ movl foo@dtpoff(%rax), %eax
+
+ popq %rbx
+ popq %rbx
+ ret
+ .globl foo
+ .section .tdata,"awT",@progbits
+ .align 4
+ .type foo, @object
+ .size foo, 4
+foo:
+ .long 100