/** @file Copyright (c) 2007, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _EFI_EDB_SYMBOL_H_ #define _EFI_EDB_SYMBOL_H_ #include // // 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