From 329b9fa2fb486ff17bc9d77aeac96982566780f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Sun, 8 Mar 2020 23:16:43 +0100 Subject: [PATCH] [NTOS:KD] Merge KdpReport() with kd64 version --- ntoskrnl/include/internal/kd64.h | 4 ++++ ntoskrnl/kd/kdmain.c | 15 ++++++++------- ntoskrnl/kd64/kdapi.c | 11 ++++++----- ntoskrnl/kd64/kdtrap.c | 15 ++++----------- 4 files changed, 22 insertions(+), 23 deletions(-) diff --git a/ntoskrnl/include/internal/kd64.h b/ntoskrnl/include/internal/kd64.h index 4802c9c9f60..1806b2fcd09 100644 --- a/ntoskrnl/include/internal/kd64.h +++ b/ntoskrnl/include/internal/kd64.h @@ -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 ); diff --git a/ntoskrnl/kd/kdmain.c b/ntoskrnl/kd/kdmain.c index 53df4366fdb..20b19911bc6 100644 --- a/ntoskrnl/kd/kdmain.c +++ b/ntoskrnl/kd/kdmain.c @@ -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; } diff --git a/ntoskrnl/kd64/kdapi.c b/ntoskrnl/kd64/kdapi.c index 7e5b908a1e4..df8876bc79a 100644 --- a/ntoskrnl/kd64/kdapi.c +++ b/ntoskrnl/kd64/kdapi.c @@ -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 */ diff --git a/ntoskrnl/kd64/kdtrap.c b/ntoskrnl/kd64/kdtrap.c index 42a04faa460..8f098952ee2 100644 --- a/ntoskrnl/kd64/kdtrap.c +++ b/ntoskrnl/kd64/kdtrap.c @@ -47,16 +47,6 @@ /* 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