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