| /**@file | |
| Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR> | |
| Portions copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR> | |
| Portions copyright (c) 2011 - 2012, ARM Ltd. All rights reserved.<BR> | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| **/ | |
| #include <PiDxe.h> | |
| #include <Library/PeCoffLib.h> | |
| #include <Library/BaseLib.h> | |
| #include <Library/DebugLib.h> | |
| #include <Library/BaseMemoryLib.h> | |
| #include <Library/PeCoffExtraActionLib.h> | |
| #include <Library/PrintLib.h> | |
| /** | |
| Performs additional actions after a PE/COFF image has been loaded and relocated. | |
| If ImageContext is NULL, then ASSERT(). | |
| @param ImageContext Pointer to the image context structure that describes the | |
| PE/COFF image that has already been loaded and relocated. | |
| **/ | |
| VOID | |
| EFIAPI | |
| PeCoffLoaderRelocateImageExtraAction ( | |
| IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext | |
| ) | |
| { | |
| #ifdef __GNUC__ | |
| if (ImageContext->PdbPointer) { | |
| DEBUG (( | |
| DEBUG_LOAD | DEBUG_INFO, | |
| "add-symbol-file %a 0x%p\n", | |
| ImageContext->PdbPointer, | |
| (UINTN)(ImageContext->ImageAddress + ImageContext->SizeOfHeaders) | |
| )); | |
| return; | |
| } | |
| #endif | |
| DEBUG (( | |
| DEBUG_LOAD | DEBUG_INFO, | |
| "Loading driver at 0x%11p EntryPoint=0x%11p\n", | |
| (VOID *)(UINTN)ImageContext->ImageAddress, | |
| FUNCTION_ENTRY_POINT (ImageContext->EntryPoint) | |
| )); | |
| } | |
| /** | |
| Performs additional actions just before a PE/COFF image is unloaded. Any resources | |
| that were allocated by PeCoffLoaderRelocateImageExtraAction() must be freed. | |
| If ImageContext is NULL, then ASSERT(). | |
| @param ImageContext Pointer to the image context structure that describes the | |
| PE/COFF image that is being unloaded. | |
| **/ | |
| VOID | |
| EFIAPI | |
| PeCoffLoaderUnloadImageExtraAction ( | |
| IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext | |
| ) | |
| { | |
| #ifdef __GNUC__ | |
| if (ImageContext->PdbPointer) { | |
| DEBUG (( | |
| DEBUG_LOAD | DEBUG_INFO, | |
| "remove-symbol-file %a 0x%08x\n", | |
| ImageContext->PdbPointer, | |
| (UINTN)(ImageContext->ImageAddress + ImageContext->SizeOfHeaders) | |
| )); | |
| return; | |
| } | |
| #endif | |
| DEBUG (( | |
| DEBUG_LOAD | DEBUG_INFO, | |
| "Unloading driver at 0x%11p\n", | |
| (VOID *)(UINTN)ImageContext->ImageAddress | |
| )); | |
| } |