From patchwork Thu Nov 30 15:24:50 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 120213 Delivered-To: patch@linaro.org Received: by 10.140.22.227 with SMTP id 90csp809795qgn; Thu, 30 Nov 2017 07:25:22 -0800 (PST) X-Google-Smtp-Source: AGs4zMYwHWzdJ57Q8K/acbCivyVp0/LyKe711ua0D3aEtDKSNC0GfTIcSam2dvkOL/7x+r0Nfsz+ X-Received: by 10.99.161.25 with SMTP id b25mr2701750pgf.283.1512055522678; Thu, 30 Nov 2017 07:25:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512055522; cv=none; d=google.com; s=arc-20160816; b=gLMC8tFhqOZabEz+ooLrrZQKoOfTyQviRuM8ptvsecODoQ2aJ6zfWeAh7BzCxvwfuN VSgL2I5tryKjkEcQSIaK+DpnnpXgTcKGfunHHyoBjGPZdoIxlz9jr7z91HI4audZQ+V0 O85veLb4z+/dAcEasoBCLobHvV77uQODAYSIuPQwFfeW1hVzHIPyr9fpZFnlgNIVK2Ij yoaHvNAdrRYqWHUKTvfKhJNuz8ckOD3GmNvCP97+pqS7I0ndXBl+vj0/No++ujh13zf7 hG5RP33ONiXXQhFag4dMXC0qRty17Day/j2R6tRSmIlb0JRV3QClwJfXoK3Amo1+8GnY NqLQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=NA+m6IT0QcKALytP8IRsa79Mzp9qsEKJEAkIWYTUxs0=; b=kVkCD7p4OpKk3aDjbC6pm1HIXtQUkSlf8RRLzHB2zl0CkhzLXVAFBJ37GvkSpnil2A dyzNjLT3LjbsuS69szzL/v0UKxc3qJjoDr9gI+3cw0xXjE6pLURJPwRU15lUYc0z32CQ qNDQMTbY4HuIBUH+CX4V2LZPSusviDR08rDF0p6te76vV1ot0lV2LVImwVsvWa+Gcxih 0rf9a51Bc9K5sCj7i30dUKTYuVNgU+xrF2tUZ+x9rv2l9EedBpQYfJc+6A0H/uCHzDT8 dazl+N4RJP2LqgRL4amaqzpddRzT+v7uqLImnApveuKLYQyhqKLMY27+I3r+1YVNtd4a QzqA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=R8FHJVLT; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id l61si3265183plb.302.2017.11.30.07.25.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 30 Nov 2017 07:25:22 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=R8FHJVLT; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id BC1F02211B431; Thu, 30 Nov 2017 07:20:56 -0800 (PST) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2a00:1450:400c:c09::242; helo=mail-wm0-x242.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 0EC44220F3C23 for ; Thu, 30 Nov 2017 07:20:52 -0800 (PST) Received: by mail-wm0-x242.google.com with SMTP id t8so13709304wmc.3 for ; Thu, 30 Nov 2017 07:25:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=2L0AAaNuria7J8atI9J1Qnt+Bp9RnA/nXnnQ6aH1DPk=; b=R8FHJVLTTeHjE6ZTK4fR1lbnpk+jFD3wijN9YY6zTt7IRpw0ZAM+LixJdzBqTtPwe7 V4WYGzdLyzNAPyd0G4hCNomB3304Ih9u7LQbiNC/zDhR0d255T3wNkGp0UBq74iCgLiT kS9SgzxwW43AKkJGV8ATuNblfNAp7AS4bQ7MY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=2L0AAaNuria7J8atI9J1Qnt+Bp9RnA/nXnnQ6aH1DPk=; b=sZP9prSuQwCfWraYG9uc+78Qm5IrhX9aQgYF/H5+HXIs+9OL/VhQQHhdOZcm8DWAI2 wGmox9QOrcqFRB08JcEaCoPyjp4afNdfENNJLF2PJxcpBwG7OlEs6mcGnHmD41N3CTPo 8jjKFEu6AXhKKChJL7m7wnDDImo8WhZ6ypprT0hRbHTaTRbW9fVPo90f3iUo9Vh86wnj 0qooKKZn7gRQpBf80/SZLYzBbwHaOVpdnEH8WnMAzsM4eT3iS++xM8yp0j3BVsBi8Nl0 6Kab24CAEP9fKDSu9osjhRtscnSDqZcbX14LoKVaDCJ4OBUW0/DSD3msbnGEuItkED9A ujhw== X-Gm-Message-State: AJaThX6c1NEr66AP/7KLAgPJbpqotTHCUQlu0E3FziKNe3EQiSJ19XKl V1pAwJyZNvAG/tnOhRyYn4Gxsrnz9Ok= X-Received: by 10.28.61.87 with SMTP id k84mr2172602wma.48.1512055516690; Thu, 30 Nov 2017 07:25:16 -0800 (PST) Received: from localhost.localdomain ([105.150.171.234]) by smtp.gmail.com with ESMTPSA id 43sm2566328wru.81.2017.11.30.07.25.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 30 Nov 2017 07:25:15 -0800 (PST) From: Ard Biesheuvel To: edk2-devel@lists.01.org Date: Thu, 30 Nov 2017 15:24:50 +0000 Message-Id: <20171130152453.19205-5-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171130152453.19205-1-ard.biesheuvel@linaro.org> References: <20171130152453.19205-1-ard.biesheuvel@linaro.org> Subject: [edk2] [PATCH 4/7] ArmPlatformPkg/PrePi: don't expose 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: , Cc: leif.lindholm@linaro.org, Ard Biesheuvel MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" Avoid the need to preserve all memory exposed by PrePi indefinitely by removing the 'feature' that exposes the PE/COFF and LZMA libraries via special HOBs to other modules that may want to reuse the code. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel --- ArmPlatformPkg/PrePi/LzmaDecompress.h | 103 -------------------- ArmPlatformPkg/PrePi/PeiMPCore.inf | 1 - ArmPlatformPkg/PrePi/PeiUniCore.inf | 1 - ArmPlatformPkg/PrePi/PrePi.c | 11 --- 4 files changed, 116 deletions(-) -- 2.11.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/ArmPlatformPkg/PrePi/LzmaDecompress.h b/ArmPlatformPkg/PrePi/LzmaDecompress.h deleted file mode 100644 index a79ff343d231..000000000000 --- a/ArmPlatformPkg/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/ArmPlatformPkg/PrePi/PeiMPCore.inf b/ArmPlatformPkg/PrePi/PeiMPCore.inf index 636049d4f44d..ccb5388e5516 100644 --- a/ArmPlatformPkg/PrePi/PeiMPCore.inf +++ b/ArmPlatformPkg/PrePi/PeiMPCore.inf @@ -52,7 +52,6 @@ [LibraryClasses] SerialPortLib ExtractGuidedSectionLib LzmaDecompressLib - PeCoffGetEntryPointLib DebugAgentLib PrePiLib ArmPlatformLib diff --git a/ArmPlatformPkg/PrePi/PeiUniCore.inf b/ArmPlatformPkg/PrePi/PeiUniCore.inf index f37ddec9d13d..2d376c30d400 100644 --- a/ArmPlatformPkg/PrePi/PeiUniCore.inf +++ b/ArmPlatformPkg/PrePi/PeiUniCore.inf @@ -51,7 +51,6 @@ [LibraryClasses] SerialPortLib ExtractGuidedSectionLib LzmaDecompressLib - PeCoffGetEntryPointLib DebugAgentLib PrePiLib ArmPlatformLib diff --git a/ArmPlatformPkg/PrePi/PrePi.c b/ArmPlatformPkg/PrePi/PrePi.c index e5016ea45359..a60cafdce45e 100644 --- a/ArmPlatformPkg/PrePi/PrePi.c +++ b/ArmPlatformPkg/PrePi/PrePi.c @@ -17,7 +17,6 @@ #include #include #include -#include #include #include #include @@ -25,10 +24,8 @@ #include #include #include -#include #include "PrePi.h" -#include "LzmaDecompress.h" #define IS_XIP() (((UINT64)FixedPcdGet64 (PcdFdBaseAddress) > mSystemMemoryEnd) || \ ((FixedPcdGet64 (PcdFdBaseAddress) + FixedPcdGet32 (PcdFdSize)) < FixedPcdGet64 (PcdSystemMemoryBase))) @@ -168,14 +165,6 @@ PrePiMain ( ExtractGuidedSectionLibConstructor (); LzmaDecompressLibConstructor (); - // 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);