1 /* $Id: kDbgModLdr.cpp 29 2009-07-01 20:30:29Z bird $ */
2 /** @file
3 * kDbg - The Debug Info Reader, kLdr Based.
4 */
5
6 /*
7 * Copyright (c) 2006-2007 Knut St. Osmundsen <bird-kStuff-spamix@anduin.net>
8 *
9 * Permission is hereby granted, free of charge, to any person
10 * obtaining a copy of this software and associated documentation
11 * files (the "Software"), to deal in the Software without
12 * restriction, including without limitation the rights to use,
13 * copy, modify, merge, publish, distribute, sublicense, and/or sell
14 * copies of the Software, and to permit persons to whom the
15 * Software is furnished to do so, subject to the following
16 * conditions:
17 *
18 * The above copyright notice and this permission notice shall be
19 * included in all copies or substantial portions of the Software.
20 *
21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
23 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
25 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
26 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
27 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
28 * OTHER DEALINGS IN THE SOFTWARE.
29 */
30
31 /*******************************************************************************
32 * Header Files *
33 *******************************************************************************/
34 #include <k/kDbg.h>
35 #include <k/kLdr.h>
36 #include "kDbgInternal.h"
37
38
39 /*******************************************************************************
40 * Structures and Typedefs *
41 *******************************************************************************/
42 /**
43 * A kLdr based debug reader.
44 */
45 typedef struct KDBGMODLDR
46 {
47 /** The common module core. */
48 KDBGMOD Core;
49 /** Pointer to the loader module. */
50 PKLDRMOD pLdrMod;
51 } KDBGMODLDR, *PKDBGMODLDR;
52
53
54 /**
55 * @copydoc KDBGMODOPS::pfnQueryLine
56 */
kDbgModLdrQueryLine(PKDBGMOD pMod,KI32 iSegment,KDBGADDR uOffset,PKDBGLINE pLine)57 static int kDbgModLdrQueryLine(PKDBGMOD pMod, KI32 iSegment, KDBGADDR uOffset, PKDBGLINE pLine)
58 {
59 //PKDBGMODLDR pThis = (PKDBGMODLDR)pMod;
60 return KERR_NOT_IMPLEMENTED;
61 }
62
63
64 /**
65 * @copydoc KDBGMODOPS::pfnQuerySymbol
66 */
kDbgModLdrQuerySymbol(PKDBGMOD pMod,KI32 iSegment,KDBGADDR off,PKDBGSYMBOL pSym)67 static int kDbgModLdrQuerySymbol(PKDBGMOD pMod, KI32 iSegment, KDBGADDR off, PKDBGSYMBOL pSym)
68 {
69 //PKDBGMODLDR pThis = (PKDBGMODLDR)pMod;
70 return KERR_NOT_IMPLEMENTED;
71 }
72
73
74 /**
75 * @copydoc KDBGMODOPS::pfnClose
76 */
kDbgModLdrClose(PKDBGMOD pMod)77 static int kDbgModLdrClose(PKDBGMOD pMod)
78 {
79 //PKDBGMODLDr pThis = (PKDBGMODLDR)pMod;
80 return KERR_NOT_IMPLEMENTED;
81 }
82
83
84 /**
85 * @copydocs KDBGMODOPS::pfnOpen.
86 */
kDbgModLdrOpen(PKDBGMOD * ppMod,PKRDR pRdr,KBOOL fCloseRdr,KFOFF off,KFOFF cb,struct KLDRMOD * pLdrMod)87 static int kDbgModLdrOpen(PKDBGMOD *ppMod, PKRDR pRdr, KBOOL fCloseRdr, KFOFF off, KFOFF cb, struct KLDRMOD *pLdrMod)
88 {
89 return KERR_NOT_IMPLEMENTED;
90 }
91
92
93 /**
94 * Methods for a PE module.
95 */
96 const KDBGMODOPS g_kDbgModLdr =
97 {
98 "kLdr",
99 NULL,
100 kDbgModLdrOpen,
101 kDbgModLdrClose,
102 kDbgModLdrQuerySymbol,
103 kDbgModLdrQueryLine,
104 "kLdr"
105 };
106
107
108
109
110