The base relocation type EFI_IMAGE_REL_BASED_ARM_MOV32T patches an absolute address into the immediate fields of an adjacent movt/movw instruction pair.
As the instructions are not writable by the program itself, there is no need to keep track of the fixup data, since we can reapply the relocation for runtime unconditionally. So remove the fixup handling for this relocation type. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org> --- MdePkg/Library/BasePeCoffLib/Arm/PeCoffLoaderEx.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/MdePkg/Library/BasePeCoffLib/Arm/PeCoffLoaderEx.c b/MdePkg/Library/BasePeCoffLib/Arm/PeCoffLoaderEx.c index d6bf42738d2b..03a532c60514 100644 --- a/MdePkg/Library/BasePeCoffLib/Arm/PeCoffLoaderEx.c +++ b/MdePkg/Library/BasePeCoffLib/Arm/PeCoffLoaderEx.c @@ -158,13 +158,6 @@ PeCoffLoaderRelocateImageEx ( case EFI_IMAGE_REL_BASED_ARM_MOV32T: FixupVal = ThumbMovwMovtImmediateAddress (Fixup16) + (UINT32)Adjust; ThumbMovwMovtImmediatePatch (Fixup16, FixupVal); - - if (*FixupData != NULL) { - *FixupData = ALIGN_POINTER(*FixupData, sizeof(UINT64)); - // Fixup16 is not aligned so we must copy it. Thumb instructions are streams of 16 bytes. - CopyMem (*FixupData, Fixup16, sizeof (UINT64)); - *FixupData = *FixupData + sizeof(UINT64); - } break; case EFI_IMAGE_REL_BASED_ARM_MOV32A: @@ -229,11 +222,8 @@ PeHotRelocateImageEx ( switch ((*Reloc) >> 12) { case EFI_IMAGE_REL_BASED_ARM_MOV32T: - *FixupData = ALIGN_POINTER (*FixupData, sizeof (UINT64)); - if (*(UINT64 *) (*FixupData) == ReadUnaligned64 ((UINT64 *)Fixup16)) { - FixupVal = ThumbMovwMovtImmediateAddress (Fixup16) + (UINT32)Adjust; - ThumbMovwMovtImmediatePatch (Fixup16, FixupVal); - } + FixupVal = ThumbMovwMovtImmediateAddress (Fixup16) + (UINT32)Adjust; + ThumbMovwMovtImmediatePatch (Fixup16, FixupVal); break; case EFI_IMAGE_REL_BASED_ARM_MOV32A: -- 1.9.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel