about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/libtools/signal32.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/libtools/signal32.c b/src/libtools/signal32.c
index 11dd55e6..cd5f054d 100644
--- a/src/libtools/signal32.c
+++ b/src/libtools/signal32.c
@@ -467,7 +467,7 @@ void convert_siginfo_to_32(void* d, void* s, int sig)
 
     memcpy(dst, src, sizeof(my_siginfo32_t));
     if(sig==X64_SIGILL || sig==X64_SIGFPE || sig==X64_SIGSEGV || sig==X64_SIGBUS)
-        dst->_sifields._sigfault.__si_addr = to_ptrv(src->si_addr);
+        dst->_sifields._sigfault.__si_addr = to_ptr(((uintptr_t)src->si_addr)&0xffffffff);  // in case addr is not a 32bits value...
     if(sig==X64_SIGCHLD) {
         dst->_sifields._sigchld.__si_pid = src->si_pid;
         dst->_sifields._sigchld.__si_uid = src->si_uid;
@@ -494,7 +494,7 @@ void my_sigactionhandler_oldcode_32(x64emu_t* emu, int32_t sig, int simple, sigi
     // get that actual ESP first!
     if(!emu)
         emu = thread_get_emu();
-    uintptr_t frame = R_RSP;
+    uintptr_t frame = R_ESP;
 #if defined(DYNAREC)
     dynablock_t* db = (dynablock_t*)cur_db;//FindDynablockFromNativeAddress(pc);
     ucontext_t *p = (ucontext_t *)ucntx;