diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
index 94874135c2..601497dcf1 100755
--- a/BaseTools/Conf/tools_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -1858,7 +1858,7 @@ DEFINE GCC_ARM_CC_XIPFLAGS = -mno-unaligned-access
DEFINE GCC_AARCH64_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mlittle-endian -fno-short-enums -fverbose-asm -funsigned-char -ffunction-sections -fdata-sections -Wno-address -fno-asynchronous-unwind-tables -fno-unwind-tables -fno-pic -fno-pie -ffixed-x18
DEFINE GCC_AARCH64_CC_XIPFLAGS = -mstrict-align -mgeneral-regs-only
DEFINE GCC_DLINK_FLAGS_COMMON = -nostdlib --pie
-DEFINE GCC_DLINK2_FLAGS_COMMON = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/Base.lds
+DEFINE GCC_DLINK2_FLAGS_COMMON = -Wl,--default-script=$(EDK_TOOLS_PATH)/Scripts/Base.lds
DEFINE GCC_IA32_X64_DLINK_COMMON = DEF(GCC_DLINK_FLAGS_COMMON) --gc-sections
DEFINE GCC_ARM_AARCH64_DLINK_COMMON= -Wl,--emit-relocs -nostdlib -Wl,--gc-sections -u $(IMAGE_ENTRY_POINT) -Wl,-e,$(IMAGE_ENTRY_POINT),-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map
DEFINE GCC_LOONGARCH64_DLINK_COMMON= -Wl,--emit-relocs -nostdlib -Wl,--gc-sections -u $(IMAGE_ENTRY_POINT) -Wl,-e,$(IMAGE_ENTRY_POINT),-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map
@@ -1961,7 +1961,7 @@ DEFINE GCC5_ASLCC_FLAGS = DEF(GCC49_ASLCC_FLAGS) -fno-lto
DEFINE GCC5_RISCV_ALL_CC_FLAGS = -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -include AutoGen.h -fno-common -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings -msmall-data-limit=0
DEFINE GCC5_RISCV_ALL_DLINK_COMMON = -nostdlib -Wl,-n,-q,--gc-sections -z max-page-size=0x1000
DEFINE GCC5_RISCV_ALL_DLINK_FLAGS = DEF(GCC5_RISCV_ALL_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map
-DEFINE GCC5_RISCV_ALL_DLINK2_FLAGS =,--script=$(EDK_TOOLS_PATH)/Scripts/Base.lds
+DEFINE GCC5_RISCV_ALL_DLINK2_FLAGS =,--default-script=$(EDK_TOOLS_PATH)/Scripts/Base.lds
DEFINE GCC5_RISCV_ALL_ASM_FLAGS = -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h
DEFINE GCC5_RISCV_ALL_CC_FLAGS_WARNING_DISABLE = -Wno-tautological-compare -Wno-pointer-compare
@@ -2876,11 +2876,9 @@ DEFINE CLANGDWARF_X64_PREFIX = ENV(CLANG_BIN)
# LLVM/CLANG doesn't support -n link option. So, it can't share the same IA32_X64_DLINK_COMMON flag.
DEFINE CLANGDWARF_IA32_X64_DLINK_COMMON = -nostdlib -Wl,-q,--gc-sections -z max-page-size=0x1000 -Wl,-z,notext
-DEFINE CLANGDWARF_DLINK2_FLAGS_COMMON = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/Base.lds
-DEFINE CLANGDWARF_IA32_X64_ASLDLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_COMMON) DEF(CLANGDWARF_DLINK2_FLAGS_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable
+DEFINE CLANGDWARF_IA32_X64_ASLDLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable
DEFINE CLANGDWARF_IA32_X64_DLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive
-DEFINE CLANGDWARF_IA32_DLINK2_FLAGS = DEF(CLANGDWARF_DLINK2_FLAGS_COMMON) -no-pie
-DEFINE CLANGDWARF_X64_DLINK2_FLAGS = DEF(CLANGDWARF_DLINK2_FLAGS_COMMON)
+DEFINE CLANGDWARF_IA32_DLINK2_FLAGS = -no-pie
###########################
# CLANGDWARF IA32 definitions
@@ -2946,15 +2944,15 @@ NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O0 -
DEBUG_CLANGDWARF_X64_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANG38_X64_TARGET) -g
DEBUG_CLANGDWARF_X64_DLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs
-DEBUG_CLANGDWARF_X64_DLINK2_FLAGS = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld
+DEBUG_CLANGDWARF_X64_DLINK2_FLAGS = -O3 -fuse-ld=lld
RELEASE_CLANGDWARF_X64_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANG38_X64_TARGET)
RELEASE_CLANGDWARF_X64_DLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs
-RELEASE_CLANGDWARF_X64_DLINK2_FLAGS = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld
+RELEASE_CLANGDWARF_X64_DLINK2_FLAGS = -O3 -fuse-ld=lld
NOOPT_CLANGDWARF_X64_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -O0 DEF(CLANG38_X64_TARGET) -g
NOOPT_CLANGDWARF_X64_DLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs
-NOOPT_CLANGDWARF_X64_DLINK2_FLAGS = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O0 -fuse-ld=lld
+NOOPT_CLANGDWARF_X64_DLINK2_FLAGS = -O0 -fuse-ld=lld
#
#
diff --git a/BaseTools/Scripts/Merge.lds b/BaseTools/Scripts/Merge.lds
new file mode 100644
index 0000000000..7bb9ea44ff
--- /dev/null
+++ b/BaseTools/Scripts/Merge.lds
@@ -0,0 +1,62 @@
+/** @file
+
+ Unified linker script for GCC, CLANG based builds
+
+ Copyright (c) 2023, Mikhail Krichanov. All rights reserved.
+ Copyright (c) 2010 - 2021, Intel Corporation. All rights reserved.
+ Copyright (c) 2015, Linaro Ltd. All rights reserved.
+ (C) Copyright 2016 Hewlett Packard Enterprise Development LP
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+SECTIONS {
+
+ .text CONSTANT(MAXPAGESIZE) : ALIGN(CONSTANT(MAXPAGESIZE)) {
+ *(.text .text.* .stub .gnu.linkonce.t.*)
+ *(.rodata .rodata.* .data.rel.ro .data.rel.ro.* .gnu.linkonce.r.*)
+ *(.got .got.*)
+
+ /*
+ * The contents of AutoGen.c files are mostly constant from the POV of the
+ * program, but most of it ends up in .data or .bss by default since few of
+ * the variable definitions that get emitted are declared as CONST.
+ * Unfortunately, we cannot pull it into the .text section entirely, since
+ * patchable PCDs are also emitted here, but we can at least move all of the
+ * emitted GUIDs here.
+ */
+ *:AutoGen.obj(.data.g*Guid)
+ }
+
+ .data : ALIGN(CONSTANT(MAXPAGESIZE)) {
+ *(.data .data.* .gnu.linkonce.d.*)
+ *(.bss .bss.*)
+ }
+
+ .hii : ALIGN(CONSTANT(MAXPAGESIZE)) {
+ KEEP (*(.hii))
+ }
+
+ .eh_frame : ALIGN(CONSTANT(MAXPAGESIZE)) {
+ KEEP (*(.eh_frame))
+ }
+
+ .rela (INFO) : {
+ *(.rela .rela.*)
+ }
+
+ .build-id (INFO) : { *(.note.gnu.build-id) }
+
+ /DISCARD/ : {
+ *(.note.GNU-stack)
+ *(.gnu_debuglink)
+ *(.interp)
+ *(.dynsym)
+ *(.dynstr)
+ *(.hash .gnu.hash)
+ *(.comment)
+ *(COMMON)
+ *(.dynamic)
+ }
+}
diff --git a/Ext4Pkg/Ext4Pkg.dsc b/Ext4Pkg/Ext4Pkg.dsc
index 18cfc102b8..8b72de289d 100644
--- a/Ext4Pkg/Ext4Pkg.dsc
+++ b/Ext4Pkg/Ext4Pkg.dsc
@@ -20,11 +20,13 @@
BUILD_TARGETS = DEBUG|RELEASE|NOOPT
SKUID_IDENTIFIER = DEFAULT
-!include MdePkg/MdeLibs.dsc.inc
+!include MdePkg/MdeBuildOptions.dsc.inc
[BuildOptions]
*_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES
+!include MdePkg/MdeLibs.dsc.inc
+
[LibraryClasses]
#
# Entry Point Libraries
diff --git a/FatPkg/FatPkg.dsc b/FatPkg/FatPkg.dsc
index e377c25ea1..00f89e7229 100644
--- a/FatPkg/FatPkg.dsc
+++ b/FatPkg/FatPkg.dsc
@@ -21,6 +21,8 @@
BUILD_TARGETS = DEBUG|RELEASE|NOOPT
SKUID_IDENTIFIER = DEFAULT
+!include MdePkg/MdeBuildOptions.dsc.inc
+
[BuildOptions]
GCC:RELEASE_*_*_CC_FLAGS = -DMDEPKG_NDEBUG
INTEL:RELEASE_*_*_CC_FLAGS = /D MDEPKG_NDEBUG
diff --git a/IntelFsp2Pkg/IntelFsp2Pkg.dsc b/IntelFsp2Pkg/IntelFsp2Pkg.dsc
index 0713f0028d..8988f89c06 100644
--- a/IntelFsp2Pkg/IntelFsp2Pkg.dsc
+++ b/IntelFsp2Pkg/IntelFsp2Pkg.dsc
@@ -81,5 +81,7 @@
gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80080046
gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07
+!include MdePkg/MdeBuildOptions.dsc.inc
+
[BuildOptions]
*_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES
diff --git a/IntelFsp2WrapperPkg/IntelFsp2WrapperPkg.dsc b/IntelFsp2WrapperPkg/IntelFsp2WrapperPkg.dsc
index db5da76660..33ccde7f05 100644
--- a/IntelFsp2WrapperPkg/IntelFsp2WrapperPkg.dsc
+++ b/IntelFsp2WrapperPkg/IntelFsp2WrapperPkg.dsc
@@ -101,5 +101,7 @@
gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80080046
gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07
+!include MdePkg/MdeBuildOptions.dsc.inc
+
[BuildOptions]
*_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES
diff --git a/MdeModulePkg/MdeModulePkg.dsc b/MdeModulePkg/MdeModulePkg.dsc
index 7e35f2c422..643fda1ee4 100644
--- a/MdeModulePkg/MdeModulePkg.dsc
+++ b/MdeModulePkg/MdeModulePkg.dsc
@@ -516,5 +516,4 @@
[Components.X64]
MdeModulePkg/Universal/CapsulePei/CapsuleX64.inf
-[BuildOptions]
-
+!include MdePkg/MdeBuildOptions.dsc.inc
diff --git a/MdePkg/MdeBuildOptions.dsc.inc b/MdePkg/MdeBuildOptions.dsc.inc
new file mode 100644
index 0000000000..18be6875d6
--- /dev/null
+++ b/MdePkg/MdeBuildOptions.dsc.inc
@@ -0,0 +1,44 @@
+## @file
+# Mde DSC include file for [BuildOptions*] section of all Architectures.
+#
+# This file can be included to a platform DSC file by using
+# "!include MdePkg/MdeBuildOptions.dsc.inc" to specify common build options.
+#
+# Copyright (c) 2021, Marvin Häuser. All rights reserved.
+# Copyright (c) 2023, Mikhail Krichanov. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+#
+# MDEPKG_REDUCE_FW_SIZE:
+# Align boot-time images at a 1024 bytes boundary to reduce firmware size.
+#
+
+!if $(MDEPKG_REDUCE_FW_SIZE) == TRUE
+ [BuildOptions]
+ MSFT:*_*_*_DLINK_FLAGS = /ALIGN:1024
+ INTEL:*_*_*_DLINK_FLAGS = /ALIGN:1024
+ CLANGPDB:*_*_*_DLINK_FLAGS = /ALIGN:1024 /FILEALIGN:1024
+ GCC:*_*_*_DLINK_FLAGS = -z max-page-size=0x400
+ CLANGGCC:*_*_*_DLINK_FLAGS = -z max-page-size=0x400
+ XCODE:*_*_*_DLINK_FLAGS = -segalign 0x400 -seg1addr 0x400
+ XCODE:*_*_*_ASLDLINK_FLAGS = -segalign 0x400 -seg1addr 0x400
+ XCODE:*_*_*_MTOC_FLAGS = -align 0x400
+!endif
+
+!if $(MDEPKG_MERGE_RODATA_INTO_TEXT) == TRUE
+ [BuildOptions]
+ MSFT:*_*_*_DLINK_FLAGS = /MERGE:.rdata=.text
+ CLANGPDB:*_*_*_DLINK_FLAGS = /MERGE:.rdata=.text
+ GCC:*_*_*_DLINK2_FLAGS = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/Merge.lds
+ GCC:*_*_*_ASLDLINK_FLAGS = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/Merge.lds
+ CLANGGCC:*_*_*_DLINK2_FLAGS = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/Merge.lds
+ CLANGGCC:*_*_*_ASLDLINK_FLAGS = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/Merge.lds
+ XCODE:*_*_*_DLINK_FLAGS = -rename_section __DATA_CONST __text_const __TEXT __const -rename_section __DATA_CONST __cstring __TEXT __cstring -rename_section __DATA_CONST __ustring __TEXT __ustring -rename_section __DATA_CONST __const __TEXT __data_const
+!else
+ [BuildOptions]
+ CLANGGCC:*_*_*_DLINK2_FLAGS = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/Base.lds
+ CLANGGCC:*_*_*_ASLDLINK_FLAGS = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/Base.lds
+!endif
diff --git a/MdePkg/MdePkg.dsc b/MdePkg/MdePkg.dsc
index e9635c86d6..8d5a43b9ee 100644
--- a/MdePkg/MdePkg.dsc
+++ b/MdePkg/MdePkg.dsc
@@ -193,4 +193,4 @@
MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicArmVirt.inf
MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf
-[BuildOptions]
+!include MdePkg/MdeBuildOptions.dsc.inc
diff --git a/NetworkPkg/NetworkPkg.dsc b/NetworkPkg/NetworkPkg.dsc
index ce856c8df0..e26b3e5c35 100644
--- a/NetworkPkg/NetworkPkg.dsc
+++ b/NetworkPkg/NetworkPkg.dsc
@@ -131,7 +131,8 @@
NetworkPkg/Library/DxeTcpIoLib/DxeTcpIoLib.inf
NetworkPkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf
- !include NetworkPkg/Network.dsc.inc
+!include NetworkPkg/Network.dsc.inc
+!include MdePkg/MdeBuildOptions.dsc.inc
[BuildOptions]
*_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES
diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc
index 0dcbf18b1c..7f8c1cc450 100644
--- a/OvmfPkg/OvmfPkgIa32.dsc
+++ b/OvmfPkg/OvmfPkgIa32.dsc
@@ -56,6 +56,9 @@
DEFINE LINUX_LOADER = FALSE
DEFINE WINDOWS_10_IA32 = FALSE
+ DEFINE MDEPKG_REDUCE_FW_SIZE = FALSE
+ DEFINE MDEPKG_MERGE_RODATA_INTO_TEXT = FALSE
+
#
# Device drivers
#
@@ -108,20 +111,7 @@
!endif
!include NetworkPkg/NetworkBuildOptions.dsc.inc
-
-[BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER]
- GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
- XCODE:*_*_*_DLINK_FLAGS = -seg1addr 0x1000 -segalign 0x1000
- XCODE:*_*_*_MTOC_FLAGS = -align 0x1000
- CLANGPDB:*_*_*_DLINK_FLAGS = /ALIGN:4096
-
-# Force PE/COFF sections to be aligned at 4KB boundaries to support page level
-# protection of DXE_SMM_DRIVER/SMM_CORE modules
-[BuildOptions.common.EDKII.DXE_SMM_DRIVER, BuildOptions.common.EDKII.SMM_CORE]
- GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
- XCODE:*_*_*_DLINK_FLAGS = -seg1addr 0x1000 -segalign 0x1000
- XCODE:*_*_*_MTOC_FLAGS = -align 0x1000
- CLANGPDB:*_*_*_DLINK_FLAGS = /ALIGN:4096
+!include MdePkg/MdeBuildOptions.dsc.inc
################################################################################
#
diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc
index bcfa7e3b1b..ce5753edc1 100644
--- a/OvmfPkg/OvmfPkgIa32X64.dsc
+++ b/OvmfPkg/OvmfPkgIa32X64.dsc
@@ -55,6 +55,9 @@
DEFINE LINUX_LOADER = FALSE
DEFINE WINDOWS_10_IA32 = FALSE
+ DEFINE MDEPKG_REDUCE_FW_SIZE = FALSE
+ DEFINE MDEPKG_MERGE_RODATA_INTO_TEXT = FALSE
+
#
# Device drivers
#
@@ -112,11 +115,7 @@
!endif
!include NetworkPkg/NetworkBuildOptions.dsc.inc
-
- GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
- XCODE:*_*_*_DLINK_FLAGS = -seg1addr 0x1000 -segalign 0x1000
- XCODE:*_*_*_MTOC_FLAGS = -align 0x1000
- CLANGPDB:*_*_*_DLINK_FLAGS = /FILEALIGN:4096 /ALIGN:4096
+!include MdePkg/MdeBuildOptions.dsc.inc
################################################################################
#
diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc
index 5f2a3c6448..1e11c14f81 100644
--- a/OvmfPkg/OvmfPkgX64.dsc
+++ b/OvmfPkg/OvmfPkgX64.dsc
@@ -54,6 +54,9 @@
DEFINE LEGACY_WINDOWS_LOADER = FALSE
DEFINE LINUX_LOADER = FALSE
+ DEFINE MDEPKG_REDUCE_FW_SIZE = FALSE
+ DEFINE MDEPKG_MERGE_RODATA_INTO_TEXT = FALSE
+
#
# Device drivers
#
@@ -124,20 +127,7 @@
!endif
!include NetworkPkg/NetworkBuildOptions.dsc.inc
-
-[BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER]
- GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
- XCODE:*_*_*_DLINK_FLAGS = -seg1addr 0x1000 -segalign 0x1000
- XCODE:*_*_*_MTOC_FLAGS = -align 0x1000
- CLANGPDB:*_*_*_DLINK_FLAGS = /ALIGN:4096
-
-# Force PE/COFF sections to be aligned at 4KB boundaries to support page level
-# protection of DXE_SMM_DRIVER/SMM_CORE modules
-[BuildOptions.common.EDKII.DXE_SMM_DRIVER, BuildOptions.common.EDKII.SMM_CORE]
- GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
- XCODE:*_*_*_DLINK_FLAGS = -seg1addr 0x1000 -segalign 0x1000
- XCODE:*_*_*_MTOC_FLAGS = -align 0x1000
- CLANGPDB:*_*_*_DLINK_FLAGS = /ALIGN:4096
+!include MdePkg/MdeBuildOptions.dsc.inc
################################################################################
#
diff --git a/UefiCpuPkg/UefiCpuPkg.dsc b/UefiCpuPkg/UefiCpuPkg.dsc
index 70d37c12e8..904f8f0bde 100644
--- a/UefiCpuPkg/UefiCpuPkg.dsc
+++ b/UefiCpuPkg/UefiCpuPkg.dsc
@@ -185,5 +185,7 @@
[Components.X64]
UefiCpuPkg/Library/CpuExceptionHandlerLib/UnitTest/DxeCpuExceptionHandlerLibUnitTest.inf
+!include MdePkg/MdeBuildOptions.dsc.inc
+
[BuildOptions]
*_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES
diff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc b/UefiPayloadPkg/UefiPayloadPkg.dsc
index 07623310d4..c284b7a49f 100644
--- a/UefiPayloadPkg/UefiPayloadPkg.dsc
+++ b/UefiPayloadPkg/UefiPayloadPkg.dsc
@@ -134,6 +134,8 @@
DEFINE MULTIPLE_DEBUG_PORT_SUPPORT = FALSE
+!include MdePkg/MdeBuildOptions.dsc.inc
+
[BuildOptions]
*_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES
!if $(USE_CBMEM_FOR_CONSOLE) == FALSE
@@ -142,13 +144,6 @@
MSFT:RELEASE_*_*_CC_FLAGS = /D MDEPKG_NDEBUG
!endif
-[BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER]
- GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
- XCODE:*_*_*_DLINK_FLAGS = -seg1addr 0x1000 -segalign 0x1000
- XCODE:*_*_*_MTOC_FLAGS = -align 0x1000
- CLANGPDB:*_*_*_DLINK_FLAGS = /ALIGN:4096
- MSFT:*_*_*_DLINK_FLAGS = /ALIGN:4096
-
################################################################################
#
# SKU Identification section - list of all SKU IDs supported by this Platform.
diff --git a/UnitTestFrameworkPkg/UnitTestFrameworkPkgTarget.dsc.inc b/UnitTestFrameworkPkg/UnitTestFrameworkPkgTarget.dsc.inc
index 8adf690098..23f706d1aa 100644
--- a/UnitTestFrameworkPkg/UnitTestFrameworkPkgTarget.dsc.inc
+++ b/UnitTestFrameworkPkg/UnitTestFrameworkPkgTarget.dsc.inc
@@ -56,6 +56,8 @@
[PcdsFixedAtBuild]
gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x17
+!include MdePkg/MdeBuildOptions.dsc.inc
+
[BuildOptions]
MSFT:*_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES -D EDKII_UNIT_TEST_FRAMEWORK_ENABLED
GCC:*_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES -D EDKII_UNIT_TEST_FRAMEWORK_ENABLED