From 622baec9529bb261cd250c2c2b9768b75ee0530f Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Mon, 7 Mar 2022 14:14:07 +0100 Subject: Fix some special case on mmap64 wrapping --- src/libtools/signals.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'src/libtools') diff --git a/src/libtools/signals.c b/src/libtools/signals.c index a98b570a..e0410b1c 100755 --- a/src/libtools/signals.c +++ b/src/libtools/signals.c @@ -505,7 +505,7 @@ void my_sigactionhandler_oldcode(int32_t sig, int simple, siginfo_t* info, void sigcontext->uc_mcontext.gregs[X64_RBP] = R_RBP; sigcontext->uc_mcontext.gregs[X64_RSP] = R_RSP; sigcontext->uc_mcontext.gregs[X64_RBX] = R_RBX; - sigcontext->uc_mcontext.gregs[X64_RIP] = R_RIP;//emu->old_ip; // old_ip should be more accurate as the "current" IP, but it's not always up-to-date + sigcontext->uc_mcontext.gregs[X64_RIP] = emu->old_ip; // flags sigcontext->uc_mcontext.gregs[X64_EFL] = emu->eflags.x64; // get segments @@ -934,10 +934,7 @@ exit(-1); const char* x64name = NULL; const char* elfname = NULL; x64emu_t* emu = thread_get_emu(); - // Adjust RIP for special case of NULL function run - if(sig==SIGSEGV && R_RIP==0x1 && (uintptr_t)info->si_addr==0x0) - R_RIP = 0x0; - x64pc = R_RIP; + x64pc = emu->old_ip; rsp = (void*)R_RSP; #if defined(DYNAREC) #if defined(ARM64) -- cgit 1.4.1