mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-07 23:24:09 +00:00
DynASM/ARM64: Fix ADRP encoding with absolute address.
Thanks to Dmitry Stogov.
This commit is contained in:
parent
aa7ac66068
commit
5783ba1bf7
@ -473,7 +473,13 @@ int dasm_encode(Dst_DECL, void *buffer)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DASM_REL_A: {
|
case DASM_REL_A: {
|
||||||
ptrdiff_t na = (((ptrdiff_t)(*b++) << 32) | (unsigned int)n) - (ptrdiff_t)cp + 4;
|
ptrdiff_t na = (((ptrdiff_t)(*b++) << 32) | (unsigned int)n);
|
||||||
|
if ((ins & 0x3000) == 0x3000) { /* ADRP */
|
||||||
|
ins &= ~0x1000;
|
||||||
|
na = (na >> 12) - (((ptrdiff_t)cp - 4) >> 12);
|
||||||
|
} else {
|
||||||
|
na = na - (ptrdiff_t)cp + 4;
|
||||||
|
}
|
||||||
n = (int)na;
|
n = (int)na;
|
||||||
CK((ptrdiff_t)n == na, RANGE_REL);
|
CK((ptrdiff_t)n == na, RANGE_REL);
|
||||||
goto patchrel;
|
goto patchrel;
|
||||||
|
Loading…
Reference in New Issue
Block a user