From: Rafael Espindola Date: Wed, 24 Feb 2016 19:58:50 +0000 (+0000) Subject: R_AARCH64_LDST8_ABS_LO12_NC is effectivelly relative. X-Git-Tag: llvmorg-3.9.0-rc1~13347 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9a3bb54b2e0ac170b9ff05f0655d43795846502c;p=platform%2Fupstream%2Fllvm.git R_AARCH64_LDST8_ABS_LO12_NC is effectivelly relative. It only sets the low bits and given the page alignment of PT_LOAD the dynamic linker can only change the high ones. llvm-svn: 261765 --- diff --git a/lld/ELF/Target.cpp b/lld/ELF/Target.cpp index 3822eaa..d24bba2 100644 --- a/lld/ELF/Target.cpp +++ b/lld/ELF/Target.cpp @@ -1220,7 +1220,8 @@ AArch64TargetInfo::AArch64TargetInfo() { } bool AArch64TargetInfo::isRelRelative(uint32_t Type) const { - return Type == R_AARCH64_PREL32 || Type == R_AARCH64_ADR_PREL_PG_HI21; + return Type == R_AARCH64_PREL32 || Type == R_AARCH64_ADR_PREL_PG_HI21 || + Type == R_AARCH64_LDST8_ABS_LO12_NC; } bool AArch64TargetInfo::isTlsGlobalDynamicRel(unsigned Type) const { diff --git a/lld/test/ELF/aarch64-relative.s b/lld/test/ELF/aarch64-relative.s index 43b6c4a..e6a60cc 100644 --- a/lld/test/ELF/aarch64-relative.s +++ b/lld/test/ELF/aarch64-relative.s @@ -3,6 +3,7 @@ // RUN: ld.lld %t.o -o %t.so -shared // RUN: llvm-readobj -r %t.so | FileCheck %s adrp x8, .Lfoo + strb w9, [x8, :lo12:.Lfoo] .data .Lfoo: