summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2016-02-24 19:36:30 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2016-02-24 19:36:30 +0000
commitc36e97ae3977f4f1cc595daac98ff3f845979b13 (patch)
tree6157a4045f99d4ed3beb8a588da0881feb56c26c
parentaca625a4fe812a13c1f4718996b0460d6e4d1faf (diff)
downloadbcm5719-llvm-c36e97ae3977f4f1cc595daac98ff3f845979b13.tar.gz
bcm5719-llvm-c36e97ae3977f4f1cc595daac98ff3f845979b13.zip
R_AARCH64_ADR_PREL_PG_HI21 is relative.
llvm-svn: 261764
-rw-r--r--lld/ELF/Target.cpp2
-rw-r--r--lld/test/ELF/aarch64-relative.s3
2 files changed, 4 insertions, 1 deletions
diff --git a/lld/ELF/Target.cpp b/lld/ELF/Target.cpp
index 5f343598dbd..3822eaa7c08 100644
--- a/lld/ELF/Target.cpp
+++ b/lld/ELF/Target.cpp
@@ -1220,7 +1220,7 @@ AArch64TargetInfo::AArch64TargetInfo() {
}
bool AArch64TargetInfo::isRelRelative(uint32_t Type) const {
- return Type == R_AARCH64_PREL32;
+ return Type == R_AARCH64_PREL32 || Type == R_AARCH64_ADR_PREL_PG_HI21;
}
bool AArch64TargetInfo::isTlsGlobalDynamicRel(unsigned Type) const {
diff --git a/lld/test/ELF/aarch64-relative.s b/lld/test/ELF/aarch64-relative.s
index 9ffd6a8704a..43b6c4afbd3 100644
--- a/lld/test/ELF/aarch64-relative.s
+++ b/lld/test/ELF/aarch64-relative.s
@@ -2,8 +2,11 @@
// RUN: llvm-mc -filetype=obj -triple=aarch64-unknown-freebsd %s -o %t.o
// RUN: ld.lld %t.o -o %t.so -shared
// RUN: llvm-readobj -r %t.so | FileCheck %s
+ adrp x8, .Lfoo
+ .data
.Lfoo:
+
.rodata
.long .Lfoo - .
OpenPOWER on IntegriCloud