ctrl-c on debugger

Eric Pouech pouech-eric at wanadoo.fr
Sat May 24 14:41:27 CDT 2003


Ctrl-C on debugger console was no longer working because the i386 signal 
handler had been changed to generate EXCEPTION_SINGLE_STEP exception 
after DebugBreakProcess, whereas Win32 API requires an EXCEPTION_BREAKPOINT
this patch takes care of this (and ctrl-c on debugger reworked again)

A+
-- 
Eric Pouech
-------------- next part --------------
Name:          sig386
ChangeLog:     correctly convert into EXCEPTION_RECORD SIGTRAPs received from DebugBreakProcess
License:       X11
GenDate:       2003/05/24 19:39:11 UTC
ModifiedFiles: dlls/ntdll/signal_i386.c
===================================================================
RCS file: /home/cvs/cvsroot/wine/wine/dlls/ntdll/signal_i386.c,v
retrieving revision 1.61
diff -u -u -r1.61 signal_i386.c
--- dlls/ntdll/signal_i386.c	14 May 2003 19:41:17 -0000	1.61
+++ dlls/ntdll/signal_i386.c	24 May 2003 09:48:01 -0000
@@ -842,6 +842,12 @@
         {
             context->ContextFlags = CONTEXT_DEBUG_REGISTERS;
             NtGetContextThread(GetCurrentThread(), context);
+            /* do we really have a bp from a debug register ?
+             * if not, then someone did a kill(SIGTRAP) on us, and we
+             * shall return a breakpoint, not a single step exception
+             */
+            if (!(context->Dr6 & 0xf))
+                rec.ExceptionCode = EXCEPTION_BREAKPOINT;
         }
         break;
     case T_BPTFLT:   /* Breakpoint exception */


More information about the wine-patches mailing list