diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2016-02-10 16:26:31 +0000 |
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2016-02-10 16:26:31 +0000 |
| commit | 96449907a538b78c402696d94fe47bb3f96d543c (patch) | |
| tree | 121ee366395b50b6d024449a0a18c859c6aa7739 | |
| parent | fc3bf1f5267a3432ea50114960d16cedec0a3804 (diff) | |
| download | bcm5719-llvm-96449907a538b78c402696d94fe47bb3f96d543c.tar.gz bcm5719-llvm-96449907a538b78c402696d94fe47bb3f96d543c.zip | |
Add support for R_X86_64_DTPOFF64.
It is used by clang to produce debug info for tls variables.
llvm-svn: 260384
| -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 |

