Skip to content

Commit 4892a42

Browse files
committed
UefiPayloadPkg: align DXE images for page protections
Apply -z common-page-size=0x1000 to IA32/X64 DXE core, DXE drivers, UEFI drivers and UEFI applications in UefiPayloadPkg. Apply the corresponding 64 KiB alignment to AARCH64 DXE images. UefiPayload already links DXE runtime drivers with an architecture- appropriate common page size, but other DXE images still inherit the toolchain default. When that default is larger, PE/COFF sections are not page-aligned and DXE Core cannot apply page-granular image protections such as NX. Align the non-runtime DXE images the same way so UefiPayload opts into image protection consistently across supported architectures. Only SEC can be IA32 in UefiPayload; DXE Core and onward are always 64-bit. Signed-off-by: Sean Rhodes <sean@starlabs.systems>
1 parent 27ac8fa commit 4892a42

1 file changed

Lines changed: 10 additions & 0 deletions

File tree

UefiPayloadPkg/UefiPayloadPkg.dsc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,16 @@
202202
CLANGPDB:*_*_*_DLINK_FLAGS = /ALIGN:4096
203203
MSFT:*_*_*_DLINK_FLAGS = /ALIGN:4096
204204

205+
# Force PE/COFF sections to be aligned at 4KB boundaries so DXE Core can
206+
# apply page-level image protection, including NX, to IA32/X64 DXE images.
207+
[BuildOptions.IA32.EDKII.DXE_CORE, BuildOptions.X64.EDKII.DXE_CORE, BuildOptions.IA32.EDKII.DXE_DRIVER, BuildOptions.X64.EDKII.DXE_DRIVER, BuildOptions.IA32.EDKII.UEFI_DRIVER, BuildOptions.X64.EDKII.UEFI_DRIVER, BuildOptions.IA32.EDKII.UEFI_APPLICATION, BuildOptions.X64.EDKII.UEFI_APPLICATION]
208+
GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
209+
210+
# Force PE/COFF sections to be aligned at 64KB boundaries so DXE Core can
211+
# apply page-level image protection, including NX, to AARCH64 DXE images.
212+
[BuildOptions.AARCH64.EDKII.DXE_CORE, BuildOptions.AARCH64.EDKII.DXE_DRIVER, BuildOptions.AARCH64.EDKII.UEFI_DRIVER, BuildOptions.AARCH64.EDKII.UEFI_APPLICATION]
213+
GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x10000
214+
205215
[BuildOptions.IA32.EDKII.DXE_RUNTIME_DRIVER, BuildOptions.X64.EDKII.DXE_RUNTIME_DRIVER]
206216
GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
207217

0 commit comments

Comments
 (0)