summaryrefslogtreecommitdiffstats
path: root/lld
diff options
context:
space:
mode:
Diffstat (limited to 'lld')
-rw-r--r--lld/ELF/Target.cpp2
-rw-r--r--lld/test/elf2/tls-dynamic.s5
2 files changed, 7 insertions, 0 deletions
diff --git a/lld/ELF/Target.cpp b/lld/ELF/Target.cpp
index f6fe7ea2f1e..5fae919c835 100644
--- a/lld/ELF/Target.cpp
+++ b/lld/ELF/Target.cpp
@@ -323,6 +323,7 @@ bool X86_64TargetInfo::isRelRelative(uint32_t Type) const {
case R_X86_64_PC8:
case R_X86_64_PLT32:
case R_X86_64_DTPOFF32:
+ case R_X86_64_DTPOFF64:
return true;
}
}
@@ -337,6 +338,7 @@ void X86_64TargetInfo::relocateOne(uint8_t *Loc, uint8_t *BufEnd, uint32_t Type,
write32le(Loc, SA - P);
break;
case R_X86_64_64:
+ case R_X86_64_DTPOFF64:
write64le(Loc, SA);
break;
case R_X86_64_32:
diff --git a/lld/test/elf2/tls-dynamic.s b/lld/test/elf2/tls-dynamic.s
index 9074be5fdaa..4c93c9c2f13 100644
--- a/lld/test/elf2/tls-dynamic.s
+++ b/lld/test/elf2/tls-dynamic.s
@@ -10,6 +10,7 @@
callq __tls_get_addr@PLT
leaq a@dtpoff(%rax), %rcx
leaq b@dtpoff(%rax), %rcx
+ .long b@dtpoff, 0
.global a
.hidden a
@@ -54,3 +55,7 @@ b:
// DIS-NEXT: 1013: {{.+}} callq
// DIS-NEXT: 1018: {{.+}} leaq (%rax), %rcx
// DIS-NEXT: 101f: {{.+}} leaq 4(%rax), %rcx
+// DIS-NEXT: 1026: 04 00
+// DIS-NEXT: 1028: 00 00
+// DIS-NEXT: 102a: 00 00
+// DIS-NEXT: 102c: 00 00
OpenPOWER on IntegriCloud