diff --git a/ArmVirtPkg/ArmVirt.dsc.inc b/ArmVirtPkg/ArmVirt.dsc.inc index 1f428a8a64..d791351f6b 100644 --- a/ArmVirtPkg/ArmVirt.dsc.inc +++ b/ArmVirtPkg/ArmVirt.dsc.inc @@ -33,13 +33,6 @@ DEFINE FD_NUM_BLOCKS = 0x300 !endif -# Dynamic stack cookies are not supported on ARM -!if $(ARCH) == ARM - DEFINE CUSTOM_STACK_CHECK_LIB = STATIC -!else - DEFINE CUSTOM_STACK_CHECK_LIB = DYNAMIC -!endif - [BuildOptions.common.EDKII.DXE_CORE,BuildOptions.common.EDKII.DXE_DRIVER,BuildOptions.common.EDKII.UEFI_DRIVER,BuildOptions.common.EDKII.UEFI_APPLICATION] GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000 diff --git a/ArmVirtPkg/ArmVirtCloudHv.dsc b/ArmVirtPkg/ArmVirtCloudHv.dsc index 4ebaf1efcb..90ea579d11 100644 --- a/ArmVirtPkg/ArmVirtCloudHv.dsc +++ b/ArmVirtPkg/ArmVirtCloudHv.dsc @@ -28,7 +28,11 @@ DEFINE TTY_TERMINAL = FALSE DEFINE SECURE_BOOT_ENABLE = FALSE -# This comes before MdeLibs to ensure stack cookie configuration is chosen +# This comes at the beginning of includes to pick all relevant defines early on. +!include ArmVirtPkg/ArmVirtStackCookies.dsc.inc + +# This comes at the end of includes to pick all relevant components without any +# unintentional overrides. !include ArmVirtPkg/ArmVirt.dsc.inc [LibraryClasses.common] diff --git a/ArmVirtPkg/ArmVirtKvmTool.dsc b/ArmVirtPkg/ArmVirtKvmTool.dsc index e5751f904a..18d60f6cea 100644 --- a/ArmVirtPkg/ArmVirtKvmTool.dsc +++ b/ArmVirtPkg/ArmVirtKvmTool.dsc @@ -30,9 +30,8 @@ [Defines.AARCH64] DEFINE ACPIVIEW_ENABLE = TRUE - -# This comes before MdeLibs to ensure stack cookie configuration is chosen -!include ArmVirtPkg/ArmVirt.dsc.inc +# This comes at the beginning of includes to pick all relevant defines early on. +!include ArmVirtPkg/ArmVirtStackCookies.dsc.inc !if $(ARCH) == AARCH64 !include DynamicTablesPkg/DynamicTables.dsc.inc @@ -40,6 +39,10 @@ !include MdePkg/MdeLibs.dsc.inc +# This comes at the end of includes to pick all relevant components without any +# unintentional overrides. +!include ArmVirtPkg/ArmVirt.dsc.inc + [LibraryClasses.common] ArmLib|ArmPkg/Library/ArmLib/ArmBaseLib.inf ArmMmuLib|ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib.inf diff --git a/ArmVirtPkg/ArmVirtQemu.dsc b/ArmVirtPkg/ArmVirtQemu.dsc index 39470ddd42..7b26b5059e 100644 --- a/ArmVirtPkg/ArmVirtQemu.dsc +++ b/ArmVirtPkg/ArmVirtQemu.dsc @@ -45,17 +45,21 @@ DEFINE NETWORK_ISCSI_ENABLE = FALSE DEFINE NETWORK_PXE_BOOT_ENABLE = TRUE +# This comes at the beginning of includes to pick all relevant defines early on. +!include ArmVirtPkg/ArmVirtStackCookies.dsc.inc + !if $(NETWORK_SNP_ENABLE) == TRUE !error "NETWORK_SNP_ENABLE is IA32/X64/EBC only" !endif !include NetworkPkg/NetworkDefines.dsc.inc -# This comes before MdeLibs to ensure stack cookie configuration is chosen -!include ArmVirtPkg/ArmVirt.dsc.inc - !include MdePkg/MdeLibs.dsc.inc +# This comes at the end of includes to pick all relevant components without any +# unintentional overrides. +!include ArmVirtPkg/ArmVirt.dsc.inc + [LibraryClasses.common] ArmLib|ArmPkg/Library/ArmLib/ArmBaseLib.inf ArmMmuLib|ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib.inf diff --git a/ArmVirtPkg/ArmVirtQemuKernel.dsc b/ArmVirtPkg/ArmVirtQemuKernel.dsc index 9f0b53a1ea..49bd99346a 100644 --- a/ArmVirtPkg/ArmVirtQemuKernel.dsc +++ b/ArmVirtPkg/ArmVirtQemuKernel.dsc @@ -42,17 +42,21 @@ DEFINE NETWORK_ISCSI_ENABLE = FALSE DEFINE NETWORK_PXE_BOOT_ENABLE = TRUE +# This comes at the beginning of includes to pick all relevant defines early on. +!include ArmVirtPkg/ArmVirtStackCookies.dsc.inc + !if $(NETWORK_SNP_ENABLE) == TRUE !error "NETWORK_SNP_ENABLE is IA32/X64/EBC only" !endif !include NetworkPkg/NetworkDefines.dsc.inc -# This comes before MdeLibs to ensure stack cookie configuration is chosen -!include ArmVirtPkg/ArmVirt.dsc.inc - !include MdePkg/MdeLibs.dsc.inc +# This comes at the end of includes to pick all relevant components without any +# unintentional overrides. +!include ArmVirtPkg/ArmVirt.dsc.inc + [LibraryClasses.common] ArmLib|ArmPkg/Library/ArmLib/ArmBaseLib.inf ArmMmuLib|ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib.inf diff --git a/ArmVirtPkg/ArmVirtStackCookies.dsc.inc b/ArmVirtPkg/ArmVirtStackCookies.dsc.inc new file mode 100644 index 0000000000..788fdccc16 --- /dev/null +++ b/ArmVirtPkg/ArmVirtStackCookies.dsc.inc @@ -0,0 +1,16 @@ +# +# Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# + +[Defines] + +# Dynamic stack cookies are not supported on ARM +!if $(ARCH) == ARM + DEFINE CUSTOM_STACK_CHECK_LIB = STATIC +!else + DEFINE CUSTOM_STACK_CHECK_LIB = DYNAMIC +!endif + diff --git a/ArmVirtPkg/ArmVirtXen.dsc b/ArmVirtPkg/ArmVirtXen.dsc index edf7c93e6f..f0bca166a7 100644 --- a/ArmVirtPkg/ArmVirtXen.dsc +++ b/ArmVirtPkg/ArmVirtXen.dsc @@ -23,11 +23,15 @@ SKUID_IDENTIFIER = DEFAULT FLASH_DEFINITION = ArmVirtPkg/ArmVirtXen.fdf -# This comes before MdeLibs to ensure stack cookie configuration is chosen -!include ArmVirtPkg/ArmVirt.dsc.inc +# This comes at the beginning of includes to pick all relevant defines early on. +!include ArmVirtPkg/ArmVirtStackCookies.dsc.inc !include MdePkg/MdeLibs.dsc.inc +# This comes at the end of includes to pick all relevant components without any +# unintentional overrides. +!include ArmVirtPkg/ArmVirt.dsc.inc + [LibraryClasses] SerialPortLib|OvmfPkg/Library/XenConsoleSerialPortLib/XenConsoleSerialPortLib.inf !if $(TARGET) != RELEASE