[PATCH] arch: arm: force 4K page alignment in linker

Sam Day me at samcday.com
Thu May 28 07:21:06 CEST 2026


Since 5c71f8110, the u-boot.elf produced by dragonboard410c_defconfig no
longer fits in the 1MiB aboot partition it is intended for.

To be precise, this issue occurs on toolchains that have a linker with a
COMMONPAGESIZE > 4K. Since u-boot is hardcoded for 4K granules, we
ensure that the linker doesn't try to align to anything larger than
that, otherwise we're just filling our ELFs with a bunch of useless
zeros.

Suggested-by: Stephan Gerhold <stephan.gerhold at linaro.org>
Signed-off-by: Sam Day <me at samcday.com>
---
 arch/arm/config.mk | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/arch/arm/config.mk b/arch/arm/config.mk
index a7eff84a267..bce9a31e966 100644
--- a/arch/arm/config.mk
+++ b/arch/arm/config.mk
@@ -112,6 +112,14 @@ endif
 # needed for relocation
 LDFLAGS_u-boot += -pie
 
+ifeq ($(CONFIG_ARM64),y)
+# U-Boot uses fixed 4K granules, so we force the linker to match.
+# Otherwise, we're subject to toolchain preferences, (e.g Fedora's
+# aarch64-linux-none toolchain selects 64K granules) and we end up wasting
+# a lot of space in ELFs with MMU_PGPROT enabled.
+LDFLAGS_u-boot += -z common-page-size=0x1000 -z max-page-size=0x1000
+endif
+
 #
 # FIXME: binutils versions < 2.22 have a bug in the assembler where
 # branches to weak symbols can be incorrectly optimized in thumb mode

---
base-commit: 987907ae4bcc5d6055bdf7d318a3edf53e14d5fa
change-id: 20260528-4k-page-alignment-6cb594a073b0

Best regards,
-- 
Sam Day <me at samcday.com>




More information about the U-Boot mailing list