diff options
| author | Yang Liu <liuyang22@iscas.ac.cn> | 2025-05-15 20:19:33 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-15 14:19:33 +0200 |
| commit | 3dc00e926235a7f987bc4ad2e3d912038fb22716 (patch) | |
| tree | e9c8fee5254fa553ef01569b90bb20d54534522d /src | |
| parent | 649af04fa540ff2d5cb581e2d2f8213be1381fc0 (diff) | |
| download | box64-3dc00e926235a7f987bc4ad2e3d912038fb22716.tar.gz box64-3dc00e926235a7f987bc4ad2e3d912038fb22716.zip | |
[DYNAREC] Fixed alternate address testing when retriving dynablock (#2638)
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/dynablock.c | 4 | ||||
| -rw-r--r-- | src/dynarec/dynarec.c | 3 |
2 files changed, 3 insertions, 4 deletions
diff --git a/src/dynarec/dynablock.c b/src/dynarec/dynablock.c index 097d16d9..4ecdf768 100644 --- a/src/dynarec/dynablock.c +++ b/src/dynarec/dynablock.c @@ -198,7 +198,7 @@ void cancelFillBlock() */ static dynablock_t* internalDBGetBlock(x64emu_t* emu, uintptr_t addr, uintptr_t filladdr, int create, int need_lock, int is32bits) { - if(hasAlternate((void*)addr)) + if (hasAlternate((void*)filladdr)) return NULL; const uint32_t req_prot = (box64_pagesize==4096)?(PROT_EXEC|PROT_READ):PROT_READ; dynablock_t* block = getDB(addr); @@ -417,4 +417,4 @@ int getX64AddressInst(dynablock_t* db, uintptr_t x64pc) ret++; } while (db->instsize[i].x64 || db->instsize[i].nat); return ret; -} \ No newline at end of file +} diff --git a/src/dynarec/dynarec.c b/src/dynarec/dynarec.c index c0f712eb..fc24a121 100644 --- a/src/dynarec/dynarec.c +++ b/src/dynarec/dynarec.c @@ -52,8 +52,7 @@ void* LinkNext(x64emu_t* emu, uintptr_t addr, void* x2, uintptr_t* x3) void * jblock; dynablock_t* block = NULL; if(hasAlternate((void*)addr)) { - printf_log(LOG_DEBUG, "Jmp address has alternate: %p", (void*)addr); - if (BOX64ENV(log)<LOG_DEBUG) dynarec_log(LOG_INFO, "Jmp address has alternate: %p", (void*)addr); + printf_log(LOG_DEBUG, "Jmp address has alternate: %p\n", (void*)addr); uintptr_t old_addr = addr; addr = (uintptr_t)getAlternate((void*)addr); // set new address R_RIP = addr; // but also new RIP! |