From 7a0ce8c572dff07cef82d7699da39ef52adbf523 Mon Sep 17 00:00:00 2001 From: Ard Biesheuvel Date: Fri, 25 Sep 2015 21:49:09 +0000 Subject: [PATCH] MdePkg: remove redundant handling of EFI_IMAGE_REL_BASED_DIR64 relocations There is AARCH64 specific code in the PE/COFF loader to handle relocations of type EFI_IMAGE_REL_BASED_DIR64 which is dead code since this type is handled by generic code and never handed to the AARCH64 specific routine. So remove it. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel Reviewed-by: Liming Gao git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18556 6f19259b-4bc3-4df7-8a09-765794883524 --- .../BasePeCoffLib/AArch64/PeCoffLoaderEx.c | 127 ------------------ .../Library/BasePeCoffLib/BasePeCoffLib.inf | 5 +- MdePkg/Library/BasePeCoffLib/PeCoffLoaderEx.c | 2 +- 3 files changed, 2 insertions(+), 132 deletions(-) delete mode 100644 MdePkg/Library/BasePeCoffLib/AArch64/PeCoffLoaderEx.c diff --git a/MdePkg/Library/BasePeCoffLib/AArch64/PeCoffLoaderEx.c b/MdePkg/Library/BasePeCoffLib/AArch64/PeCoffLoaderEx.c deleted file mode 100644 index 7e4b4db453..0000000000 --- a/MdePkg/Library/BasePeCoffLib/AArch64/PeCoffLoaderEx.c +++ /dev/null @@ -1,127 +0,0 @@ -/** @file - Specific relocation fixups for ARM architecture. - - Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.
- Portions copyright (c) 2008 - 2010, Apple Inc. All rights reserved.
- Portions copyright (c) 2011 - 2013, ARM Ltd. All rights reserved.
- - 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. - -**/ - -#include "BasePeCoffLibInternals.h" -#include - -// Note: Currently only large memory model is supported by UEFI relocation code. - -/** - Performs an AARCH64-based specific relocation fixup and is a no-op on other - instruction sets. - - @param Reloc The pointer to the relocation record. - @param Fixup The pointer to the address to fix up. - @param FixupData The pointer to a buffer to log the fixups. - @param Adjust The offset to adjust the fixup. - - @return Status code. - -**/ -RETURN_STATUS -PeCoffLoaderRelocateImageEx ( - IN UINT16 *Reloc, - IN OUT CHAR8 *Fixup, - IN OUT CHAR8 **FixupData, - IN UINT64 Adjust - ) -{ - UINT64 *Fixup64; - - switch ((*Reloc) >> 12) { - - case EFI_IMAGE_REL_BASED_DIR64: - Fixup64 = (UINT64 *) Fixup; - *Fixup64 = *Fixup64 + (UINT64) Adjust; - if (*FixupData != NULL) { - *FixupData = ALIGN_POINTER(*FixupData, sizeof(UINT64)); - *(UINT64 *)(*FixupData) = *Fixup64; - *FixupData = *FixupData + sizeof(UINT64); - } - break; - - default: - return RETURN_UNSUPPORTED; - } - - return RETURN_SUCCESS; -} - -/** - Returns TRUE if the machine type of PE/COFF image is supported. Supported - does not mean the image can be executed it means the PE/COFF loader supports - loading and relocating of the image type. It's up to the caller to support - the entry point. - - @param Machine Machine type from the PE Header. - - @return TRUE if this PE/COFF loader can load the image - -**/ -BOOLEAN -PeCoffLoaderImageFormatSupported ( - IN UINT16 Machine - ) -{ - if ((Machine == IMAGE_FILE_MACHINE_ARM64) || (Machine == IMAGE_FILE_MACHINE_EBC)) { - return TRUE; - } - - return FALSE; -} - -/** - Performs an ARM-based specific re-relocation fixup and is a no-op on other - instruction sets. This is used to re-relocated the image into the EFI virtual - space for runtime calls. - - @param Reloc The pointer to the relocation record. - @param Fixup The pointer to the address to fix up. - @param FixupData The pointer to a buffer to log the fixups. - @param Adjust The offset to adjust the fixup. - - @return Status code. - -**/ -RETURN_STATUS -PeHotRelocateImageEx ( - IN UINT16 *Reloc, - IN OUT CHAR8 *Fixup, - IN OUT CHAR8 **FixupData, - IN UINT64 Adjust - ) -{ - UINT64 *Fixup64; - - switch ((*Reloc) >> 12) { - case EFI_IMAGE_REL_BASED_DIR64: - Fixup64 = (UINT64 *) Fixup; - *FixupData = ALIGN_POINTER (*FixupData, sizeof (UINT64)); - if (*(UINT64 *) (*FixupData) == *Fixup64) { - *Fixup64 = *Fixup64 + (UINT64) Adjust; - } - - *FixupData = *FixupData + sizeof (UINT64); - break; - - default: - DEBUG ((EFI_D_ERROR, "PeHotRelocateEx:unknown fixed type\n")); - return RETURN_UNSUPPORTED; - } - - return RETURN_SUCCESS; -} diff --git a/MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf b/MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf index 576d72826c..ff0580fbdf 100644 --- a/MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf +++ b/MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf @@ -40,7 +40,7 @@ BasePeCoffLibInternals.h BasePeCoff.c -[Sources.IA32, Sources.X64, Sources.EBC] +[Sources.IA32, Sources.X64, Sources.EBC, Sources.AARCH64] PeCoffLoaderEx.c [Sources.IPF] @@ -49,9 +49,6 @@ [Sources.ARM] Arm/PeCoffLoaderEx.c -[Sources.AARCH64] - AArch64/PeCoffLoaderEx.c - [Packages] MdePkg/MdePkg.dec diff --git a/MdePkg/Library/BasePeCoffLib/PeCoffLoaderEx.c b/MdePkg/Library/BasePeCoffLib/PeCoffLoaderEx.c index 2ed58844d5..9eda4cf39d 100644 --- a/MdePkg/Library/BasePeCoffLib/PeCoffLoaderEx.c +++ b/MdePkg/Library/BasePeCoffLib/PeCoffLoaderEx.c @@ -57,7 +57,7 @@ PeCoffLoaderImageFormatSupported ( ) { if ((Machine == IMAGE_FILE_MACHINE_I386) || (Machine == IMAGE_FILE_MACHINE_X64) || - (Machine == IMAGE_FILE_MACHINE_EBC)) { + (Machine == IMAGE_FILE_MACHINE_EBC) || (Machine == IMAGE_FILE_MACHINE_ARM64)) { return TRUE; }