Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Pete Batard <pete@akeo.ie> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Jiewen.yao@intel.com
		
			
				
	
	
		
			251 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			251 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
 | 
						|
Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>
 | 
						|
This program and the accompanying materials
 | 
						|
are licensed and made available under the terms and conditions of the BSD License
 | 
						|
which accompanies this distribution.  The full text of the license may be found at
 | 
						|
http://opensource.org/licenses/bsd-license.php
 | 
						|
 | 
						|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | 
						|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | 
						|
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#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
 |