summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKonstantin Zhuravlyov <kzhuravl_dev@outlook.com>2018-06-11 21:42:53 +0000
committerKonstantin Zhuravlyov <kzhuravl_dev@outlook.com>2018-06-11 21:42:53 +0000
commitd70c367267df22cdfd99719f58489d7075048ed6 (patch)
treef17668d38171e8edd5a7b3da2048a354fa08bf07
parent3e5d66ac66cd2669976f316ff12c57f162416381 (diff)
downloadbcm5719-llvm-d70c367267df22cdfd99719f58489d7075048ed6.tar.gz
bcm5719-llvm-d70c367267df22cdfd99719f58489d7075048ed6.zip
AMDGPU/LLD: Handle R_AMDGPU_REL64 relocation
Requires r334443 from llvm Differential Revision: https://reviews.llvm.org/D47734 llvm-svn: 334444
-rw-r--r--lld/ELF/Arch/AMDGPU.cpp2
-rw-r--r--lld/test/ELF/amdgpu-relocs.s12
2 files changed, 14 insertions, 0 deletions
diff --git a/lld/ELF/Arch/AMDGPU.cpp b/lld/ELF/Arch/AMDGPU.cpp
index 505e0e6ad48..48b27f23510 100644
--- a/lld/ELF/Arch/AMDGPU.cpp
+++ b/lld/ELF/Arch/AMDGPU.cpp
@@ -66,6 +66,7 @@ void AMDGPU::relocateOne(uint8_t *Loc, RelType Type, uint64_t Val) const {
write32le(Loc, Val);
break;
case R_AMDGPU_ABS64:
+ case R_AMDGPU_REL64:
write64le(Loc, Val);
break;
case R_AMDGPU_GOTPCREL32_HI:
@@ -86,6 +87,7 @@ RelExpr AMDGPU::getRelExpr(RelType Type, const Symbol &S,
case R_AMDGPU_REL32:
case R_AMDGPU_REL32_LO:
case R_AMDGPU_REL32_HI:
+ case R_AMDGPU_REL64:
return R_PC;
case R_AMDGPU_GOTPCREL:
case R_AMDGPU_GOTPCREL32_LO:
diff --git a/lld/test/ELF/amdgpu-relocs.s b/lld/test/ELF/amdgpu-relocs.s
index 8b5a61ed21f..775a262d5eb 100644
--- a/lld/test/ELF/amdgpu-relocs.s
+++ b/lld/test/ELF/amdgpu-relocs.s
@@ -77,6 +77,15 @@ ptr:
ptr2:
.quad temp2
+# R_AMDGPU_REL64:
+.type foo, @object
+.rodata
+ .globl foo
+ .p2align 3
+foo:
+ .quad temp2@rel64
+ .size foo, 8
+
# The relocation for local_var{0, 1, 2} and var should be resolved by the
# linker.
# CHECK: Relocations [
@@ -101,6 +110,9 @@ ptr2:
# CHECK-NEXT: }
# CHECK-NEXT: ]
+# OBJDUMP: Contents of section .rodata:
+# OBJDUMP: 28fbffff ffffffff
+
# OBJDUMP: Contents of section nonalloc:
# OBJDUMP-NEXT: 0000 00000000 04480000 00000000 08440000
# OBJDUMP-NEXT: 00000000 0c400000
OpenPOWER on IntegriCloud