From af1a266670d040d2f4083ff309d732d648afba2a Mon Sep 17 00:00:00 2001 From: Angelos Mouzakitis Date: Tue, 10 Oct 2023 14:33:42 +0000 Subject: Add submodule dependency files Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec --- .../Universal/EbcDxe/EbcDebugger/EdbSymbol.h | 244 +++++++++++++++++++++ 1 file changed, 244 insertions(+) create mode 100644 roms/edk2/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbSymbol.h (limited to 'roms/edk2/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbSymbol.h') diff --git a/roms/edk2/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbSymbol.h b/roms/edk2/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbSymbol.h new file mode 100644 index 000000000..f82e5b76c --- /dev/null +++ b/roms/edk2/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbSymbol.h @@ -0,0 +1,244 @@ +/** @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 -- cgit 1.2.3-korg