]> git.proxmox.com Git - mirror_edk2.git/blob - MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbSymbol.h
MdeModulePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdeModulePkg / Universal / EbcDxe / EbcDebugger / EdbSymbol.h
1 /** @file
2
3 Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>
4 SPDX-License-Identifier: BSD-2-Clause-Patent
5
6
7 **/
8
9 #ifndef _EFI_EDB_SYMBOL_H_
10 #define _EFI_EDB_SYMBOL_H_
11
12 #include <Uefi.h>
13
14 //
15 // The default base address is 0x10000000
16 //
17 #define EFI_DEBUGGER_DEFAULT_LINK_IMAGEBASE 0x10000000
18
19 #define EFI_DEBUGGER_MAX_SYMBOL_ADDRESS_DELTA_VALUE 0x100000 // 1 M delta
20
21 typedef enum {
22 EdbMatchSymbolTypeSameAdderss,
23 EdbMatchSymbolTypeNearestAddress,
24 EdbMatchSymbolTypeLowerAddress,
25 EdbMatchSymbolTypeUpperAddress,
26 EdbMatchSymbolTypeMax,
27 } EDB_MATCH_SYMBOL_TYPE;
28
29 typedef enum {
30 EdbEbcImageRvaSearchTypeAny,
31 EdbEbcImageRvaSearchTypeFirst,
32 EdbEbcImageRvaSearchTypeLast,
33 EdbEbcImageRvaSearchTypeMax,
34 } EDB_EBC_IMAGE_RVA_SEARCH_TYPE;
35
36 /**
37
38 Find symbol by address.
39
40 @param Address - Symbol address
41 @param Type - Search type
42 @param RetObject - Symbol object
43 @param RetEntry - Symbol entry
44
45 @return Nearest symbol address
46
47 **/
48 UINTN
49 EbdFindSymbolAddress (
50 IN UINTN Address,
51 IN EDB_MATCH_SYMBOL_TYPE Type,
52 OUT EFI_DEBUGGER_SYMBOL_OBJECT **Object,
53 OUT EFI_DEBUGGER_SYMBOL_ENTRY **Entry
54 );
55
56 /**
57
58 Load symbol file by name.
59
60 @param DebuggerPrivate - EBC Debugger private data structure
61 @param FileName - Symbol file name
62 @param BufferSize - Symbol file buffer size
63 @param Buffer - Symbol file buffer
64
65 @retval EFI_SUCCESS - load symbol successfully
66
67 **/
68 EFI_STATUS
69 EdbLoadSymbol (
70 IN EFI_DEBUGGER_PRIVATE_DATA *DebuggerPrivate,
71 IN CHAR16 *FileName,
72 IN UINTN BufferSize,
73 IN VOID *Buffer
74 );
75
76 /**
77
78 Unload symbol file by name.
79
80 @param DebuggerPrivate - EBC Debugger private data structure
81 @param FileName - Symbol file name
82
83 @retval EFI_SUCCESS - unload symbol successfully
84
85 **/
86 EFI_STATUS
87 EdbUnloadSymbol (
88 IN EFI_DEBUGGER_PRIVATE_DATA *DebuggerPrivate,
89 IN CHAR16 *FileName
90 );
91
92 /**
93
94 Patch symbol RVA.
95
96 @param DebuggerPrivate - EBC Debugger private data structure
97 @param FileName - Symbol file name
98 @param SearchType - Search type for Object
99
100 @retval EFI_SUCCESS - Patch symbol RVA successfully
101 @retval EFI_NOT_FOUND - Symbol RVA base not found
102
103 **/
104 EFI_STATUS
105 EdbPatchSymbolRVA (
106 IN EFI_DEBUGGER_PRIVATE_DATA *DebuggerPrivate,
107 IN CHAR16 *FileName,
108 IN EDB_EBC_IMAGE_RVA_SEARCH_TYPE SearchType
109 );
110
111 /**
112
113 Load code.
114
115 @param DebuggerPrivate - EBC Debugger private data structure
116 @param MapFileName - Symbol file name
117 @param FileName - Code file name
118 @param BufferSize - Code file buffer size
119 @param Buffer - Code file buffer
120
121 @retval EFI_SUCCESS - Code loaded successfully
122
123 **/
124 EFI_STATUS
125 EdbLoadCode (
126 IN EFI_DEBUGGER_PRIVATE_DATA *DebuggerPrivate,
127 IN CHAR16 *MapFileName,
128 IN CHAR16 *FileName,
129 IN UINTN BufferSize,
130 IN VOID *Buffer
131 );
132
133 /**
134
135 Unload code.
136
137 @param DebuggerPrivate - EBC Debugger private data structure
138 @param MapFileName - Symbol file name
139 @param FileName - Code file name
140 @param Buffer - Code file buffer
141
142 @retval EFI_SUCCESS - Code unloaded successfully
143
144 **/
145 EFI_STATUS
146 EdbUnloadCode (
147 IN EFI_DEBUGGER_PRIVATE_DATA *DebuggerPrivate,
148 IN CHAR16 *MapFileName,
149 IN CHAR16 *FileName,
150 OUT VOID **Buffer
151 );
152
153 /**
154
155 Add code buffer.
156
157 @param DebuggerPrivate - EBC Debugger private data structure
158 @param MapFileName - Symbol file name
159 @param CodeFileName - Code file name
160 @param SourceBufferSize- Code buffer size
161 @param SourceBuffer - Code buffer
162
163 @retval EFI_SUCCESS - CodeBuffer added successfully
164
165 **/
166 EFI_STATUS
167 EdbAddCodeBuffer (
168 IN EFI_DEBUGGER_PRIVATE_DATA *DebuggerPrivate,
169 IN CHAR16 *MapFileName,
170 IN CHAR16 *CodeFileName,
171 IN UINTN SourceBufferSize,
172 IN VOID *SourceBuffer
173 );
174
175 /**
176
177 Delete code buffer.
178
179 @param DebuggerPrivate - EBC Debugger private data structure
180 @param MapFileName - Symbol file name
181 @param CodeFileName - Code file name
182 @param SourceBuffer - Code buffer
183
184 @retval EFI_SUCCESS - CodeBuffer deleted successfully
185
186 **/
187 EFI_STATUS
188 EdbDeleteCodeBuffer (
189 IN EFI_DEBUGGER_PRIVATE_DATA *DebuggerPrivate,
190 IN CHAR16 *MapFileName,
191 IN CHAR16 *CodeFileName,
192 IN VOID *SourceBuffer
193 );
194
195 /**
196
197 Find the symbol string according to address.
198
199 @param Address - Symbol address
200
201 @return Symbol string
202
203 **/
204 CHAR8 *
205 FindSymbolStr (
206 IN UINTN Address
207 );
208
209 /**
210
211 Print source.
212
213 @param Address - Instruction address
214 @param IsPrint - Whether need to print
215
216 @retval 1 - find the source
217 @retval 0 - not find the source
218
219 **/
220 UINTN
221 EdbPrintSource (
222 IN UINTN Address,
223 IN BOOLEAN IsPrint
224 );
225
226 /**
227
228 Convert a symbol to an address.
229
230 @param Symbol - Symbol name
231 @param Address - Symbol address
232
233 @retval EFI_SUCCESS - symbol found and address returned.
234 @retval EFI_NOT_FOUND - symbol not found
235 @retval EFI_NO_MAPPING - duplicated symbol not found
236
237 **/
238 EFI_STATUS
239 Symboltoi (
240 IN CHAR16 *Symbol,
241 OUT UINTN *Address
242 );
243
244 #endif