[NTOS:KD] Merge KdpReport() with kd64 version
authorHervé Poussineau <hpoussin@reactos.org>
Sun, 8 Mar 2020 22:16:43 +0000 (23:16 +0100)
committerHervé Poussineau <hpoussin@reactos.org>
Mon, 16 Nov 2020 07:55:03 +0000 (08:55 +0100)
ntoskrnl/include/internal/kd64.h
ntoskrnl/kd/kdmain.c
ntoskrnl/kd64/kdapi.c
ntoskrnl/kd64/kdtrap.c

index 4802c9c..1806b2f 100644 (file)
@@ -281,6 +281,10 @@ NTAPI
 KdpReportExceptionStateChange(
     IN PEXCEPTION_RECORD ExceptionRecord,
     IN OUT PCONTEXT Context,
+#ifndef _WINKD_
+    IN PKTRAP_FRAME TrapFrame,
+    IN KPROCESSOR_MODE PreviousMode,
+#endif
     IN BOOLEAN SecondChanceException
 );
 
index 53df436..20b1991 100644 (file)
@@ -52,15 +52,13 @@ KdpReportLoadSymbolsStateChange(IN PSTRING PathName,
 
 BOOLEAN
 NTAPI
-KdpReport(IN PKTRAP_FRAME TrapFrame,
-          IN PKEXCEPTION_FRAME ExceptionFrame,
-          IN PEXCEPTION_RECORD ExceptionRecord,
-          IN PCONTEXT ContextRecord,
-          IN KPROCESSOR_MODE PreviousMode,
-          IN BOOLEAN SecondChanceException)
+KdpReportExceptionStateChange(IN PEXCEPTION_RECORD ExceptionRecord,
+                              IN OUT PCONTEXT ContextRecord,
+                              IN PKTRAP_FRAME TrapFrame,
+                              IN KPROCESSOR_MODE PreviousMode,
+                              IN BOOLEAN SecondChanceException)
 {
     KD_CONTINUE_TYPE Return = kdHandleException;
-
 #ifdef KDBG
     /* Check if this is an assertion failure */
     if (ExceptionRecord->ExceptionCode == STATUS_ASSERTION_FAILURE)
@@ -288,6 +286,9 @@ KdDebuggerInitialize1(
     /* Call the Wrapper Init Routine */
     if (WrapperInitRoutine)
         WrapperTable.KdpInitRoutine(&WrapperTable, 1);
+
+    NtGlobalFlag |= FLG_STOP_ON_EXCEPTION;
+
     return STATUS_SUCCESS;
 }
 
index 7e5b908..df8876b 100644 (file)
@@ -1728,13 +1728,13 @@ KdpReportCommandStringStateChange(IN PSTRING NameString,
 }
 #endif
 
+#ifdef _WINKD_
 BOOLEAN
 NTAPI
 KdpReportExceptionStateChange(IN PEXCEPTION_RECORD ExceptionRecord,
                               IN OUT PCONTEXT Context,
                               IN BOOLEAN SecondChanceException)
 {
-#ifdef _WINKD_
     STRING Header, Data;
     DBGKD_ANY_WAIT_STATE_CHANGE WaitStateChange;
     KCONTINUE_STATUS Status;
@@ -1782,11 +1782,8 @@ KdpReportExceptionStateChange(IN PEXCEPTION_RECORD ExceptionRecord,
 
     /* Return */
     return Status;
-#else
-    UNIMPLEMENTED;
-    return FALSE;
-#endif
 }
+#endif
 
 VOID
 NTAPI
@@ -1850,6 +1847,10 @@ KdpSwitchProcessor(IN PEXCEPTION_RECORD ExceptionRecord,
     /* Report a state change */
     Status = KdpReportExceptionStateChange(ExceptionRecord,
                                            ContextRecord,
+#ifndef _WINKD_
+                                           NULL,
+                                           KernelMode,
+#endif
                                            SecondChanceException);
 
     /* Restore the port data and return */
index 42a04fa..8f09895 100644 (file)
 
 /* FUNCTIONS *****************************************************************/
 
-#ifndef _WINKD_
-BOOLEAN
-NTAPI
-KdpReport(IN PKTRAP_FRAME TrapFrame,
-          IN PKEXCEPTION_FRAME ExceptionFrame,
-          IN PEXCEPTION_RECORD ExceptionRecord,
-          IN PCONTEXT ContextRecord,
-          IN KPROCESSOR_MODE PreviousMode,
-          IN BOOLEAN SecondChanceException);
-#else
 BOOLEAN
 NTAPI
 KdpReport(IN PKTRAP_FRAME TrapFrame,
@@ -126,6 +116,10 @@ KdpReport(IN PKTRAP_FRAME TrapFrame,
     Handled = KdpReportExceptionStateChange(ExceptionRecord,
                                             &Prcb->ProcessorState.
                                             ContextFrame,
+#ifndef _WINKD_
+                                            TrapFrame,
+                                            PreviousMode,
+#endif
                                             SecondChanceException);
 
     /* Now restore the processor state, manually again. */
@@ -139,7 +133,6 @@ KdpReport(IN PKTRAP_FRAME TrapFrame,
     KdpControlCPressed = FALSE;
     return Handled;
 }
-#endif
 
 BOOLEAN
 NTAPI