Commit | Line | Data |
---|---|---|
e8a5ac7c | 1 | /** @file\r |
748edcd5 | 2 | \r |
e8a5ac7c | 3 | Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>\r |
9d510e61 | 4 | SPDX-License-Identifier: BSD-2-Clause-Patent\r |
748edcd5 | 5 | \r |
748edcd5 | 6 | \r |
e8a5ac7c | 7 | **/\r |
748edcd5 PB |
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 | |
21 | typedef 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 | |
29 | typedef enum {\r | |
30 | EdbEbcImageRvaSearchTypeAny,\r | |
31 | EdbEbcImageRvaSearchTypeFirst,\r | |
32 | EdbEbcImageRvaSearchTypeLast,\r | |
33 | EdbEbcImageRvaSearchTypeMax,\r | |
34 | } EDB_EBC_IMAGE_RVA_SEARCH_TYPE;\r | |
35 | \r | |
d138a2e9 DB |
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 | |
748edcd5 PB |
48 | UINTN\r |
49 | EbdFindSymbolAddress (\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 | |
d138a2e9 DB |
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 | |
748edcd5 PB |
68 | EFI_STATUS\r |
69 | EdbLoadSymbol (\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 | |
d138a2e9 DB |
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 | |
748edcd5 PB |
86 | EFI_STATUS\r |
87 | EdbUnloadSymbol (\r | |
88 | IN EFI_DEBUGGER_PRIVATE_DATA *DebuggerPrivate,\r | |
89 | IN CHAR16 *FileName\r | |
90 | );\r | |
91 | \r | |
d138a2e9 DB |
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 | |
748edcd5 PB |
104 | EFI_STATUS\r |
105 | EdbPatchSymbolRVA (\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 | |
d138a2e9 DB |
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 | |
748edcd5 PB |
124 | EFI_STATUS\r |
125 | EdbLoadCode (\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 | |
d138a2e9 DB |
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 | |
748edcd5 PB |
145 | EFI_STATUS\r |
146 | EdbUnloadCode (\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 | |
d138a2e9 DB |
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 | |
748edcd5 PB |
166 | EFI_STATUS\r |
167 | EdbAddCodeBuffer (\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 | |
d138a2e9 DB |
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 | |
748edcd5 PB |
187 | EFI_STATUS\r |
188 | EdbDeleteCodeBuffer (\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 | |
d138a2e9 DB |
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 | |
748edcd5 PB |
204 | CHAR8 *\r |
205 | FindSymbolStr (\r | |
206 | IN UINTN Address\r | |
207 | );\r | |
208 | \r | |
d138a2e9 DB |
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 | |
748edcd5 PB |
220 | UINTN\r |
221 | EdbPrintSource (\r | |
222 | IN UINTN Address,\r | |
223 | IN BOOLEAN IsPrint\r | |
224 | );\r | |
225 | \r | |
d138a2e9 DB |
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 | |
748edcd5 PB |
238 | EFI_STATUS\r |
239 | Symboltoi (\r | |
240 | IN CHAR16 *Symbol,\r | |
241 | OUT UINTN *Address\r | |
242 | );\r | |
243 | \r | |
244 | #endif\r |