summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael J. Spencer <bigcheesegs@gmail.com>2015-11-11 01:28:11 +0000
committerMichael J. Spencer <bigcheesegs@gmail.com>2015-11-11 01:28:11 +0000
commitac2307b9ff9de6607f3a19d25cabbcc56d5480fd (patch)
tree935805635bde6dc37b04cdafafc61d89bc54a7f3
parenta5d9d1f154b5eb8f11bcce69c951185acba76dbd (diff)
downloadbcm5719-llvm-ac2307b9ff9de6607f3a19d25cabbcc56d5480fd.tar.gz
bcm5719-llvm-ac2307b9ff9de6607f3a19d25cabbcc56d5480fd.zip
[elf2][x86-64] Add support for DTPOFF64
llvm-svn: 252685
-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