Fix x64 compilation:
- Some KDBG symbols for win32k debugging are defined only in x86 platform when _WINKD_ is disabled.
- KdSetOwedBreakpoints is defined only if _WINKD_ is enabled, addendum for x64 to r68842.

svn path=/trunk/; revision=68848
This commit is contained in:
Hermès Bélusca-Maïto 2015-08-28 14:01:58 +00:00
parent 5ff109f0b3
commit a39b4f51b9
4 changed files with 20 additions and 13 deletions

View file

@ -354,7 +354,7 @@ extern ULONG Kd_WIN2000_Mask;
#endif
#if DBG
#if DBG && defined(_M_IX86) && !defined(_WINKD_) // See ke/i386/traphdlr.c
#define ID_Win32PreServiceHook 'WSH0'
#define ID_Win32PostServiceHook 'WSH1'
typedef void (NTAPI *PKDBG_PRESERVICEHOOK)(ULONG, PULONG_PTR);

View file

@ -26,8 +26,8 @@ VOID NTAPI PspDumpThreads(BOOLEAN SystemThreads);
typedef struct
{
ULONG ComponentId;
ULONG Level;
ULONG ComponentId;
ULONG Level;
} KD_COMPONENT_DATA;
#define MAX_KD_COMPONENT_TABLE_ENTRIES 128
KD_COMPONENT_DATA KdComponentTable[MAX_KD_COMPONENT_TABLE_ENTRIES];
@ -74,6 +74,7 @@ KdpServiceDispatcher(ULONG Service,
break;
}
#if defined(_M_IX86) && !defined(_WINKD_) // See ke/i386/traphdlr.c
/* Register a debug callback */
case 'CsoR':
{
@ -90,6 +91,7 @@ KdpServiceDispatcher(ULONG Service,
}
break;
}
#endif
/* Special case for stack frame dumps */
case 'DsoR':

View file

@ -15,7 +15,6 @@ EXTERN KiDispatchException:PROC
EXTERN FrLdrDbgPrint:DWORD
EXTERN KeBugCheckWithTf:PROC
EXTERN MmAccessFault:PROC
EXTERN KdSetOwedBreakpoints:PROC
EXTERN KiSystemFatalException:PROC
EXTERN KiNpxNotAvailableFaultHandler:PROC
EXTERN KiGeneralProtectionFaultHandler:PROC
@ -23,6 +22,11 @@ EXTERN KiXmmExceptionHandler:PROC
EXTERN KiDeliverApc:PROC
EXTERN KiDpcInterruptHandler:PROC
#ifdef _WINKD_
EXTERN KdSetOwedBreakpoints:PROC
#endif
/* GLOBALS *******************************************************************/
.data
@ -509,16 +513,19 @@ FUNC KiPageFault
/* Check for success */
test eax, eax
#ifndef _WINKD_
jge PageFaultReturn
#else
jl PageFaultError
/*
* We succeeded. Check whether the kernel debugger has
* owed breakpoints to be inserted, then return.
*/
/* Check whether the kernel debugger has owed breakpoints to be inserted */
call KdSetOwedBreakpoints
/* We succeeded, return */
jmp PageFaultReturn
PageFaultError:
#endif
/* Disable interrupts again for the debugger */
cli

View file

@ -49,7 +49,7 @@ UCHAR KiTrapIoTable[] =
};
PFAST_SYSTEM_CALL_EXIT KiFastCallExitHandler;
#if DBG && !defined(_WINKD_)
#if DBG && defined(_M_IX86) && !defined(_WINKD_)
PKDBG_PRESERVICEHOOK KeWin32PreServiceHook = NULL;
PKDBG_POSTSERVICEHOOK KeWin32PostServiceHook = NULL;
#endif
@ -1278,12 +1278,10 @@ KiTrap0EHandler(IN PKTRAP_FRAME TrapFrame)
if (NT_SUCCESS(Status))
{
#ifdef _WINKD_
/*
* We succeeded. Check whether the kernel debugger has
* owed breakpoints to be inserted, then return.
*/
/* Check whether the kernel debugger has owed breakpoints to be inserted */
KdSetOwedBreakpoints();
#endif
/* We succeeded, return */
KiEoiHelper(TrapFrame);
}