about summary refs log tree commit diff stats
path: root/src/libtools/signals.c
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-02-20 10:45:11 +0100
committerptitSeb <sebastien.chev@gmail.com>2025-02-20 10:45:11 +0100
commita252e87fa93041b4edc79b5168dec1cf8d91bcff (patch)
treeb03d741815bccc728eaea363dd30f40fb5831cd8 /src/libtools/signals.c
parentee3ee539e0841b566f30c6c22895a090a607b51d (diff)
downloadbox64-a252e87fa93041b4edc79b5168dec1cf8d91bcff.tar.gz
box64-a252e87fa93041b4edc79b5168dec1cf8d91bcff.zip
[BOX32][INTERP] Added some support for BOUND opcode ([ARM64_DYNAREC] too)
Diffstat (limited to 'src/libtools/signals.c')
-rw-r--r--src/libtools/signals.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/libtools/signals.c b/src/libtools/signals.c
index e87b1c34..b424cee0 100644
--- a/src/libtools/signals.c
+++ b/src/libtools/signals.c
@@ -1241,6 +1241,10 @@ void my_sigactionhandler_oldcode_64(x64emu_t* emu, int32_t sig, int simple, sigi
                 sigcontext->uc_mcontext.gregs[X64_TRAPNO] = 14;
                 if(!mmapped) info2->si_code = 1;
                 info2->si_errno = 0;
+            } else if (info->si_errno==0xb09d) {
+                sigcontext->uc_mcontext.gregs[X64_ERR] = 0;
+                sigcontext->uc_mcontext.gregs[X64_TRAPNO] = 5;
+                info2->si_errno = 0;
             }else {
                 sigcontext->uc_mcontext.gregs[X64_ERR] = 0x14|((sysmapped && !(real_prot&PROT_READ))?0:1);
                 sigcontext->uc_mcontext.gregs[X64_TRAPNO] = 14;
@@ -2088,6 +2092,9 @@ void emit_signal(x64emu_t* emu, int sig, void* addr, int code)
     } else if(sig==SIGSEGV && code==0xecec) {
         info.si_errno = 0xecec;
         info.si_code = SEGV_ACCERR;
+    } else if (sig==SIGSEGV && code==0xb09d) {
+        info.si_errno = 0xb09d;
+        info.si_code = 0;
     }
     info.si_addr = addr;
     const char* x64name = NULL;