diff options
Diffstat (limited to 'gold/testsuite/pr20216_gd.S')
-rw-r--r-- | gold/testsuite/pr20216_gd.S | 55 |
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 |