diff options
-rw-r--r-- | lld/ELF/Target.cpp | 3 | ||||
-rw-r--r-- | lld/test/ELF/tls-dynamic.s | 6 |
2 files changed, 9 insertions, 0 deletions
diff --git a/lld/ELF/Target.cpp b/lld/ELF/Target.cpp index 524c705dd0f..db381a63c0f 100644 --- a/lld/ELF/Target.cpp +++ b/lld/ELF/Target.cpp @@ -872,6 +872,9 @@ void X86_64TargetInfo::relocateOne(uint8_t *Loc, uint8_t *BufEnd, uint32_t Type, case R_X86_64_DTPOFF32: write32le(Loc, SA); break; + case R_X86_64_DTPOFF64: + write64le(Loc, SA); + break; case R_X86_64_GOTPCREL: case R_X86_64_PC32: case R_X86_64_PLT32: diff --git a/lld/test/ELF/tls-dynamic.s b/lld/test/ELF/tls-dynamic.s index b6ae6da61bb..647ab06dcea 100644 --- a/lld/test/ELF/tls-dynamic.s +++ b/lld/test/ELF/tls-dynamic.s @@ -18,6 +18,9 @@ // Initial Exec Model Code Sequence, II movq c@gottpoff(%rip),%rax movq %fs:(%rax),%rax + movabs $a@dtpoff, %rax + movabs $b@dtpoff, %rax + movabs $c@dtpoff, %rax .global a .hidden a @@ -79,3 +82,6 @@ c: // DIS-NEXT: 103b: {{.+}} leaq 8(%rax), %rcx // DIS-NEXT: 1042: {{.+}} movq 4263(%rip), %rax // DIS-NEXT: 1049: {{.+}} movq %fs:(%rax), %rax +// DIS-NEXT: 104d: {{.+}} movabsq $0, %rax +// DIS-NEXT: 1057: {{.+}} movabsq $4, %rax +// DIS-NEXT: 1061: {{.+}} movabsq $8, %rax |