From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=209.132.183.28; helo=mx1.redhat.com; envelope-from=lersek@redhat.com; receiver=edk2-devel@lists.01.org Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) (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 F2F7421A1099D for ; Mon, 27 Nov 2017 04:28:01 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8E2403DBE3; Mon, 27 Nov 2017 12:32:23 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-120-232.rdu2.redhat.com [10.10.120.232]) by smtp.corp.redhat.com (Postfix) with ESMTP id 78BB05EDE8; Mon, 27 Nov 2017 12:32:22 +0000 (UTC) To: Ard Biesheuvel , edk2-devel@lists.01.org References: <20171124095103.26099-1-ard.biesheuvel@linaro.org> From: Laszlo Ersek Message-ID: Date: Mon, 27 Nov 2017 13:32:21 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <20171124095103.26099-1-ard.biesheuvel@linaro.org> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Mon, 27 Nov 2017 12:32:23 +0000 (UTC) Subject: Re: [PATCH] ArmVirtPkg/PrePi: don't export PE/COFF and LZMA libraries via HOBs X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 Nov 2017 12:28:02 -0000 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit On 11/24/17 10:51, Ard Biesheuvel wrote: > The PrePi code we inherited from ArmPlatformPkg contains a rather > obscure optimization, where entry points of the PE/COFF and LZMA > handling routines are recorded in special HOBs, allowing DXE core > to call into that code directly rather than carry its own copy of > these libraries. > > Given that no ArmVirtPkg platforms actually include the library > resolutions* that take advantage of these optimizations, let's not > bother with them, and remove the associated code. > > * EmbeddedPkg/Library/LzmaHobCustomDecompressLib/LzmaHobCustomDecompressLib.inf > EmbeddedPkg/Library/DxeHobPeCoffLib/DxeHobPeCoffLib.inf > > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Ard Biesheuvel > --- > ArmVirtPkg/PrePi/ArmVirtPrePiUniCoreRelocatable.inf | 1 - > ArmVirtPkg/PrePi/LzmaDecompress.h | 103 -------------------- > ArmVirtPkg/PrePi/PrePi.c | 11 --- > 3 files changed, 115 deletions(-) > > diff --git a/ArmVirtPkg/PrePi/ArmVirtPrePiUniCoreRelocatable.inf b/ArmVirtPkg/PrePi/ArmVirtPrePiUniCoreRelocatable.inf > index 58290d2d1b76..b3a3f5da065e 100755 > --- a/ArmVirtPkg/PrePi/ArmVirtPrePiUniCoreRelocatable.inf > +++ b/ArmVirtPkg/PrePi/ArmVirtPrePiUniCoreRelocatable.inf > @@ -51,7 +51,6 @@ [LibraryClasses] > SerialPortLib > ExtractGuidedSectionLib > LzmaDecompressLib > - PeCoffGetEntryPointLib > PrePiLib > MemoryAllocationLib > HobLib > diff --git a/ArmVirtPkg/PrePi/LzmaDecompress.h b/ArmVirtPkg/PrePi/LzmaDecompress.h > deleted file mode 100644 > index a79ff343d231..000000000000 > --- a/ArmVirtPkg/PrePi/LzmaDecompress.h > +++ /dev/null > @@ -1,103 +0,0 @@ > -/** @file > - LZMA Decompress Library header file > - > - Copyright (c) 2006 - 2010, Intel Corporation. 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. > - > -**/ > - > -#ifndef __LZMA_DECOMPRESS_H___ > -#define __LZMA_DECOMPRESS_H___ > - > -/** > - Examines a GUIDed section and returns the size of the decoded buffer and the > - size of an scratch buffer required to actually decode the data in a GUIDed section. > - > - Examines a GUIDed section specified by InputSection. > - If GUID for InputSection does not match the GUID that this handler supports, > - then RETURN_UNSUPPORTED is returned. > - If the required information can not be retrieved from InputSection, > - then RETURN_INVALID_PARAMETER is returned. > - If the GUID of InputSection does match the GUID that this handler supports, > - then the size required to hold the decoded buffer is returned in OututBufferSize, > - the size of an optional scratch buffer is returned in ScratchSize, and the Attributes field > - from EFI_GUID_DEFINED_SECTION header of InputSection is returned in SectionAttribute. > - > - If InputSection is NULL, then ASSERT(). > - If OutputBufferSize is NULL, then ASSERT(). > - If ScratchBufferSize is NULL, then ASSERT(). > - If SectionAttribute is NULL, then ASSERT(). > - > - > - @param[in] InputSection A pointer to a GUIDed section of an FFS formatted file. > - @param[out] OutputBufferSize A pointer to the size, in bytes, of an output buffer required > - if the buffer specified by InputSection were decoded. > - @param[out] ScratchBufferSize A pointer to the size, in bytes, required as scratch space > - if the buffer specified by InputSection were decoded. > - @param[out] SectionAttribute A pointer to the attributes of the GUIDed section. See the Attributes > - field of EFI_GUID_DEFINED_SECTION in the PI Specification. > - > - @retval RETURN_SUCCESS The information about InputSection was returned. > - @retval RETURN_UNSUPPORTED The section specified by InputSection does not match the GUID this handler supports. > - @retval RETURN_INVALID_PARAMETER The information can not be retrieved from the section specified by InputSection. > - > -**/ > -RETURN_STATUS > -EFIAPI > -LzmaGuidedSectionGetInfo ( > - IN CONST VOID *InputSection, > - OUT UINT32 *OutputBufferSize, > - OUT UINT32 *ScratchBufferSize, > - OUT UINT16 *SectionAttribute > - ); > - > -/** > - Decompress a LZAM compressed GUIDed section into a caller allocated output buffer. > - > - Decodes the GUIDed section specified by InputSection. > - If GUID for InputSection does not match the GUID that this handler supports, then RETURN_UNSUPPORTED is returned. > - If the data in InputSection can not be decoded, then RETURN_INVALID_PARAMETER is returned. > - If the GUID of InputSection does match the GUID that this handler supports, then InputSection > - is decoded into the buffer specified by OutputBuffer and the authentication status of this > - decode operation is returned in AuthenticationStatus. If the decoded buffer is identical to the > - data in InputSection, then OutputBuffer is set to point at the data in InputSection. Otherwise, > - the decoded data will be placed in caller allocated buffer specified by OutputBuffer. > - > - If InputSection is NULL, then ASSERT(). > - If OutputBuffer is NULL, then ASSERT(). > - If ScratchBuffer is NULL and this decode operation requires a scratch buffer, then ASSERT(). > - If AuthenticationStatus is NULL, then ASSERT(). > - > - > - @param[in] InputSection A pointer to a GUIDed section of an FFS formatted file. > - @param[out] OutputBuffer A pointer to a buffer that contains the result of a decode operation. > - @param[out] ScratchBuffer A caller allocated buffer that may be required by this function > - as a scratch buffer to perform the decode operation. > - @param[out] AuthenticationStatus > - A pointer to the authentication status of the decoded output buffer. > - See the definition of authentication status in the EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI > - section of the PI Specification. EFI_AUTH_STATUS_PLATFORM_OVERRIDE must > - never be set by this handler. > - > - @retval RETURN_SUCCESS The buffer specified by InputSection was decoded. > - @retval RETURN_UNSUPPORTED The section specified by InputSection does not match the GUID this handler supports. > - @retval RETURN_INVALID_PARAMETER The section specified by InputSection can not be decoded. > - > -**/ > -RETURN_STATUS > -EFIAPI > -LzmaGuidedSectionExtraction ( > - IN CONST VOID *InputSection, > - OUT VOID **OutputBuffer, > - OUT VOID *ScratchBuffer, OPTIONAL > - OUT UINT32 *AuthenticationStatus > - ); > - > -#endif // __LZMADECOMPRESS_H__ > - > diff --git a/ArmVirtPkg/PrePi/PrePi.c b/ArmVirtPkg/PrePi/PrePi.c > index fce4ab9428a5..f6abe2f2016b 100755 > --- a/ArmVirtPkg/PrePi/PrePi.c > +++ b/ArmVirtPkg/PrePi/PrePi.c > @@ -17,7 +17,6 @@ > > #include > #include > -#include > #include > #include > #include > @@ -25,10 +24,8 @@ > > #include > #include > -#include > > #include "PrePi.h" > -#include "LzmaDecompress.h" > > VOID > EFIAPI > @@ -98,14 +95,6 @@ PrePiMain ( > // SEC phase needs to run library constructors by hand. > ProcessLibraryConstructorList (); > > - // Build HOBs to pass up our version of stuff the DXE Core needs to save space > - BuildPeCoffLoaderHob (); > - BuildExtractSectionHob ( > - &gLzmaCustomDecompressGuid, > - LzmaGuidedSectionGetInfo, > - LzmaGuidedSectionExtraction > - ); > - > // Assume the FV that contains the SEC (our code) also contains a compressed FV. > Status = DecompressFirstFv (); > ASSERT_EFI_ERROR (Status); > Acked-by: Laszlo Ersek