diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2025-02-20 10:45:11 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2025-02-20 10:45:11 +0100 |
| commit | a252e87fa93041b4edc79b5168dec1cf8d91bcff (patch) | |
| tree | b03d741815bccc728eaea363dd30f40fb5831cd8 /src/libtools/signals.c | |
| parent | ee3ee539e0841b566f30c6c22895a090a607b51d (diff) | |
| download | box64-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.c | 7 |
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; |