Add back some stuff that got lost in syncing

svn path=/branches/ros-amd64-bringup/; revision=43432
This commit is contained in:
Timo Kreuzer 2009-10-13 00:33:04 +00:00
parent 55f70cb149
commit c615edc822

View file

@ -179,7 +179,7 @@ KdpRestoreBreakPointEx(IN PDBGKD_MANIPULATE_STATE64 State,
VOID VOID
NTAPI NTAPI
DumpTraceData(IN PSTRING TraceData) DumpTraceData(OUT PSTRING TraceData)
{ {
/* Update the buffer */ /* Update the buffer */
TraceDataBuffer[0] = TraceDataBufferPosition; TraceDataBuffer[0] = TraceDataBufferPosition;
@ -196,7 +196,7 @@ VOID
NTAPI NTAPI
KdpSetCommonState(IN ULONG NewState, KdpSetCommonState(IN ULONG NewState,
IN PCONTEXT Context, IN PCONTEXT Context,
IN PDBGKD_WAIT_STATE_CHANGE64 WaitStateChange) OUT PDBGKD_WAIT_STATE_CHANGE64 WaitStateChange)
{ {
USHORT InstructionCount; USHORT InstructionCount;
BOOLEAN HadBreakpoints; BOOLEAN HadBreakpoints;
@ -267,6 +267,7 @@ KdpReadVirtualMemory(IN PDBGKD_MANIPULATE_STATE64 State,
STRING Header; STRING Header;
ULONG Length = State->u.ReadMemory.TransferCount; ULONG Length = State->u.ReadMemory.TransferCount;
NTSTATUS Status = STATUS_SUCCESS; NTSTATUS Status = STATUS_SUCCESS;
ULONG64 TargetBaseAddress = State->u.ReadMemory.TargetBaseAddress;
/* Validate length */ /* Validate length */
if (Length > (PACKET_MAX_SIZE - sizeof(DBGKD_MANIPULATE_STATE64))) if (Length > (PACKET_MAX_SIZE - sizeof(DBGKD_MANIPULATE_STATE64)))
@ -284,7 +285,15 @@ KdpReadVirtualMemory(IN PDBGKD_MANIPULATE_STATE64 State,
} }
#endif #endif
if (!State->u.ReadMemory.TargetBaseAddress) // HACK for x64, until KD stops sending bogus addresses to WinDbg
if (TargetBaseAddress < (ULONG_PTR)MM_LOWEST_SYSTEM_ADDRESS)
{
FrLdrDbgPrint("Trying to read memory at 0x%p\n", TargetBaseAddress);
// DPRINT1("Trying to read memory at 0x%p\n", TargetBaseAddress);
TargetBaseAddress = 0;
}
if (!TargetBaseAddress)
{ {
Length = 0; Length = 0;
Status = STATUS_UNSUCCESSFUL; Status = STATUS_UNSUCCESSFUL;
@ -1245,7 +1254,7 @@ KdpReportExceptionStateChange(IN PEXCEPTION_RECORD ExceptionRecord,
KdpSetContextState(&WaitStateChange, Context); KdpSetContextState(&WaitStateChange, Context);
/* Setup the actual header to send to KD */ /* Setup the actual header to send to KD */
Header.Length = sizeof(DBGKD_WAIT_STATE_CHANGE64); Header.Length = sizeof(DBGKD_WAIT_STATE_CHANGE64) - sizeof(CONTEXT);
Header.Buffer = (PCHAR)&WaitStateChange; Header.Buffer = (PCHAR)&WaitStateChange;
/* Setup the trace data */ /* Setup the trace data */