mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-28 06:00:28 +00:00
Fix undefined behavior (shift of negative value) in RuntimeDyldMachOAArch64::encodeAddend.
Test Plan: regression test suite with/without UBSan. Reviewers: lhames, ributzka Subscribers: aemerson, llvm-commits Differential Revision: http://reviews.llvm.org/D6908 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225568 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6829815d96
commit
2ba0f89d9e
@ -183,8 +183,8 @@ public:
|
||||
assert(isInt<33>(Addend) && "Invalid page reloc value.");
|
||||
|
||||
// Encode the addend into the instruction.
|
||||
uint32_t ImmLoValue = (uint32_t)(Addend << 17) & 0x60000000;
|
||||
uint32_t ImmHiValue = (uint32_t)(Addend >> 9) & 0x00FFFFE0;
|
||||
uint32_t ImmLoValue = ((uint64_t)Addend << 17) & 0x60000000;
|
||||
uint32_t ImmHiValue = ((uint64_t)Addend >> 9) & 0x00FFFFE0;
|
||||
*p = (*p & 0x9F00001F) | ImmHiValue | ImmLoValue;
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user