mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-21 04:42:53 +08:00
0e30d99180
We need to set tlsdesc_plt for x86-64 if GOT_TLS_GDESC_P is true when allocating dynamic relocations so that _bfd_x86_elf_size_dynamic_sections will generate TLSDESC_PLT and TLSDESC_GOT in x86-64 output. bfd/ PR ld/22071 * elfxx-x86.c (elf_x86_allocate_dynrelocs): Set tlsdesc_plt for x86-64 if GOT_TLS_GDESC_P is true. ld/ PR ld/22071 * testsuite/ld-x86-64/pr22071.d: New file. * testsuite/ld-x86-64/pr22071.s: Likewise. * testsuite/ld-x86-64/x86-64.exp: Run pr22071.
79 lines
1.4 KiB
ArmAsm
79 lines
1.4 KiB
ArmAsm
.text
|
|
.p2align 4,,15
|
|
.globl get_ld
|
|
.type get_ld, @function
|
|
get_ld:
|
|
subq $8, %rsp
|
|
leaq _TLS_MODULE_BASE_@TLSDESC(%rip), %rax
|
|
call *_TLS_MODULE_BASE_@TLSCALL(%rax)
|
|
addq $8, %rsp
|
|
addq $ld@dtpoff, %rax
|
|
addq %fs:0, %rax
|
|
ret
|
|
.size get_ld, .-get_ld
|
|
.p2align 4,,15
|
|
.globl set_ld
|
|
.type set_ld, @function
|
|
set_ld:
|
|
subq $8, %rsp
|
|
leaq _TLS_MODULE_BASE_@TLSDESC(%rip), %rax
|
|
call *_TLS_MODULE_BASE_@TLSCALL(%rax)
|
|
movl %edi, %fs:ld@dtpoff(%rax)
|
|
addq $8, %rsp
|
|
ret
|
|
.size set_ld, .-set_ld
|
|
.p2align 4,,15
|
|
.globl test_ld
|
|
.type test_ld, @function
|
|
test_ld:
|
|
subq $8, %rsp
|
|
leaq _TLS_MODULE_BASE_@TLSDESC(%rip), %rax
|
|
call *_TLS_MODULE_BASE_@TLSCALL(%rax)
|
|
cmpl %edi, %fs:ld@dtpoff(%rax)
|
|
sete %al
|
|
addq $8, %rsp
|
|
movzbl %al, %eax
|
|
ret
|
|
.size test_ld, .-test_ld
|
|
.p2align 4,,15
|
|
.globl get_gd
|
|
.type get_gd, @function
|
|
get_gd:
|
|
subq $8, %rsp
|
|
leaq gd@TLSDESC(%rip), %rax
|
|
call *gd@TLSCALL(%rax)
|
|
addq $8, %rsp
|
|
addq %fs:0, %rax
|
|
ret
|
|
.size get_gd, .-get_gd
|
|
.p2align 4,,15
|
|
.globl set_gd
|
|
.type set_gd, @function
|
|
set_gd:
|
|
subq $8, %rsp
|
|
leaq gd@TLSDESC(%rip), %rax
|
|
call *gd@TLSCALL(%rax)
|
|
movl %edi, %fs:(%rax)
|
|
addq $8, %rsp
|
|
ret
|
|
.size set_gd, .-set_gd
|
|
.p2align 4,,15
|
|
.globl test_gd
|
|
.type test_gd, @function
|
|
test_gd:
|
|
subq $8, %rsp
|
|
leaq gd@TLSDESC(%rip), %rax
|
|
call *gd@TLSCALL(%rax)
|
|
cmpl %edi, %fs:(%rax)
|
|
sete %al
|
|
addq $8, %rsp
|
|
movzbl %al, %eax
|
|
ret
|
|
.size test_gd, .-test_gd
|
|
.section .tbss,"awT",@nobits
|
|
.align 4
|
|
.type ld, @object
|
|
.size ld, 4
|
|
ld:
|
|
.zero 4
|