summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2016-02-24 16:15:13 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2016-02-24 16:15:13 +0000
commita4e35f7092a34dba2649753663902dc589f83ea3 (patch)
treebc192f5d237bd3b461dfe31a9e25b1afb6814243
parent064dbac212c73659623f389e4f0f2f624030b274 (diff)
downloadbcm5719-llvm-a4e35f7092a34dba2649753663902dc589f83ea3.tar.gz
bcm5719-llvm-a4e35f7092a34dba2649753663902dc589f83ea3.zip
Mark R_AARCH64_PREL32 as relative.
llvm-svn: 261747
-rw-r--r--lld/ELF/Target.cpp4
-rw-r--r--lld/test/ELF/aarch64-relative.s11
2 files changed, 14 insertions, 1 deletions
diff --git a/lld/ELF/Target.cpp b/lld/ELF/Target.cpp
index a2a609cdd58..ef8ddcc0bca 100644
--- a/lld/ELF/Target.cpp
+++ b/lld/ELF/Target.cpp
@@ -1209,7 +1209,9 @@ AArch64TargetInfo::AArch64TargetInfo() {
PltZeroSize = 32;
}
-bool AArch64TargetInfo::isRelRelative(uint32_t Type) const { return false; }
+bool AArch64TargetInfo::isRelRelative(uint32_t Type) const {
+ return Type == R_AARCH64_PREL32;
+}
bool AArch64TargetInfo::isTlsGlobalDynamicRel(unsigned Type) const {
return Type == R_AARCH64_TLSDESC_ADR_PAGE21 ||
diff --git a/lld/test/ELF/aarch64-relative.s b/lld/test/ELF/aarch64-relative.s
new file mode 100644
index 00000000000..9ffd6a8704a
--- /dev/null
+++ b/lld/test/ELF/aarch64-relative.s
@@ -0,0 +1,11 @@
+// REQUIRES: aarch64
+// 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
+
+ .Lfoo:
+ .rodata
+ .long .Lfoo - .
+
+// CHECK: Relocations [
+// CHECK-NEXT: ]
OpenPOWER on IntegriCloud