VirtualBox

source: vbox/trunk/src/VBox/Debugger/testcase/tstDBGCStubs.cpp@ 48935

Last change on this file since 48935 was 48696, checked in by vboxsync, 11 years ago

DBGC: Added unload command as well as loadimage32 and loadimage64 for mac os x and efi debugging.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 11.7 KB
Line 
1/* $Id: tstDBGCStubs.cpp 48696 2013-09-26 00:22:48Z vboxsync $ */
2/** @file
3 * DBGC Testcase - Command Parser, VMM Stub Functions.
4 */
5
6/*
7 * Copyright (C) 2006-2013 Oracle Corporation
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 */
17
18#include <VBox/err.h>
19#include <VBox/vmm/vm.h>
20#include <iprt/string.h>
21
22
23
24#include <VBox/vmm/dbgf.h>
25VMMR3DECL(PDBGFADDRESS) DBGFR3AddrFromFlat(PUVM pUVM, PDBGFADDRESS pAddress, RTGCUINTPTR FlatPtr)
26{
27 return NULL;
28}
29
30VMMR3DECL(int) DBGFR3AddrFromSelOff(PUVM pUVM, VMCPUID idCpu, PDBGFADDRESS pAddress, RTSEL Sel, RTUINTPTR off)
31{
32 /* bad:bad -> provke error during parsing. */
33 if (Sel == 0xbad && off == 0xbad)
34 return VERR_OUT_OF_SELECTOR_BOUNDS;
35
36 /* real mode conversion. */
37 pAddress->FlatPtr = (uint32_t)(Sel << 4) | off;
38 pAddress->fFlags |= DBGFADDRESS_FLAGS_FLAT;
39 pAddress->Sel = DBGF_SEL_FLAT;
40 pAddress->off = pAddress->FlatPtr;
41 return VINF_SUCCESS;
42}
43
44VMMR3DECL(int) DBGFR3AddrToPhys(PUVM pUVM, VMCPUID idCpu, PDBGFADDRESS pAddress, PRTGCPHYS pGCPhys)
45{
46 return VERR_INTERNAL_ERROR;
47}
48
49VMMR3DECL(int) DBGFR3Attach(PUVM pUVM)
50{
51 return VERR_INTERNAL_ERROR;
52}
53
54VMMR3DECL(int) DBGFR3BpClear(PUVM pUVM, RTUINT iBp)
55{
56 return VERR_INTERNAL_ERROR;
57}
58VMMR3DECL(int) DBGFR3BpDisable(PUVM pUVM, RTUINT iBp)
59{
60 return VERR_INTERNAL_ERROR;
61}
62VMMR3DECL(int) DBGFR3BpEnable(PUVM pUVM, RTUINT iBp)
63{
64 return VERR_INTERNAL_ERROR;
65}
66VMMR3DECL(int) DBGFR3BpEnum(PUVM pUVM, PFNDBGFBPENUM pfnCallback, void *pvUser)
67{
68 return VERR_INTERNAL_ERROR;
69}
70VMMR3DECL(int) DBGFR3BpSet(PUVM pUVM, PCDBGFADDRESS pAddress, uint64_t iHitTrigger, uint64_t iHitDisable, PRTUINT piBp)
71{
72 return VERR_INTERNAL_ERROR;
73}
74VMMR3DECL(int) DBGFR3BpSetReg(PUVM pUVM, PCDBGFADDRESS pAddress, uint64_t iHitTrigger, uint64_t iHitDisable,
75 uint8_t fType, uint8_t cb, PRTUINT piBp)
76{
77 return VERR_INTERNAL_ERROR;
78}
79VMMR3DECL(int) DBGFR3BpSetREM(PUVM pUVM, PCDBGFADDRESS pAddress, uint64_t iHitTrigger, uint64_t iHitDisable, PRTUINT piBp)
80{
81 return VERR_INTERNAL_ERROR;
82}
83VMMR3DECL(int) DBGFR3QueryWaitable(PUVM pUVM)
84{
85 return VINF_SUCCESS;
86}
87VMMR3DECL(int) DBGFR3Detach(PUVM pUVM)
88{
89 return VERR_INTERNAL_ERROR;
90}
91VMMR3DECL(int) DBGFR3DisasInstrEx(PUVM pUVM, VMCPUID idCpu, RTSEL Sel, RTGCPTR GCPtr, uint32_t fFlags,
92 char *pszOutput, uint32_t cchOutput, uint32_t *pcbInstr)
93{
94 return VERR_INTERNAL_ERROR;
95}
96VMMR3DECL(int) DBGFR3EventWait(PUVM pUVM, RTMSINTERVAL cMillies, PCDBGFEVENT *ppEvent)
97{
98 return VERR_INTERNAL_ERROR;
99}
100VMMR3DECL(int) DBGFR3Halt(PUVM pUVM)
101{
102 return VERR_INTERNAL_ERROR;
103}
104VMMR3DECL(int) DBGFR3Info(PUVM pUVM, const char *pszName, const char *pszArgs, PCDBGFINFOHLP pHlp)
105{
106 return VERR_INTERNAL_ERROR;
107}
108VMMR3DECL(int) DBGFR3InfoEx(PUVM pUVM, VMCPUID idCpu, const char *pszName, const char *pszArgs, PCDBGFINFOHLP pHlp)
109{
110 return VERR_INTERNAL_ERROR;
111}
112VMMR3DECL(bool) DBGFR3IsHalted(PUVM pUVM)
113{
114 return true;
115}
116VMMR3DECL(int) DBGFR3LogModifyDestinations(PUVM pUVM, const char *pszDestSettings)
117{
118 return VERR_INTERNAL_ERROR;
119}
120VMMR3DECL(int) DBGFR3LogModifyFlags(PUVM pUVM, const char *pszFlagSettings)
121{
122 return VERR_INTERNAL_ERROR;
123}
124VMMR3DECL(int) DBGFR3LogModifyGroups(PUVM pUVM, const char *pszGroupSettings)
125{
126 return VERR_INTERNAL_ERROR;
127}
128VMMR3DECL(RTDBGCFG) DBGFR3AsGetConfig(PUVM pUVM)
129{
130 return NIL_RTDBGCFG;
131}
132VMMR3DECL(int) DBGFR3AsLoadImage(PUVM pUVM, RTDBGAS hAS, const char *pszFilename, const char *pszModName, RTLDRARCH enmArch,
133 PCDBGFADDRESS pModAddress, RTDBGSEGIDX iModSeg, uint32_t fFlags)
134{
135 return VERR_INTERNAL_ERROR;
136}
137VMMR3DECL(int) DBGFR3AsLoadMap(PUVM pUVM, RTDBGAS hAS, const char *pszFilename, const char *pszModName, PCDBGFADDRESS pModAddress, RTDBGSEGIDX iModSeg, RTGCUINTPTR uSubtrahend, uint32_t fFlags)
138{
139 return VERR_INTERNAL_ERROR;
140}
141VMMR3DECL(int) DBGFR3AsUnlinkModuleByName(PUVM pUVM, RTDBGAS hDbgAs, const char *pszModName)
142{
143 return VERR_INTERNAL_ERROR;
144}
145VMMR3DECL(RTDBGAS) DBGFR3AsResolveAndRetain(PUVM pUVM, RTDBGAS hAlias)
146{
147 return NIL_RTDBGAS;
148}
149VMMR3DECL(int) DBGFR3AsLineByAddr(PUVM pUVM, RTDBGAS hDbgAs, PCDBGFADDRESS pAddress,
150 PRTGCINTPTR poffDisp, PRTDBGLINE pLine, PRTDBGMOD phMod)
151{
152 return VERR_DBG_LINE_NOT_FOUND;
153}
154VMMR3DECL(int) DBGFR3Resume(PUVM pUVM)
155{
156 return VERR_INTERNAL_ERROR;
157}
158VMMR3DECL(int) DBGFR3StackWalkBegin(PUVM pUVM, VMCPUID idCpu, DBGFCODETYPE enmCodeType, PCDBGFSTACKFRAME *ppFirstFrame)
159{
160 return VERR_INTERNAL_ERROR;
161}
162VMMR3DECL(PCDBGFSTACKFRAME) DBGFR3StackWalkNext(PCDBGFSTACKFRAME pCurrent)
163{
164 return NULL;
165}
166VMMR3DECL(void) DBGFR3StackWalkEnd(PCDBGFSTACKFRAME pFirstFrame)
167{
168}
169VMMR3DECL(int) DBGFR3Step(PUVM pUVM, VMCPUID idCpu)
170{
171 return VERR_INTERNAL_ERROR;
172}
173VMMR3DECL(int) DBGFR3AsSymbolByAddr(PUVM pUVM, RTDBGAS hDbgAs, PCDBGFADDRESS pAddress, uint32_t fFlags, PRTGCINTPTR poffDisplacement, PRTDBGSYMBOL pSymbol, PRTDBGMOD phMod)
174{
175 return VERR_INTERNAL_ERROR;
176}
177VMMR3DECL(int) DBGFR3AsSymbolByName(PUVM pUVM, RTDBGAS hDbgAs, const char *pszSymbol, PRTDBGSYMBOL pSymbol, PRTDBGMOD phMod)
178{
179 return VERR_INTERNAL_ERROR;
180}
181VMMR3DECL(int) DBGFR3MemScan(PUVM pUVM, VMCPUID idCpu, PCDBGFADDRESS pAddress, RTGCUINTPTR cbRange, RTGCUINTPTR uAlign, const void *pabNeedle, size_t cbNeedle, PDBGFADDRESS pHitAddress)
182{
183 return VERR_INTERNAL_ERROR;
184}
185VMMR3DECL(int) DBGFR3MemRead(PUVM pUVM, VMCPUID idCpu, PCDBGFADDRESS pAddress, void *pvBuf, size_t cbRead)
186{
187 return VERR_INTERNAL_ERROR;
188}
189VMMR3DECL(int) DBGFR3MemReadString(PUVM pUVM, VMCPUID idCpu, PCDBGFADDRESS pAddress, char *pszBuf, size_t cchBuf)
190{
191 return VERR_INTERNAL_ERROR;
192}
193VMMR3DECL(int) DBGFR3MemWrite(PUVM pUVM, VMCPUID idCpu, PCDBGFADDRESS pAddress, const void *pvBuf, size_t cbRead)
194{
195 return VERR_INTERNAL_ERROR;
196}
197VMMDECL(int) DBGFR3PagingDumpEx(PUVM pUVM, VMCPUID idCpu, uint32_t fFlags, uint64_t cr3, uint64_t u64FirstAddr,
198 uint64_t u64LastAddr, uint32_t cMaxDepth, PCDBGFINFOHLP pHlp)
199{
200 return VERR_INTERNAL_ERROR;
201}
202VMMR3DECL(int) DBGFR3RegNmValidate(PUVM pUVM, VMCPUID idDefCpu, const char *pszReg)
203{
204 if ( !strcmp(pszReg, "ah")
205 || !strcmp(pszReg, "ax")
206 || !strcmp(pszReg, "eax")
207 || !strcmp(pszReg, "rax"))
208 return VINF_SUCCESS;
209 return VERR_DBGF_REGISTER_NOT_FOUND;
210}
211VMMR3DECL(int) DBGFR3RegCpuQueryU8( PUVM pUVM, VMCPUID idCpu, DBGFREG enmReg, uint8_t *pu8)
212{
213 return VERR_INTERNAL_ERROR;
214}
215VMMR3DECL(int) DBGFR3RegCpuQueryU16( PUVM pUVM, VMCPUID idCpu, DBGFREG enmReg, uint16_t *pu16)
216{
217 return VERR_INTERNAL_ERROR;
218}
219VMMR3DECL(int) DBGFR3RegCpuQueryU32( PUVM pUVM, VMCPUID idCpu, DBGFREG enmReg, uint32_t *pu32)
220{
221 return VERR_INTERNAL_ERROR;
222}
223VMMR3DECL(int) DBGFR3RegCpuQueryU64( PUVM pUVM, VMCPUID idCpu, DBGFREG enmReg, uint64_t *pu64)
224{
225 return VERR_INTERNAL_ERROR;
226}
227VMMR3DECL(int) DBGFR3RegNmQuery(PUVM pUVM, VMCPUID idDefCpu, const char *pszReg, PDBGFREGVAL pValue, PDBGFREGVALTYPE penmType)
228{
229 if (idDefCpu == 0 || idDefCpu == DBGFREG_HYPER_VMCPUID)
230 {
231 if (!strcmp(pszReg, "ah"))
232 {
233 pValue->u16 = 0xf0;
234 *penmType = DBGFREGVALTYPE_U8;
235 return VINF_SUCCESS;
236 }
237 if (!strcmp(pszReg, "ax"))
238 {
239 pValue->u16 = 0xbabe;
240 *penmType = DBGFREGVALTYPE_U16;
241 return VINF_SUCCESS;
242 }
243 if (!strcmp(pszReg, "eax"))
244 {
245 pValue->u32 = 0xcafebabe;
246 *penmType = DBGFREGVALTYPE_U32;
247 return VINF_SUCCESS;
248 }
249 if (!strcmp(pszReg, "rax"))
250 {
251 pValue->u64 = UINT64_C(0x00beef00feedface);
252 *penmType = DBGFREGVALTYPE_U32;
253 return VINF_SUCCESS;
254 }
255 }
256 return VERR_DBGF_REGISTER_NOT_FOUND;
257}
258VMMR3DECL(int) DBGFR3RegPrintf(PUVM pUVM, VMCPUID idCpu, char *pszBuf, size_t cbBuf, const char *pszFormat, ...)
259{
260 return VERR_INTERNAL_ERROR;
261}
262VMMDECL(ssize_t) DBGFR3RegFormatValue(char *pszBuf, size_t cbBuf, PCDBGFREGVAL pValue, DBGFREGVALTYPE enmType, bool fSpecial)
263{
264 return VERR_INTERNAL_ERROR;
265}
266VMMR3DECL(int) DBGFR3RegNmSet(PUVM pUVM, VMCPUID idDefCpu, const char *pszReg, PCDBGFREGVAL pValue, DBGFREGVALTYPE enmType)
267{
268 return VERR_INTERNAL_ERROR;
269}
270
271VMMR3DECL(PDBGFADDRESS) DBGFR3AddrFromPhys(PUVM pUVM, PDBGFADDRESS pAddress, RTGCPHYS PhysAddr)
272{
273 return NULL;
274}
275VMMR3DECL(int) DBGFR3AddrToHostPhys(PUVM pUVM, VMCPUID idCpu, PDBGFADDRESS pAddress, PRTHCPHYS pHCPhys)
276{
277 return VERR_INTERNAL_ERROR;
278}
279VMMR3DECL(int) DBGFR3AddrToVolatileR3Ptr(PUVM pUVM, VMCPUID idCpu, PDBGFADDRESS pAddress, bool fReadOnly, void **ppvR3Ptr)
280{
281 return VERR_INTERNAL_ERROR;
282}
283
284VMMR3DECL(int) DBGFR3OSRegister(PUVM pUVM, PCDBGFOSREG pReg)
285{
286 return VERR_INTERNAL_ERROR;
287}
288VMMR3DECL(int) DBGFR3OSDetect(PUVM pUVM, char *pszName, size_t cchName)
289{
290 return VERR_INTERNAL_ERROR;
291}
292VMMR3DECL(int) DBGFR3OSQueryNameAndVersion(PUVM pUVM, char *pszName, size_t cchName, char *pszVersion, size_t cchVersion)
293{
294 return VERR_INTERNAL_ERROR;
295}
296
297VMMR3DECL(int) DBGFR3SelQueryInfo(PUVM pUVM, VMCPUID idCpu, RTSEL Sel, uint32_t fFlags, PDBGFSELINFO pSelInfo)
298{
299 return VERR_INTERNAL_ERROR;
300}
301
302VMMR3DECL(CPUMMODE) DBGFR3CpuGetMode(PUVM pUVM, VMCPUID idCpu)
303{
304 return CPUMMODE_INVALID;
305}
306VMMR3DECL(VMCPUID) DBGFR3CpuGetCount(PUVM pUVM)
307{
308 return 1;
309}
310VMMR3DECL(bool) DBGFR3CpuIsIn64BitCode(PUVM pUVM, VMCPUID idCpu)
311{
312 return false;
313}
314
315VMMR3DECL(int) DBGFR3CoreWrite(PUVM pUVM, const char *pszFilename, bool fReplaceFile)
316{
317 return VERR_INTERNAL_ERROR;
318}
319
320
321//////////////////////////////////////////////////////////////////////////
322// The rest should eventually be replaced by DBGF calls and eliminated. //
323/////////////////////////////////////////////////////////////////////////
324
325#include <VBox/vmm/cpum.h>
326
327VMMDECL(uint64_t) CPUMGetGuestCR3(PVMCPU pVCpu)
328{
329 return 0;
330}
331
332VMMDECL(uint64_t) CPUMGetGuestCR4(PVMCPU pVCpu)
333{
334 return 0;
335}
336
337VMMDECL(RTSEL) CPUMGetGuestCS(PVMCPU pVCpu)
338{
339 return 0;
340}
341
342VMMDECL(PCCPUMCTXCORE) CPUMGetGuestCtxCore(PVMCPU pVCpu)
343{
344 return NULL;
345}
346
347VMMDECL(uint32_t) CPUMGetGuestEIP(PVMCPU pVCpu)
348{
349 return 0;
350}
351
352VMMDECL(uint64_t) CPUMGetGuestRIP(PVMCPU pVCpu)
353{
354 return 0;
355}
356
357VMMDECL(RTGCPTR) CPUMGetGuestIDTR(PVMCPU pVCpu, uint16_t *pcbLimit)
358{
359 return 0;
360}
361
362VMMDECL(CPUMMODE) CPUMGetGuestMode(PVMCPU pVCpu)
363{
364 return CPUMMODE_INVALID;
365}
366
367VMMDECL(RTSEL) CPUMGetHyperCS(PVMCPU pVCpu)
368{
369 return 0xfff8;
370}
371
372VMMDECL(uint32_t) CPUMGetHyperEIP(PVMCPU pVCpu)
373{
374 return 0;
375}
376
377VMMDECL(PCPUMCTX) CPUMQueryGuestCtxPtr(PVMCPU pVCpu)
378{
379 return NULL;
380}
381
382VMMDECL(bool) CPUMIsGuestIn64BitCode(PVMCPU pVCpu)
383{
384 return false;
385}
386
387VMMDECL(uint32_t) CPUMGetGuestEFlags(PVMCPU pVCpu)
388{
389 return 2;
390}
391
392#include <VBox/vmm/hm.h>
393VMMR3DECL(bool) HMR3IsEnabled(PUVM pUVM)
394{
395 return true;
396}
397
398
399#include <VBox/vmm/pgm.h>
400
401VMMDECL(RTHCPHYS) PGMGetHyperCR3(PVMCPU pVCpu)
402{
403 return 0;
404}
405
406VMMDECL(PGMMODE) PGMGetShadowMode(PVMCPU pVCpu)
407{
408 return PGMMODE_INVALID;
409}
410
411VMMR3DECL(int) PGMR3DbgR3Ptr2GCPhys(PUVM pUVM, RTR3PTR R3Ptr, PRTGCPHYS pGCPhys)
412{
413 return VERR_INTERNAL_ERROR;
414}
415
416VMMR3DECL(int) PGMR3DbgR3Ptr2HCPhys(PUVM pUVM, RTR3PTR R3Ptr, PRTHCPHYS pHCPhys)
417{
418 return VERR_INTERNAL_ERROR;
419}
420VMMR3DECL(int) PGMR3DbgHCPhys2GCPhys(PUVM pUVM, RTHCPHYS HCPhys, PRTGCPHYS pGCPhys)
421{
422 return VERR_INTERNAL_ERROR;
423}
424
425
426#include <VBox/vmm/vmm.h>
427
428VMMR3DECL(PVMCPU) VMMR3GetCpuByIdU(PUVM pUVM, RTCPUID idCpu)
429{
430 return NULL;
431}
432
433
434VMMR3DECL(PVM) VMR3GetVM(PUVM pUVM)
435{
436 return NULL;
437}
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette