On 09/06/18 15:45, Ard Biesheuvel wrote:
> Now that Itanium support has been dropped, we can remove the various
> occurrences of the ELILO on Itanium PE/COFF header workaround.
> 
> Link: https://bugzilla.tianocore.org/show_bug.cgi?id=816
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Ard Biesheuvel <[email protected]>
> ---
>  MdePkg/Library/BasePeCoffLib/BasePeCoff.c | 61 +++-----------------
>  1 file changed, 9 insertions(+), 52 deletions(-)
> 
> diff --git a/MdePkg/Library/BasePeCoffLib/BasePeCoff.c 
> b/MdePkg/Library/BasePeCoffLib/BasePeCoff.c
> index 32eca0ad2ef4..c57816a80887 100644
> --- a/MdePkg/Library/BasePeCoffLib/BasePeCoff.c
> +++ b/MdePkg/Library/BasePeCoffLib/BasePeCoff.c
> @@ -46,36 +46,6 @@ PeCoffLoaderAdjustOffsetForTeImage (
>    SectionHeader->PointerToRawData -= TeStrippedOffset;
>  }
>  
> -/**
> -  Retrieves the magic value from the PE/COFF header.
> -
> -  @param  Hdr             The buffer in which to return the PE32, PE32+, or 
> TE header.
> -
> -  @return EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC - Image is PE32
> -  @return EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC - Image is PE32+
> -
> -**/
> -UINT16
> -PeCoffLoaderGetPeHeaderMagicValue (
> -  IN  EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION  Hdr
> -  )
> -{
> -  //
> -  // NOTE: Some versions of Linux ELILO for Itanium have an incorrect magic 
> value
> -  //       in the PE/COFF Header.  If the MachineType is Itanium(IA64) and 
> the
> -  //       Magic value in the OptionalHeader is  
> EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC
> -  //       then override the returned value to 
> EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC
> -  //
> -  if (Hdr.Pe32->FileHeader.Machine == IMAGE_FILE_MACHINE_IA64 && 
> Hdr.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {
> -    return EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC;
> -  }
> -  //
> -  // Return the magic value from the PC/COFF Optional Header
> -  //
> -  return Hdr.Pe32->OptionalHeader.Magic;
> -}
> -
> -
>  /**
>    Retrieves the PE or TE Header from a PE/COFF or TE image.
>  
> @@ -101,7 +71,6 @@ PeCoffLoaderGetPeHeader (
>    EFI_IMAGE_DOS_HEADER  DosHdr;
>    UINTN                 Size;
>    UINTN                 ReadSize;
> -  UINT16                Magic;
>    UINT32                SectionHeaderOffset;
>    UINT32                Index;
>    UINT32                HeaderWithoutDataDir;
> @@ -222,9 +191,7 @@ PeCoffLoaderGetPeHeader (
>      ImageContext->IsTeImage = FALSE;
>      ImageContext->Machine = Hdr.Pe32->FileHeader.Machine;
>  
> -    Magic = PeCoffLoaderGetPeHeaderMagicValue (Hdr);
> -
> -    if (Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {
> +    if (Hdr.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) 
> {
>        //
>        // 1. Check OptionalHeader.NumberOfRvaAndSizes filed.
>        //
> @@ -339,7 +306,7 @@ PeCoffLoaderGetPeHeader (
>        ImageContext->SectionAlignment  = 
> Hdr.Pe32->OptionalHeader.SectionAlignment;
>        ImageContext->SizeOfHeaders     = 
> Hdr.Pe32->OptionalHeader.SizeOfHeaders;
>  
> -    } else if (Magic == EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC) {
> +    } else if (Hdr.Pe32->OptionalHeader.Magic == 
> EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC) {
>        //
>        // 1. Check FileHeader.NumberOfRvaAndSizes filed.
>        //
> @@ -605,7 +572,6 @@ PeCoffLoaderGetImageInfo (
>    EFI_IMAGE_SECTION_HEADER              SectionHeader;
>    EFI_IMAGE_DEBUG_DIRECTORY_ENTRY       DebugEntry;
>    UINT32                                NumberOfRvaAndSizes;
> -  UINT16                                Magic;
>    UINT32                                TeStrippedOffset;
>  
>    if (ImageContext == NULL) {
> @@ -622,14 +588,12 @@ PeCoffLoaderGetImageInfo (
>      return Status;
>    }
>  
> -  Magic = PeCoffLoaderGetPeHeaderMagicValue (Hdr);
> -
>    //
>    // Retrieve the base address of the image
>    //
>    if (!(ImageContext->IsTeImage)) {
>      TeStrippedOffset = 0;
> -    if (Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {
> +    if (Hdr.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) 
> {
>        //
>        // Use PE32 offset
>        //
> @@ -678,7 +642,7 @@ PeCoffLoaderGetImageInfo (
>    }
>  
>    if (!(ImageContext->IsTeImage)) {
> -    if (Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {
> +    if (Hdr.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) 
> {
>        //
>        // Use PE32 offset
>        //
> @@ -952,7 +916,6 @@ PeCoffLoaderRelocateImage (
>    CHAR8                                 *FixupData;
>    PHYSICAL_ADDRESS                      BaseAddress;
>    UINT32                                NumberOfRvaAndSizes;
> -  UINT16                                Magic;
>    UINT32                                TeStrippedOffset;
>  
>    ASSERT (ImageContext != NULL);
> @@ -985,9 +948,8 @@ PeCoffLoaderRelocateImage (
>    if (!(ImageContext->IsTeImage)) {
>      Hdr.Pe32 = (EFI_IMAGE_NT_HEADERS32 *)((UINTN)ImageContext->ImageAddress 
> + ImageContext->PeCoffHeaderOffset);
>      TeStrippedOffset = 0;
> -    Magic = PeCoffLoaderGetPeHeaderMagicValue (Hdr);
>  
> -    if (Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {
> +    if (Hdr.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) 
> {
>        //
>        // Use PE32 offset
>        //
> @@ -1230,7 +1192,6 @@ PeCoffLoaderLoadImage (
>    UINTN                                 Size;
>    UINT32                                TempDebugEntryRva;
>    UINT32                                NumberOfRvaAndSizes;
> -  UINT16                                Magic;
>    EFI_IMAGE_RESOURCE_DIRECTORY          *ResourceDirectory;
>    EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY    *ResourceDirectoryEntry;
>    EFI_IMAGE_RESOURCE_DIRECTORY_STRING   *ResourceDirectoryString;
> @@ -1404,12 +1365,11 @@ PeCoffLoaderLoadImage (
>    //
>    // Get image's entry point
>    //
> -  Magic = PeCoffLoaderGetPeHeaderMagicValue (Hdr);
>    if (!(ImageContext->IsTeImage)) {
>      //
>      // Sizes of AddressOfEntryPoint are different so we need to do this 
> safely
>      //
> -    if (Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {
> +    if (Hdr.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) 
> {
>        //
>        // Use PE32 offset
>        //
> @@ -1444,7 +1404,7 @@ PeCoffLoaderLoadImage (
>    // the optional header to verify a desired directory entry is there.
>    //
>    if (!(ImageContext->IsTeImage)) {
> -    if (Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {
> +    if (Hdr.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) 
> {
>        //
>        // Use PE32 offset
>        //
> @@ -1565,7 +1525,7 @@ PeCoffLoaderLoadImage (
>    //
>    ImageContext->HiiResourceData = 0;
>    if (!(ImageContext->IsTeImage)) {
> -    if (Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {
> +    if (Hdr.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) 
> {
>        //
>        // Use PE32 offset
>        //
> @@ -1721,7 +1681,6 @@ PeCoffLoaderRelocateImageForRuntime (
>    CHAR8                               *FixupData;
>    UINTN                               Adjust;
>    RETURN_STATUS                       Status;
> -  UINT16                              Magic;
>  
>    OldBase = (CHAR8 *)((UINTN)ImageBase);
>    NewBase = (CHAR8 *)((UINTN)VirtImageBase);
> @@ -1750,9 +1709,7 @@ PeCoffLoaderRelocateImageForRuntime (
>      return ;
>    }
>  
> -  Magic = PeCoffLoaderGetPeHeaderMagicValue (Hdr);
> -
> -  if (Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {
> +  if (Hdr.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {
>      //
>      // Use PE32 offset
>      //
> 

Reviewed-by: Laszlo Ersek <[email protected]>
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to