about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-11-04 15:14:25 +0100
committerptitSeb <sebastien.chev@gmail.com>2023-11-04 15:14:25 +0100
commit787646b3cc6aac98522a37bc7538f35ea7bb45c4 (patch)
treee85471956111142134e681746276dc5c0fe5cb8a
parentf0d5e9d01ef74346da13f88f7d1b6678980e622b (diff)
downloadbox64-787646b3cc6aac98522a37bc7538f35ea7bb45c4.tar.gz
box64-787646b3cc6aac98522a37bc7538f35ea7bb45c4.zip
[TRACE] Improved trace
-rw-r--r--src/emu/x64emu.c2
-rw-r--r--src/emu/x64run_private.c4
2 files changed, 3 insertions, 3 deletions
diff --git a/src/emu/x64emu.c b/src/emu/x64emu.c
index 95077d4a..8ac3e179 100644
--- a/src/emu/x64emu.c
+++ b/src/emu/x64emu.c
@@ -397,7 +397,7 @@ void ResetFlags(x64emu_t *emu)
 
 const char* DumpCPURegs(x64emu_t* emu, uintptr_t ip, int is32bits)
 {
-    static char buff[1000];
+    static char buff[4096];
     static const char* regname[] = {"RAX", "RCX", "RDX", "RBX", "RSP", "RBP", "RSI", "RDI",
                                     " R8", " R9", "R10", "R11", "R12", "R13", "R14", "R15"};
     static const char* regname32[]={"EAX", "ECX", "EDX", "EBX", "ESP", "EBP", "ESI", "EDI"};
diff --git a/src/emu/x64run_private.c b/src/emu/x64run_private.c
index 5056ff90..296d27a7 100644
--- a/src/emu/x64run_private.c
+++ b/src/emu/x64run_private.c
@@ -1124,11 +1124,11 @@ void PrintTrace(x64emu_t* emu, uintptr_t ip, int dynarec)
                 printFunctionAddr(nextaddr, "=> ");
             } else if(peek==0xFF) {
                 if(PK(1)==0x25) {
-                    uintptr_t nextaddr = *(uintptr_t*)(ip + 6 + PK32(2));
+                    uintptr_t nextaddr = is32bits?(*(uint32_t*)PK32(2)):(*(uintptr_t*)(ip + 6 + PK32(2)));
                     if(!printFunctionAddr(nextaddr, "=> "))
                         printf_log(LOG_NONE, " => %p", (void*)nextaddr);
                 } else if((PK(1)==0x14) && (PK(2)==0x25)) {
-                    uintptr_t nextaddr = *(uintptr_t*)(uintptr_t)PK32(3);
+                    uintptr_t nextaddr = is32bits?(*(uint32_t*)(uintptr_t)PK32(3)):(*(uintptr_t*)(uintptr_t)PK32(3));
                     printf_log(LOG_NONE, " => %p", (void*)nextaddr);
                     printFunctionAddr(nextaddr, "=> ");
                 } else if((PK(1)==0x14) && (PK(2)==0xC2) && rex.rex==0x41) {