From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.65; helo=mga03.intel.com; envelope-from=liming.gao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 73FB321123880 for ; Thu, 6 Sep 2018 22:36:46 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Sep 2018 22:36:45 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.53,340,1531810800"; d="scan'208";a="83825087" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by fmsmga002.fm.intel.com with ESMTP; 06 Sep 2018 22:36:45 -0700 Received: from fmsmsx115.amr.corp.intel.com (10.18.116.19) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 6 Sep 2018 22:36:45 -0700 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by fmsmsx115.amr.corp.intel.com (10.18.116.19) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 6 Sep 2018 22:36:45 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.143]) by shsmsx102.ccr.corp.intel.com ([169.254.2.226]) with mapi id 14.03.0319.002; Fri, 7 Sep 2018 13:36:43 +0800 From: "Gao, Liming" To: "Zeng, Star" , Ard Biesheuvel , "edk2-devel@lists.01.org" CC: "Wang, Jian J" , "Kinney, Michael D" , "Zhang, Chao B" , "Yao, Jiewen" , Laszlo Ersek , "Leif Lindholm" Thread-Topic: [PATCH 2/4] MdePkg/BasePeCoffLib: remove PE/COFF header workaround for ELILO on IPF Thread-Index: AQHURef9aRUTUGD0wEuPdEhOsbl3+qTjwZiAgACMGWA= Date: Fri, 7 Sep 2018 05:36:43 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E2F0689@SHSMSX104.ccr.corp.intel.com> References: <20180906134523.2036-1-ard.biesheuvel@linaro.org> <20180906134523.2036-3-ard.biesheuvel@linaro.org> <0C09AFA07DD0434D9E2A0C6AEB0483103BBB6737@shsmsx102.ccr.corp.intel.com> In-Reply-To: <0C09AFA07DD0434D9E2A0C6AEB0483103BBB6737@shsmsx102.ccr.corp.intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH 2/4] MdePkg/BasePeCoffLib: remove PE/COFF header workaround for ELILO on IPF X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 07 Sep 2018 05:36:46 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Liming Gao >-----Original Message----- >From: Zeng, Star >Sent: Friday, September 07, 2018 1:15 PM >To: Ard Biesheuvel ; edk2-devel@lists.01.org >Cc: Wang, Jian J ; Kinney, Michael D >; Gao, Liming ; Zhang, >Chao B ; Yao, Jiewen ; >Laszlo Ersek ; Leif Lindholm = ; >Zeng, Star >Subject: RE: [PATCH 2/4] MdePkg/BasePeCoffLib: remove PE/COFF header >workaround for ELILO on IPF > >Reviewed-by: Star Zeng > >-----Original Message----- >From: Ard Biesheuvel [mailto:ard.biesheuvel@linaro.org] >Sent: Thursday, September 6, 2018 9:45 PM >To: edk2-devel@lists.01.org >Cc: Ard Biesheuvel ; Zeng, Star >; Wang, Jian J ; Kinney, >Michael D ; Gao, Liming >; Zhang, Chao B ; Yao, >Jiewen ; Laszlo Ersek ; Leif >Lindholm >Subject: [PATCH 2/4] MdePkg/BasePeCoffLib: remove PE/COFF header >workaround for ELILO on IPF > >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=3D816 >Contributed-under: TianoCore Contribution Agreement 1.1 >Signed-off-by: Ard Biesheuvel >--- > 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 -=3D 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 mag= ic >value >- // in the PE/COFF Header. If the MachineType is Itanium(IA64) an= d 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 =3D=3D IMAGE_FILE_MACHINE_IA64 && >Hdr.Pe32->OptionalHeader.Magic =3D=3D >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 =3D FALSE; > ImageContext->Machine =3D Hdr.Pe32->FileHeader.Machine; > >- Magic =3D PeCoffLoaderGetPeHeaderMagicValue (Hdr); >- >- if (Magic =3D=3D EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) { >+ if (Hdr.Pe32->OptionalHeader.Magic =3D=3D >+ EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) { > // > // 1. Check OptionalHeader.NumberOfRvaAndSizes filed. > // >@@ -339,7 +306,7 @@ PeCoffLoaderGetPeHeader ( > ImageContext->SectionAlignment =3D Hdr.Pe32- >>OptionalHeader.SectionAlignment; > ImageContext->SizeOfHeaders =3D Hdr.Pe32- >>OptionalHeader.SizeOfHeaders; > >- } else if (Magic =3D=3D EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC) { >+ } else if (Hdr.Pe32->OptionalHeader.Magic =3D=3D >+ 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 =3D=3D NULL) { >@@ -622,14 +588,12 @@ PeCoffLoaderGetImageInfo ( > return Status; > } > >- Magic =3D PeCoffLoaderGetPeHeaderMagicValue (Hdr); >- > // > // Retrieve the base address of the image > // > if (!(ImageContext->IsTeImage)) { > TeStrippedOffset =3D 0; >- if (Magic =3D=3D EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) { >+ if (Hdr.Pe32->OptionalHeader.Magic =3D=3D >+ EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) { > // > // Use PE32 offset > // >@@ -678,7 +642,7 @@ PeCoffLoaderGetImageInfo ( > } > > if (!(ImageContext->IsTeImage)) { >- if (Magic =3D=3D EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) { >+ if (Hdr.Pe32->OptionalHeader.Magic =3D=3D >+ 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 !=3D NULL); >@@ -985,9 +948,8 @@ PeCoffLoaderRelocateImage ( > if (!(ImageContext->IsTeImage)) { > Hdr.Pe32 =3D (EFI_IMAGE_NT_HEADERS32 *)((UINTN)ImageContext- >>ImageAddress + ImageContext->PeCoffHeaderOffset); > TeStrippedOffset =3D 0; >- Magic =3D PeCoffLoaderGetPeHeaderMagicValue (Hdr); > >- if (Magic =3D=3D EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) { >+ if (Hdr.Pe32->OptionalHeader.Magic =3D=3D >+ 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 =3D PeCoffLoaderGetPeHeaderMagicValue (Hdr); > if (!(ImageContext->IsTeImage)) { > // > // Sizes of AddressOfEntryPoint are different so we need to do this s= afely > // >- if (Magic =3D=3D EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) { >+ if (Hdr.Pe32->OptionalHeader.Magic =3D=3D >+ 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 =3D=3D EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) { >+ if (Hdr.Pe32->OptionalHeader.Magic =3D=3D >+ EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) { > // > // Use PE32 offset > // >@@ -1565,7 +1525,7 @@ PeCoffLoaderLoadImage ( > // > ImageContext->HiiResourceData =3D 0; > if (!(ImageContext->IsTeImage)) { >- if (Magic =3D=3D EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) { >+ if (Hdr.Pe32->OptionalHeader.Magic =3D=3D >+ EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) { > // > // Use PE32 offset > // >@@ -1721,7 +1681,6 @@ PeCoffLoaderRelocateImageForRuntime ( > CHAR8 *FixupData; > UINTN Adjust; > RETURN_STATUS Status; >- UINT16 Magic; > > OldBase =3D (CHAR8 *)((UINTN)ImageBase); > NewBase =3D (CHAR8 *)((UINTN)VirtImageBase); @@ -1750,9 +1709,7 @@ >PeCoffLoaderRelocateImageForRuntime ( > return ; > } > >- Magic =3D PeCoffLoaderGetPeHeaderMagicValue (Hdr); >- >- if (Magic =3D=3D EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) { >+ if (Hdr.Pe32->OptionalHeader.Magic =3D=3D >+ EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) { > // > // Use PE32 offset > // >-- >2.18.0