Author: fireball Date: Wed Jun 11 06:34:04 2008 New Revision: 33929
URL: http://svn.reactos.org/svn/reactos?rev=33929&view=rev Log: - Unregress KDBG: It has to increment EIP in case of STATUS_BREAKPOINT to skip over the current instruction, but now do it inside KDBG's exception handler. - In Kd and GDB exception handler wrappers, return FALSE if kdDoNotHandleException, and return TRUE otherwise (kdHandled / kdContinue). After my previous commit these functions were always returning FALSE / exception not handled.
Modified: trunk/reactos/ntoskrnl/kd/kdmain.c trunk/reactos/ntoskrnl/kdbg/kdb.c
Modified: trunk/reactos/ntoskrnl/kd/kdmain.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/kd/kdmain.c?rev=33... ============================================================================== --- trunk/reactos/ntoskrnl/kd/kdmain.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/kd/kdmain.c [iso-8859-1] Wed Jun 11 06:34:04 2008 @@ -167,7 +167,7 @@
/* Convert return to BOOLEAN */ if (Return == kdDoNotHandleException) return FALSE; - return FALSE; + return TRUE; }
BOOLEAN @@ -196,7 +196,7 @@
/* Convert return to BOOLEAN */ if (Return == kdDoNotHandleException) return FALSE; - return FALSE; + return TRUE; }
/* PUBLIC FUNCTIONS *********************************************************/
Modified: trunk/reactos/ntoskrnl/kdbg/kdb.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/kdbg/kdb.c?rev=339... ============================================================================== --- trunk/reactos/ntoskrnl/kdbg/kdb.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/kdbg/kdb.c [iso-8859-1] Wed Jun 11 06:34:04 2008 @@ -1269,7 +1269,7 @@ * * \param ExceptionRecord Unused. * \param PreviousMode UserMode if the exception was raised from umode, otherwise KernelMode. - * \param Context Unused. + * \param Context Context, IN/OUT parameter. * \param TrapFrame Exception TrapFrame. * \param FirstChance TRUE when called before exception frames were serached, * FALSE for the second call. @@ -1280,7 +1280,7 @@ KdbEnterDebuggerException( IN PEXCEPTION_RECORD ExceptionRecord OPTIONAL, IN KPROCESSOR_MODE PreviousMode, - IN PCONTEXT Context OPTIONAL, + IN PCONTEXT Context, IN OUT PKTRAP_FRAME TrapFrame, IN BOOLEAN FirstChance) { @@ -1324,12 +1324,6 @@
if (ExceptionCode == STATUS_BREAKPOINT) { - /* - * The breakpoint will point to the next instruction by default so - * point it back to the start of original instruction. - */ - //TrapFrame->Eip--; - /* * ... and restore the original instruction. */ @@ -1618,6 +1612,8 @@ /* Clear dr6 status flags. */ TrapFrame->Dr6 &= ~0x0000e00f;
+ /* Skip the current instruction */ + Context->Eip++; }
return ContinueType;