From 96cf70951f53f16853fdd42129b73940e71bab2d Mon Sep 17 00:00:00 2001 From: Ard Biesheuvel Date: Sat, 8 Feb 2025 11:25:19 +0100 Subject: MdePkg/DynamicStackCookieEntryPointLib: Drop execute-in-place versions SEC, PEI_CORE and PEIM type modules generally execute in place from memory that is not writable. This means that it is not generally possible to use an entrypoint implementation that stores a dynamically generated stack cookie into a global variable. For PEIMs in particular, there may be other options, such as a DEPEX on the permanent memory PPI, but the current dynamic implementations of the stack checking library entrypoints for PEI_CORE and PEIM modules must not be used as-is. So remove them, and update the readme accordingly. Signed-off-by: Ard Biesheuvel --- .../Peim/PeimEntryPoint.c | 72 ---------------------- 1 file changed, 72 deletions(-) delete mode 100644 MdePkg/Library/DynamicStackCookieEntryPointLib/Peim/PeimEntryPoint.c (limited to 'MdePkg/Library/DynamicStackCookieEntryPointLib/Peim/PeimEntryPoint.c') diff --git a/MdePkg/Library/DynamicStackCookieEntryPointLib/Peim/PeimEntryPoint.c b/MdePkg/Library/DynamicStackCookieEntryPointLib/Peim/PeimEntryPoint.c deleted file mode 100644 index da03d61dac..0000000000 --- a/MdePkg/Library/DynamicStackCookieEntryPointLib/Peim/PeimEntryPoint.c +++ /dev/null @@ -1,72 +0,0 @@ -/** @file - Entry point to a PEIM. - -Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - -**/ - -#include - -#include -#include - -/** - The entry point of PE/COFF Image for a PEIM. - - This function is the entry point for a PEIM. This function must call ProcessLibraryConstructorList() - and ProcessModuleEntryPointList(). The return value from ProcessModuleEntryPointList() is returned. - If _gPeimRevision is not zero and PeiServices->Hdr.Revision is less than _gPeimRevison, then ASSERT(). - - @param FileHandle Handle of the file being invoked. - @param PeiServices Describes the list of possible PEI Services. - - @retval EFI_SUCCESS The PEIM executed normally. - @retval !EFI_SUCCESS The PEIM failed to execute normally. -**/ -EFI_STATUS -EFIAPI -_CModuleEntryPoint ( - IN EFI_PEI_FILE_HANDLE FileHandle, - IN CONST EFI_PEI_SERVICES **PeiServices - ) -{ - if (_gPeimRevision != 0) { - // - // Make sure that the PEI spec revision of the platform is >= PEI spec revision of the driver - // - ASSERT ((*PeiServices)->Hdr.Revision >= _gPeimRevision); - } - - // - // Call constructor for all libraries - // - ProcessLibraryConstructorList (FileHandle, PeiServices); - - // - // Call the driver entry point - // - return ProcessModuleEntryPointList (FileHandle, PeiServices); -} - -/** - Required by the EBC compiler and identical in functionality to _ModuleEntryPoint(). - - This function is required to call _ModuleEntryPoint() passing in FileHandle and PeiServices. - - @param FileHandle Handle of the file being invoked. - @param PeiServices Describes the list of possible PEI Services. - - @retval EFI_SUCCESS The PEIM executed normally. - @retval !EFI_SUCCESS The PEIM failed to execute normally. - -**/ -EFI_STATUS -EFIAPI -EfiMain ( - IN EFI_PEI_FILE_HANDLE FileHandle, - IN CONST EFI_PEI_SERVICES **PeiServices - ) -{ - return _CModuleEntryPoint (FileHandle, PeiServices); -} -- cgit