mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 12:41:49 +01:00
[RuntimeDyld][MachO] Fix assertion in encodeAddend, add missing directive to
test case. r326290 fixed the assertion for decodeAddend, but not encodeAddend. The regression test failed to catch this because it was missing the subsections_via_symbols flag, so the desired relocation was not applied. This patch also fixes the formatting of the assertion from r326290. llvm-svn: 326406
This commit is contained in:
parent
b52d2788e3
commit
cb7b6e9d9f
@ -69,8 +69,8 @@ public:
|
|||||||
// Verify that the relocation points to a B/BL instruction.
|
// Verify that the relocation points to a B/BL instruction.
|
||||||
auto *p = reinterpret_cast<support::aligned_ulittle32_t *>(LocalAddress);
|
auto *p = reinterpret_cast<support::aligned_ulittle32_t *>(LocalAddress);
|
||||||
assert(((*p & 0xFC000000) == 0x14000000 ||
|
assert(((*p & 0xFC000000) == 0x14000000 ||
|
||||||
(*p & 0xFC000000) == 0x94000000)
|
(*p & 0xFC000000) == 0x94000000) &&
|
||||||
&& "Expected branch instruction.");
|
"Expected branch instruction.");
|
||||||
|
|
||||||
// Get the 26 bit addend encoded in the branch instruction and sign-extend
|
// Get the 26 bit addend encoded in the branch instruction and sign-extend
|
||||||
// to 64 bit. The lower 2 bits are always zeros and are therefore implicit
|
// to 64 bit. The lower 2 bits are always zeros and are therefore implicit
|
||||||
@ -166,7 +166,9 @@ public:
|
|||||||
case MachO::ARM64_RELOC_BRANCH26: {
|
case MachO::ARM64_RELOC_BRANCH26: {
|
||||||
auto *p = reinterpret_cast<support::aligned_ulittle32_t *>(LocalAddress);
|
auto *p = reinterpret_cast<support::aligned_ulittle32_t *>(LocalAddress);
|
||||||
// Verify that the relocation points to the expected branch instruction.
|
// Verify that the relocation points to the expected branch instruction.
|
||||||
assert((*p & 0xFC000000) == 0x14000000 && "Expected branch instruction.");
|
assert(((*p & 0xFC000000) == 0x14000000 ||
|
||||||
|
(*p & 0xFC000000) == 0x94000000) &&
|
||||||
|
"Expected branch instruction.");
|
||||||
|
|
||||||
// Verify addend value.
|
// Verify addend value.
|
||||||
assert((Addend & 0x3) == 0 && "Branch target is not aligned");
|
assert((Addend & 0x3) == 0 && "Branch target is not aligned");
|
||||||
|
@ -90,3 +90,5 @@ _ptr:
|
|||||||
# rtdyld-check: *{8}_subtractor_result = _test_branch_reloc - _foo
|
# rtdyld-check: *{8}_subtractor_result = _test_branch_reloc - _foo
|
||||||
_subtractor_result:
|
_subtractor_result:
|
||||||
.quad _test_branch_reloc - _foo
|
.quad _test_branch_reloc - _foo
|
||||||
|
|
||||||
|
.subsections_via_symbols
|
Loading…
x
Reference in New Issue
Block a user