/** @file | |
Copyright (c) 2007, Intel Corporation. All rights reserved.<BR> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef _EFI_EDB_SYMBOL_H_ | |
#define _EFI_EDB_SYMBOL_H_ | |
#include <Uefi.h> | |
// | |
// The default base address is 0x10000000 | |
// | |
#define EFI_DEBUGGER_DEFAULT_LINK_IMAGEBASE 0x10000000 | |
#define EFI_DEBUGGER_MAX_SYMBOL_ADDRESS_DELTA_VALUE 0x100000 // 1 M delta | |
typedef enum { | |
EdbMatchSymbolTypeSameAdderss, | |
EdbMatchSymbolTypeNearestAddress, | |
EdbMatchSymbolTypeLowerAddress, | |
EdbMatchSymbolTypeUpperAddress, | |
EdbMatchSymbolTypeMax, | |
} EDB_MATCH_SYMBOL_TYPE; | |
typedef enum { | |
EdbEbcImageRvaSearchTypeAny, | |
EdbEbcImageRvaSearchTypeFirst, | |
EdbEbcImageRvaSearchTypeLast, | |
EdbEbcImageRvaSearchTypeMax, | |
} EDB_EBC_IMAGE_RVA_SEARCH_TYPE; | |
/** | |
Find symbol by address. | |
@param Address - Symbol address | |
@param Type - Search type | |
@param RetObject - Symbol object | |
@param RetEntry - Symbol entry | |
@return Nearest symbol address | |
**/ | |
UINTN | |
EbdFindSymbolAddress ( | |
IN UINTN Address, | |
IN EDB_MATCH_SYMBOL_TYPE Type, | |
OUT EFI_DEBUGGER_SYMBOL_OBJECT **Object, | |
OUT EFI_DEBUGGER_SYMBOL_ENTRY **Entry | |
); | |
/** | |
Load symbol file by name. | |
@param DebuggerPrivate - EBC Debugger private data structure | |
@param FileName - Symbol file name | |
@param BufferSize - Symbol file buffer size | |
@param Buffer - Symbol file buffer | |
@retval EFI_SUCCESS - load symbol successfully | |
**/ | |
EFI_STATUS | |
EdbLoadSymbol ( | |
IN EFI_DEBUGGER_PRIVATE_DATA *DebuggerPrivate, | |
IN CHAR16 *FileName, | |
IN UINTN BufferSize, | |
IN VOID *Buffer | |
); | |
/** | |
Unload symbol file by name. | |
@param DebuggerPrivate - EBC Debugger private data structure | |
@param FileName - Symbol file name | |
@retval EFI_SUCCESS - unload symbol successfully | |
**/ | |
EFI_STATUS | |
EdbUnloadSymbol ( | |
IN EFI_DEBUGGER_PRIVATE_DATA *DebuggerPrivate, | |
IN CHAR16 *FileName | |
); | |
/** | |
Patch symbol RVA. | |
@param DebuggerPrivate - EBC Debugger private data structure | |
@param FileName - Symbol file name | |
@param SearchType - Search type for Object | |
@retval EFI_SUCCESS - Patch symbol RVA successfully | |
@retval EFI_NOT_FOUND - Symbol RVA base not found | |
**/ | |
EFI_STATUS | |
EdbPatchSymbolRVA ( | |
IN EFI_DEBUGGER_PRIVATE_DATA *DebuggerPrivate, | |
IN CHAR16 *FileName, | |
IN EDB_EBC_IMAGE_RVA_SEARCH_TYPE SearchType | |
); | |
/** | |
Load code. | |
@param DebuggerPrivate - EBC Debugger private data structure | |
@param MapFileName - Symbol file name | |
@param FileName - Code file name | |
@param BufferSize - Code file buffer size | |
@param Buffer - Code file buffer | |
@retval EFI_SUCCESS - Code loaded successfully | |
**/ | |
EFI_STATUS | |
EdbLoadCode ( | |
IN EFI_DEBUGGER_PRIVATE_DATA *DebuggerPrivate, | |
IN CHAR16 *MapFileName, | |
IN CHAR16 *FileName, | |
IN UINTN BufferSize, | |
IN VOID *Buffer | |
); | |
/** | |
Unload code. | |
@param DebuggerPrivate - EBC Debugger private data structure | |
@param MapFileName - Symbol file name | |
@param FileName - Code file name | |
@param Buffer - Code file buffer | |
@retval EFI_SUCCESS - Code unloaded successfully | |
**/ | |
EFI_STATUS | |
EdbUnloadCode ( | |
IN EFI_DEBUGGER_PRIVATE_DATA *DebuggerPrivate, | |
IN CHAR16 *MapFileName, | |
IN CHAR16 *FileName, | |
OUT VOID **Buffer | |
); | |
/** | |
Add code buffer. | |
@param DebuggerPrivate - EBC Debugger private data structure | |
@param MapFileName - Symbol file name | |
@param CodeFileName - Code file name | |
@param SourceBufferSize- Code buffer size | |
@param SourceBuffer - Code buffer | |
@retval EFI_SUCCESS - CodeBuffer added successfully | |
**/ | |
EFI_STATUS | |
EdbAddCodeBuffer ( | |
IN EFI_DEBUGGER_PRIVATE_DATA *DebuggerPrivate, | |
IN CHAR16 *MapFileName, | |
IN CHAR16 *CodeFileName, | |
IN UINTN SourceBufferSize, | |
IN VOID *SourceBuffer | |
); | |
/** | |
Delete code buffer. | |
@param DebuggerPrivate - EBC Debugger private data structure | |
@param MapFileName - Symbol file name | |
@param CodeFileName - Code file name | |
@param SourceBuffer - Code buffer | |
@retval EFI_SUCCESS - CodeBuffer deleted successfully | |
**/ | |
EFI_STATUS | |
EdbDeleteCodeBuffer ( | |
IN EFI_DEBUGGER_PRIVATE_DATA *DebuggerPrivate, | |
IN CHAR16 *MapFileName, | |
IN CHAR16 *CodeFileName, | |
IN VOID *SourceBuffer | |
); | |
/** | |
Find the symbol string according to address. | |
@param Address - Symbol address | |
@return Symbol string | |
**/ | |
CHAR8 * | |
FindSymbolStr ( | |
IN UINTN Address | |
); | |
/** | |
Print source. | |
@param Address - Instruction address | |
@param IsPrint - Whether need to print | |
@retval 1 - find the source | |
@retval 0 - not find the source | |
**/ | |
UINTN | |
EdbPrintSource ( | |
IN UINTN Address, | |
IN BOOLEAN IsPrint | |
); | |
/** | |
Convert a symbol to an address. | |
@param Symbol - Symbol name | |
@param Address - Symbol address | |
@retval EFI_SUCCESS - symbol found and address returned. | |
@retval EFI_NOT_FOUND - symbol not found | |
@retval EFI_NO_MAPPING - duplicated symbol not found | |
**/ | |
EFI_STATUS | |
Symboltoi ( | |
IN CHAR16 *Symbol, | |
OUT UINTN *Address | |
); | |
#endif |