mirror of
https://github.com/frida/tinycc
synced 2025-01-11 22:29:18 +03:00
tccelf.c: On arm64, use read64le, and use uint64_t to check range.
This commit is contained in:
parent
4ae626451e
commit
c7067aeb84
5
tccelf.c
5
tccelf.c
@ -1961,9 +1961,8 @@ ST_FUNC void relocate_plt(TCCState *s1)
|
||||
p += 32;
|
||||
while (p < p_end) {
|
||||
uint64_t pc = plt + (p - s1->plt->data);
|
||||
uint64_t addr = got +
|
||||
(read32le(p) | (uint64_t)read32le(p + 4) << 32);
|
||||
uint32_t off = (addr >> 12) - (pc >> 12);
|
||||
uint64_t addr = got + read64le(p);
|
||||
uint64_t off = (addr >> 12) - (pc >> 12);
|
||||
if ((off + ((uint32_t)1 << 20)) >> 21)
|
||||
tcc_error("Failed relocating PLT (off=0x%lx, addr=0x%lx, pc=0x%lx)", off, addr, pc);
|
||||
write32le(p, (0x90000010 | // adrp x16,...
|
||||
|
Loading…
Reference in New Issue
Block a user