diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-09-08 15:06:54 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-09-08 15:06:54 +0200 |
| commit | a9f96b9d622a8d8462957d9d42b05d3574f6ba75 (patch) | |
| tree | c4a5d050622d53372e0a6ba1f40222d2c197748f /src | |
| parent | 8f855f5ddeb4de303085757b7c417b66665e1c3e (diff) | |
| download | box64-a9f96b9d622a8d8462957d9d42b05d3574f6ba75.tar.gz box64-a9f96b9d622a8d8462957d9d42b05d3574f6ba75.zip | |
Show x86opcode at segfault if segfault address is not pc
Diffstat (limited to 'src')
| -rw-r--r-- | src/libtools/signals.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/libtools/signals.c b/src/libtools/signals.c index bb58efee..c7111ec1 100644 --- a/src/libtools/signals.c +++ b/src/libtools/signals.c @@ -1848,7 +1848,7 @@ dynarec_log(/*LOG_DEBUG*/LOG_INFO, "Repeated SIGSEGV with Access error on %p for } if(sig==SIGILL) { printf_log(log_minimum, " opcode=%02X %02X %02X %02X %02X %02X %02X %02X (%02X %02X %02X %02X %02X)\n", ((uint8_t*)pc)[0], ((uint8_t*)pc)[1], ((uint8_t*)pc)[2], ((uint8_t*)pc)[3], ((uint8_t*)pc)[4], ((uint8_t*)pc)[5], ((uint8_t*)pc)[6], ((uint8_t*)pc)[7], ((uint8_t*)x64pc)[0], ((uint8_t*)x64pc)[1], ((uint8_t*)x64pc)[2], ((uint8_t*)x64pc)[3], ((uint8_t*)x64pc)[4]); - } else if(sig==SIGBUS) { + } else if(sig==SIGBUS || (sig==SIGSEGV && (x64pc!=(uintptr_t)addr) && (pc!=addr))) { printf_log(log_minimum, " x86opcode=%02X %02X %02X %02X %02X %02X %02X %02X (opcode=%08x)\n", ((uint8_t*)x64pc)[0], ((uint8_t*)x64pc)[1], ((uint8_t*)x64pc)[2], ((uint8_t*)x64pc)[3], ((uint8_t*)x64pc)[4], ((uint8_t*)x64pc)[5], ((uint8_t*)x64pc)[6], ((uint8_t*)x64pc)[7], *(uint32_t*)pc); } else { printf_log(log_minimum, "\n"); |