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