summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Day <[email protected]>2026-05-28 05:21:06 +0000
committerTom Rini <[email protected]>2026-06-04 09:37:13 -0600
commit31c2bb0cd1832f1030c42fbf588e7c4911e619dc (patch)
treed266abbf6a93ac35e57a850e26331e0cfd774f17
parentaf4aad1f0a0beba82d2015d79b450b59bf34d2bc (diff)
arch: arm: force 4K page alignment in linker
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 <[email protected]> Signed-off-by: Sam Day <[email protected]> Tested-by: Peter Robinson <[email protected]>
-rw-r--r--arch/arm/config.mk8
1 files changed, 8 insertions, 0 deletions
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