about summary refs log tree commit diff stats
path: root/src/libtools
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-05-24 21:03:10 +0200
committerptitSeb <sebastien.chev@gmail.com>2023-05-24 21:03:10 +0200
commitd2547672f314d70470a2370ee8ff391a5c0b93d0 (patch)
tree8f65c2929a5be1576d74973d91908fa0025ceba0 /src/libtools
parent52d1a09b8a1516fac33bd55732d38fb181fef29a (diff)
downloadbox64-d2547672f314d70470a2370ee8ff391a5c0b93d0.tar.gz
box64-d2547672f314d70470a2370ee8ff391a5c0b93d0.zip
Added partial support for TF flags (should help with eroneous debugger detection under wine)
Diffstat (limited to 'src/libtools')
-rwxr-xr-xsrc/libtools/signals.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/libtools/signals.c b/src/libtools/signals.c
index f3da73a9..3ddb52f4 100755
--- a/src/libtools/signals.c
+++ b/src/libtools/signals.c
@@ -324,6 +324,8 @@ uint64_t RunFunctionHandler(int* exit, int dynarec, x64_ucontext_t* sigcontext,
     int oldquitonlongjmp = emu->quitonlongjmp;
     emu->quitonlongjmp = 2;
     
+    emu->eflags.x64 &= ~(1<<F_TF); // this one needs to cleared
+
     if(dynarec)
         DynaCall(emu, fnc);
     else
@@ -727,6 +729,8 @@ void my_sigactionhandler_oldcode(int32_t sig, int simple, siginfo_t* info, void
         sigcontext->uc_mcontext.gregs[X64_TRAPNO] = 19;
     else if(sig==SIGILL)
         sigcontext->uc_mcontext.gregs[X64_TRAPNO] = 6;
+    else if(sig==SIGTRAP)
+        sigcontext->uc_mcontext.gregs[X64_TRAPNO] = info->si_code;
     //TODO: SIGABRT generate what?
     // call the signal handler
     x64_ucontext_t sigcontext_copy = *sigcontext;