about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-10-13 21:18:10 +0200
committerptitSeb <sebastien.chev@gmail.com>2023-10-13 21:18:10 +0200
commitbe24eec9d0bcae7f22e2bdfd074a72a9158f2362 (patch)
treef49f37aa6b87202bb9ab898709d0112faa6a04b0 /src
parent60fed04cb75df2d4545898b827713fc7a4cf856d (diff)
downloadbox64-be24eec9d0bcae7f22e2bdfd074a72a9158f2362.tar.gz
box64-be24eec9d0bcae7f22e2bdfd074a72a9158f2362.zip
[TRACE] Better trace for mmap error
Diffstat (limited to 'src')
-rw-r--r--src/emu/x64int3.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/emu/x64int3.c b/src/emu/x64int3.c
index d58574c3..c602f61b 100644
--- a/src/emu/x64int3.c
+++ b/src/emu/x64int3.c
@@ -265,6 +265,7 @@ void x64Int3(x64emu_t* emu, uintptr_t* addr)
                 } else if (!strcmp(s, "mmap64") || !strcmp(s, "mmap")) {
                     snprintf(buff, 256, "%04d|%p: Calling %s(%p, %lu, 0x%x, 0x%x, %d, %ld)", tid, *(void**)(R_RSP), s, 
                         (void*)R_RDI, R_RSI, (int)(R_RDX), (int)R_RCX, (int)R_R8, R_R9);
+                    perr = 3;
                 } else if (!strcmp(s, "sscanf")) {
                     tmp = (char*)(R_RSI);
                     snprintf(buff, 256, "%04d|%p: Calling %s(%p, \"%s\" (,%p))", tid, *(void**)(R_RSP), s, (void*)R_RDI, (tmp)?tmp:"(nil)", (void*)(R_RDX));
@@ -309,6 +310,9 @@ void x64Int3(x64emu_t* emu, uintptr_t* addr)
                     snprintf(buff3, 64, " (errno=%d:\"%s\")", errno, strerror(errno));
                 else if(perr==2 && R_EAX==0)
                     snprintf(buff3, 64, " (errno=%d:\"%s\")", errno, strerror(errno));
+                else if(perr==3 && ((int64_t)R_RAX)==-1)
+                    snprintf(buff3, 64, " (errno=%d:\"%s\")", errno, strerror(errno));
+
                 if(cycle_log)
                     snprintf(buffret, 128, "0x%lX%s%s", R_RAX, buff2, buff3);
                 else {