[PATCH 1/5] Makefile: add SPL_REMAKE_ELF_LDSCRIPT feature
michael.srba at seznam.cz
michael.srba at seznam.cz
Sat Apr 4 01:18:16 CEST 2026
From: Michael Srba <Michael.Srba at seznam.cz>
On some platforms (at least Qualcomm), the bootrom expects an ELF file.
Since the contents of the ELF file are platform specific, add a config
option that allows specifying a linker script to use to produce the
ELF file.
Signed-off-by: Michael Srba <Michael.Srba at seznam.cz>
---
Makefile | 23 +++++++++++++++++++++++
common/spl/Kconfig | 6 ++++++
2 files changed, 29 insertions(+)
diff --git a/Makefile b/Makefile
index f232d8b4ea2..85cd6137bca 100644
--- a/Makefile
+++ b/Makefile
@@ -1231,6 +1231,9 @@ ifneq ($(CONFIG_SPL_TARGET),)
INPUTS-$(CONFIG_SPL) += $(CONFIG_SPL_TARGET:"%"=%)
endif
INPUTS-$(CONFIG_REMAKE_ELF) += u-boot.elf
+ifneq ($(CONFIG_SPL_REMAKE_ELF_LDSCRIPT),)
+INPUTS-y += spl/u-boot-spl.elf
+endif
INPUTS-$(CONFIG_EFI_APP) += u-boot-app.efi
INPUTS-$(CONFIG_EFI_STUB) += u-boot-payload.efi
@@ -2005,6 +2008,26 @@ u-boot-elf.lds: arch/u-boot-elf.lds prepare FORCE
$(call if_changed_dep,cpp_lds)
PHONY += prepare0
+
+ifeq ($(CONFIG_SPL),y)
+ifneq ($(CONFIG_SPL_REMAKE_ELF_LDSCRIPT),)
+
+SPL_REMAKE_ELF_LDSCRIPT := $(addprefix $(srctree)/,$(CONFIG_SPL_REMAKE_ELF_LDSCRIPT:"%"=%))
+
+spl/u-boot-spl-elf.lds: $(SPL_REMAKE_ELF_LDSCRIPT) FORCE
+ $(call if_changed_dep,cpp_lds)
+
+quiet_cmd_u-boot-spl-elf ?= LD $@
+ cmd_u-boot-spl-elf ?= $(LD) spl/u-boot-spl-elf.o -o $@ \
+ -T spl/u-boot-spl-elf.lds --defsym=$(CONFIG_PLATFORM_ELFENTRY)=$(CONFIG_SPL_TEXT_BASE) \
+ -Ttext=$(CONFIG_SPL_TEXT_BASE) -z max-page-size=0x1000
+spl/u-boot-spl.elf: spl/u-boot-spl.bin spl/u-boot-spl-elf.lds
+ $(Q)$(OBJCOPY) -I binary $(PLATFORM_ELFFLAGS) $< spl/u-boot-spl-elf.o
+ $(call if_changed,u-boot-spl-elf)
+
+endif
+endif
+
# MediaTek's ARM-based u-boot needs a header to contains its load address
# which is parsed by the BootROM.
# If the SPL build is enabled, the header will be added to the spl binary,
diff --git a/common/spl/Kconfig b/common/spl/Kconfig
index 2998b7acb75..9eeb56cb68b 100644
--- a/common/spl/Kconfig
+++ b/common/spl/Kconfig
@@ -247,6 +247,12 @@ config SPL_HANDOFF
proper. Also SPL can receive information from TPL in the same place
if that is enabled.
+config SPL_REMAKE_ELF_LDSCRIPT
+ string "Linker script to run with u-boot-spl.bin as input"
+ help
+ This allows specifying a linker script that will act on u-boot-spl.bin
+ (see also REMAKE_ELF)
+
config SPL_LDSCRIPT
string "Linker script for the SPL stage"
default "arch/arm/cpu/arm926ejs/sunxi/u-boot-spl.lds" if MACH_SUNIV
--
2.53.0
More information about the U-Boot
mailing list