summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgor Kudrin <ikudrin.dev@gmail.com>2015-11-23 16:56:10 +0000
committerIgor Kudrin <ikudrin.dev@gmail.com>2015-11-23 16:56:10 +0000
commitbf08749b29ebc1a8d546aaa2d48a09431b73b17b (patch)
tree66451cde7bad32a1554f1c59dd21b0b8d8dc6fc3
parent53828fd77797c8a9920619e19b5f4ad5cc779946 (diff)
downloadbcm5719-llvm-bf08749b29ebc1a8d546aaa2d48a09431b73b17b.tar.gz
bcm5719-llvm-bf08749b29ebc1a8d546aaa2d48a09431b73b17b.zip
[ELF/AArch64] Fix overflow checks for R_AARCH64_PREL16 and _PREL32 relocations.
llvm-svn: 253879
-rw-r--r--lld/ELF/Target.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/lld/ELF/Target.cpp b/lld/ELF/Target.cpp
index 6584f639977..81a56d6a194 100644
--- a/lld/ELF/Target.cpp
+++ b/lld/ELF/Target.cpp
@@ -755,12 +755,12 @@ void AArch64TargetInfo::relocateOne(uint8_t *Loc, uint8_t *BufEnd,
or32le(Loc, (SA & 0xFFF) << 10);
break;
case R_AARCH64_PREL16:
- if (!isInt<16>(SA))
+ if (!isInt<16>(SA - P))
error("Relocation R_AARCH64_PREL16 out of range");
write16le(Loc, SA - P);
break;
case R_AARCH64_PREL32:
- if (!isInt<32>(SA))
+ if (!isInt<32>(SA - P))
error("Relocation R_AARCH64_PREL32 out of range");
write32le(Loc, SA - P);
break;
OpenPOWER on IntegriCloud