diff options
-rw-r--r-- | lld/ELF/Arch/AArch64.cpp | 1 | ||||
-rw-r--r-- | lld/test/ELF/aarch64-load-alignment.s | 11 |
2 files changed, 12 insertions, 0 deletions
diff --git a/lld/ELF/Arch/AArch64.cpp b/lld/ELF/Arch/AArch64.cpp index 7493b6c5e83..488c35e7a03 100644 --- a/lld/ELF/Arch/AArch64.cpp +++ b/lld/ELF/Arch/AArch64.cpp @@ -249,6 +249,7 @@ void AArch64::relocateOne(uint8_t *Loc, uint32_t Type, uint64_t Val) const { break; case R_AARCH64_CONDBR19: case R_AARCH64_LD_PREL_LO19: + checkAlignment<4>(Loc, Val, Type); checkInt<21>(Loc, Val, Type); or32le(Loc, (Val & 0x1FFFFC) << 3); break; diff --git a/lld/test/ELF/aarch64-load-alignment.s b/lld/test/ELF/aarch64-load-alignment.s new file mode 100644 index 00000000000..d0c51c5b956 --- /dev/null +++ b/lld/test/ELF/aarch64-load-alignment.s @@ -0,0 +1,11 @@ +# REQUIRES: aarch64 + +# RUN: llvm-mc -filetype=obj -triple=aarch64-linux-none %s -o %t.o +# RUN: not ld.lld -shared %t.o -o %t 2>&1 | FileCheck %s + +# CHECK: improper alignment for relocation R_AARCH64_LD_PREL_LO19 + + ldr x8, patatino + .data + .zero 5 +patatino: |