diff --git a/rtl/linux/i386/sighnd.inc b/rtl/linux/i386/sighnd.inc index 779c4d653f..64b441ebd7 100644 --- a/rtl/linux/i386/sighnd.inc +++ b/rtl/linux/i386/sighnd.inc @@ -79,6 +79,11 @@ begin reenable_signal(sig); { give runtime error at the position where the signal was raised } if res<>0 then - HandleErrorAddrFrame(res,pointer(UContext^.uc_mcontext.eip),pointer(UContext^.uc_mcontext.ebp)); + begin + ucontext^.uc_mcontext.eax := res; + ucontext^.uc_mcontext.edx := ucontext^.uc_mcontext.eip; + ucontext^.uc_mcontext.ecx := ucontext^.uc_mcontext.ebp; + ucontext^.uc_mcontext.eip := ptruint(@HandleErrorAddrFrame); + end; end;