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
This commit is contained in:
Rafael Espindola 2016-02-24 19:58:50 +00:00
parent c36e97ae39
commit 9a3bb54b2e
2 changed files with 3 additions and 1 deletions

View File

@ -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 {

View File

@ -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: