From 2c69d6ffee7a9a17262b58dd454e7e9476302cb8 Mon Sep 17 00:00:00 2001 From: Ard Biesheuvel Date: Tue, 14 Jul 2015 08:15:28 +0000 Subject: BaseTools/PeCoffLib: handle EFI_IMAGE_REL_BASED_DIR64 in generic code Relocations of type EFI_IMAGE_REL_BASED_DIR64 are handled in exactly the same way on all 64-bit machine types (IPF, X64 and AARCH64). So move the handling of this type to the generic part of the relocation routine PeCoffLoaderRelocateImage (). Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel Reviewed-by: Liming Gao Reviewed-by: Yingke Liu git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17942 6f19259b-4bc3-4df7-8a09-765794883524 --- BaseTools/Source/C/Common/PeCoffLoaderEx.c | 90 ------------------------------ 1 file changed, 90 deletions(-) (limited to 'BaseTools/Source/C/Common/PeCoffLoaderEx.c') diff --git a/BaseTools/Source/C/Common/PeCoffLoaderEx.c b/BaseTools/Source/C/Common/PeCoffLoaderEx.c index b7b7227f57..382138a893 100644 --- a/BaseTools/Source/C/Common/PeCoffLoaderEx.c +++ b/BaseTools/Source/C/Common/PeCoffLoaderEx.c @@ -133,16 +133,6 @@ Returns: switch ((*Reloc) >> 12) { - case EFI_IMAGE_REL_BASED_DIR64: - F64 = (UINT64 *) Fixup; - *F64 = *F64 + (UINT64) Adjust; - if (*FixupData != NULL) { - *FixupData = ALIGN_POINTER(*FixupData, sizeof(UINT64)); - *(UINT64 *)(*FixupData) = *F64; - *FixupData = *FixupData + sizeof(UINT64); - } - break; - case EFI_IMAGE_REL_BASED_IA64_IMM64: // @@ -270,46 +260,6 @@ Returns: return RETURN_SUCCESS; } -RETURN_STATUS -PeCoffLoaderRelocateX64Image ( - IN UINT16 *Reloc, - IN OUT CHAR8 *Fixup, - IN OUT CHAR8 **FixupData, - IN UINT64 Adjust - ) -/** - Performs an x64 specific relocation fixup - - @param Reloc Pointer to the relocation record - @param Fixup Pointer to the address to fix up - @param FixupData Pointer to a buffer to log the fixups - @param Adjust The offset to adjust the fixup - - @retval RETURN_SUCCESS Success to perform relocation - @retval RETURN_UNSUPPORTED Unsupported. -**/ -{ - UINT64 *F64; - - switch ((*Reloc) >> 12) { - - case EFI_IMAGE_REL_BASED_DIR64: - F64 = (UINT64 *) Fixup; - *F64 = *F64 + (UINT64) Adjust; - if (*FixupData != NULL) { - *FixupData = ALIGN_POINTER(*FixupData, sizeof(UINT64)); - *(UINT64 *)(*FixupData) = *F64; - *FixupData = *FixupData + sizeof(UINT64); - } - break; - - default: - return RETURN_UNSUPPORTED; - } - - return RETURN_SUCCESS; -} - /** Pass in a pointer to an ARM MOVT or MOVW immediate instruciton and return the immediate data encoded in the instruction @@ -465,43 +415,3 @@ PeCoffLoaderRelocateArmImage ( return RETURN_SUCCESS; } - -RETURN_STATUS -PeCoffLoaderRelocateAArch64Image ( - IN UINT16 *Reloc, - IN OUT CHAR8 *Fixup, - IN OUT CHAR8 **FixupData, - IN UINT64 Adjust - ) -/** - Performs an AArch64 specific relocation fixup - - @param Reloc Pointer to the relocation record - @param Fixup Pointer to the address to fix up - @param FixupData Pointer to a buffer to log the fixups - @param Adjust The offset to adjust the fixup - - @retval RETURN_SUCCESS Success to perform relocation - @retval RETURN_UNSUPPORTED Unsupported. -**/ -{ - UINT64 *F64; - - switch ((*Reloc) >> 12) { - - case EFI_IMAGE_REL_BASED_DIR64: - F64 = (UINT64 *) Fixup; - *F64 = *F64 + (UINT64) Adjust; - if (*FixupData != NULL) { - *FixupData = ALIGN_POINTER(*FixupData, sizeof(UINT64)); - *(UINT64 *)(*FixupData) = *F64; - *FixupData = *FixupData + sizeof(UINT64); - } - break; - - default: - return RETURN_UNSUPPORTED; - } - - return RETURN_SUCCESS; -} -- cgit v1.2.3