aboutsummaryrefslogtreecommitdiff
path: root/gold/testsuite/pr20216_gd.S
diff options
context:
space:
mode:
Diffstat (limited to 'gold/testsuite/pr20216_gd.S')
-rw-r--r--gold/testsuite/pr20216_gd.S55
1 files changed, 55 insertions, 0 deletions
diff --git a/gold/testsuite/pr20216_gd.S b/gold/testsuite/pr20216_gd.S
new file mode 100644
index 0000000..cf56675
--- /dev/null
+++ b/gold/testsuite/pr20216_gd.S
@@ -0,0 +1,55 @@
+ .text
+ .p2align 4,,15
+ .globl get_gd
+ .type get_gd, @function
+get_gd:
+ subq $8, %rsp
+#ifdef __LP64__
+ .byte 0x66
+#endif
+ leaq gd@tlsgd(%rip), %rdi
+ .byte 0x66
+ rex64
+ call *__tls_get_addr@GOTPCREL(%rip)
+ addq $8, %rsp
+ ret
+ .size get_gd, .-get_gd
+ .text
+ .p2align 4,,15
+ .globl set_gd
+ .type set_gd, @function
+set_gd:
+ pushq %rbx
+ movl %edi, %ebx
+#ifdef __LP64__
+ .byte 0x66
+#endif
+ leaq gd@tlsgd(%rip), %rdi
+ .value 0x6666
+ rex64
+ call __tls_get_addr@PLT
+ movl %ebx, (%rax)
+ popq %rbx
+ ret
+ .size set_gd, .-set_gd
+ .text
+ .p2align 4,,15
+ .globl test_gd
+ .type test_gd, @function
+test_gd:
+ pushq %rbx
+ movl %edi, %ebx
+#ifdef __LP64__
+ .byte 0x66
+#endif
+ leaq gd@tlsgd(%rip), %rdi
+ .byte 0x66
+ rex64
+ call *__tls_get_addr@GOTPCREL(%rip)
+ cmpl %ebx, (%rax)
+ popq %rbx
+ sete %al
+ movzbl %al, %eax
+ ret
+ .size test_gd, .-test_gd
+ .section .note.GNU-stack,"",@progbits