xref: /qemu/contrib/elf2dmp/kdbg.h (revision abff1abf)
1 /*
2  * Copyright (c) 2018 Virtuozzo International GmbH
3  *
4  * This work is licensed under the terms of the GNU GPL, version 2 or later.
5  *
6  */
7 
8 #ifndef KDBG_H
9 #define KDBG_H
10 
11 typedef struct DBGKD_GET_VERSION64 {
12     uint16_t  MajorVersion;
13     uint16_t  MinorVersion;
14     uint8_t   ProtocolVersion;
15     uint8_t   KdSecondaryVersion;
16     uint16_t  Flags;
17     uint16_t  MachineType;
18     uint8_t   MaxPacketType;
19     uint8_t   MaxStateChange;
20     uint8_t   MaxManipulate;
21     uint8_t   Simulation;
22     uint16_t  Unused[1];
23     uint64_t KernBase;
24     uint64_t PsLoadedModuleList;
25     uint64_t DebuggerDataList;
26 } DBGKD_GET_VERSION64;
27 
28 #ifndef _WIN32
29 typedef struct LIST_ENTRY64 {
30     struct LIST_ENTRY64 *Flink;
31     struct LIST_ENTRY64 *Blink;
32 } LIST_ENTRY64;
33 #endif
34 
35 typedef struct DBGKD_DEBUG_DATA_HEADER64 {
36     LIST_ENTRY64    List;
37     uint32_t           OwnerTag;
38     uint32_t           Size;
39 } DBGKD_DEBUG_DATA_HEADER64;
40 
41 typedef struct KDDEBUGGER_DATA64 {
42     DBGKD_DEBUG_DATA_HEADER64 Header;
43 
44     uint64_t KernBase;
45     uint64_t BreakpointWithStatus;
46     uint64_t SavedContext;
47     uint16_t ThCallbackStack;
48     uint16_t NextCallback;
49     uint16_t FramePointer;
50     uint16_t PaeEnabled:1;
51     uint64_t KiCallUserMode;
52     uint64_t KeUserCallbackDispatcher;
53     uint64_t PsLoadedModuleList;
54     uint64_t PsActiveProcessHead;
55     uint64_t PspCidTable;
56     uint64_t ExpSystemResourcesList;
57     uint64_t ExpPagedPoolDescriptor;
58     uint64_t ExpNumberOfPagedPools;
59     uint64_t KeTimeIncrement;
60     uint64_t KeBugCheckCallbackListHead;
61     uint64_t KiBugcheckData;
62     uint64_t IopErrorLogListHead;
63     uint64_t ObpRootDirectoryObject;
64     uint64_t ObpTypeObjectType;
65     uint64_t MmSystemCacheStart;
66     uint64_t MmSystemCacheEnd;
67     uint64_t MmSystemCacheWs;
68     uint64_t MmPfnDatabase;
69     uint64_t MmSystemPtesStart;
70     uint64_t MmSystemPtesEnd;
71     uint64_t MmSubsectionBase;
72     uint64_t MmNumberOfPagingFiles;
73     uint64_t MmLowestPhysicalPage;
74     uint64_t MmHighestPhysicalPage;
75     uint64_t MmNumberOfPhysicalPages;
76     uint64_t MmMaximumNonPagedPoolInBytes;
77     uint64_t MmNonPagedSystemStart;
78     uint64_t MmNonPagedPoolStart;
79     uint64_t MmNonPagedPoolEnd;
80     uint64_t MmPagedPoolStart;
81     uint64_t MmPagedPoolEnd;
82     uint64_t MmPagedPoolInformation;
83     uint64_t MmPageSize;
84     uint64_t MmSizeOfPagedPoolInBytes;
85     uint64_t MmTotalCommitLimit;
86     uint64_t MmTotalCommittedPages;
87     uint64_t MmSharedCommit;
88     uint64_t MmDriverCommit;
89     uint64_t MmProcessCommit;
90     uint64_t MmPagedPoolCommit;
91     uint64_t MmExtendedCommit;
92     uint64_t MmZeroedPageListHead;
93     uint64_t MmFreePageListHead;
94     uint64_t MmStandbyPageListHead;
95     uint64_t MmModifiedPageListHead;
96     uint64_t MmModifiedNoWritePageListHead;
97     uint64_t MmAvailablePages;
98     uint64_t MmResidentAvailablePages;
99     uint64_t PoolTrackTable;
100     uint64_t NonPagedPoolDescriptor;
101     uint64_t MmHighestUserAddress;
102     uint64_t MmSystemRangeStart;
103     uint64_t MmUserProbeAddress;
104     uint64_t KdPrintCircularBuffer;
105     uint64_t KdPrintCircularBufferEnd;
106     uint64_t KdPrintWritePointer;
107     uint64_t KdPrintRolloverCount;
108     uint64_t MmLoadedUserImageList;
109 
110     /* NT 5.1 Addition */
111 
112     uint64_t NtBuildLab;
113     uint64_t KiNormalSystemCall;
114 
115     /* NT 5.0 hotfix addition */
116 
117     uint64_t KiProcessorBlock;
118     uint64_t MmUnloadedDrivers;
119     uint64_t MmLastUnloadedDriver;
120     uint64_t MmTriageActionTaken;
121     uint64_t MmSpecialPoolTag;
122     uint64_t KernelVerifier;
123     uint64_t MmVerifierData;
124     uint64_t MmAllocatedNonPagedPool;
125     uint64_t MmPeakCommitment;
126     uint64_t MmTotalCommitLimitMaximum;
127     uint64_t CmNtCSDVersion;
128 
129     /* NT 5.1 Addition */
130 
131     uint64_t MmPhysicalMemoryBlock;
132     uint64_t MmSessionBase;
133     uint64_t MmSessionSize;
134     uint64_t MmSystemParentTablePage;
135 
136     /* Server 2003 addition */
137 
138     uint64_t MmVirtualTranslationBase;
139     uint16_t OffsetKThreadNextProcessor;
140     uint16_t OffsetKThreadTeb;
141     uint16_t OffsetKThreadKernelStack;
142     uint16_t OffsetKThreadInitialStack;
143     uint16_t OffsetKThreadApcProcess;
144     uint16_t OffsetKThreadState;
145     uint16_t OffsetKThreadBStore;
146     uint16_t OffsetKThreadBStoreLimit;
147     uint16_t SizeEProcess;
148     uint16_t OffsetEprocessPeb;
149     uint16_t OffsetEprocessParentCID;
150     uint16_t OffsetEprocessDirectoryTableBase;
151     uint16_t SizePrcb;
152     uint16_t OffsetPrcbDpcRoutine;
153     uint16_t OffsetPrcbCurrentThread;
154     uint16_t OffsetPrcbMhz;
155     uint16_t OffsetPrcbCpuType;
156     uint16_t OffsetPrcbVendorString;
157     uint16_t OffsetPrcbProcStateContext;
158     uint16_t OffsetPrcbNumber;
159     uint16_t SizeEThread;
160     uint64_t KdPrintCircularBufferPtr;
161     uint64_t KdPrintBufferSize;
162     uint64_t KeLoaderBlock;
163     uint16_t SizePcr;
164     uint16_t OffsetPcrSelfPcr;
165     uint16_t OffsetPcrCurrentPrcb;
166     uint16_t OffsetPcrContainedPrcb;
167     uint16_t OffsetPcrInitialBStore;
168     uint16_t OffsetPcrBStoreLimit;
169     uint16_t OffsetPcrInitialStack;
170     uint16_t OffsetPcrStackLimit;
171     uint16_t OffsetPrcbPcrPage;
172     uint16_t OffsetPrcbProcStateSpecialReg;
173     uint16_t GdtR0Code;
174     uint16_t GdtR0Data;
175     uint16_t GdtR0Pcr;
176     uint16_t GdtR3Code;
177     uint16_t GdtR3Data;
178     uint16_t GdtR3Teb;
179     uint16_t GdtLdt;
180     uint16_t GdtTss;
181     uint16_t Gdt64R3CmCode;
182     uint16_t Gdt64R3CmTeb;
183     uint64_t IopNumTriageDumpDataBlocks;
184     uint64_t IopTriageDumpDataBlocks;
185 
186     /* Longhorn addition */
187 
188     uint64_t VfCrashDataBlock;
189     uint64_t MmBadPagesDetected;
190     uint64_t MmZeroedPageSingleBitErrorsDetected;
191 
192     /* Windows 7 addition */
193 
194     uint64_t EtwpDebuggerData;
195     uint16_t OffsetPrcbContext;
196 } KDDEBUGGER_DATA64;
197 
198 #endif /* KDBG_H */
199