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 245