[PATCH v3 01/11] Makefile: add SPL_REMAKE_ELF_LDSCRIPT feature
Michael Srba
Michael.Srba at seznam.cz
Tue Apr 21 23:09:03 CEST 2026
Hi,
On 4/21/26 22:45, Tom Rini wrote:
> On Tue, Apr 21, 2026 at 09:43:44PM +0200, michael.srba at seznam.cz wrote:
>
>> From: Michael Srba <Michael.Srba at seznam.cz>
>>
>> Some platforms (e.g. least Qualcomm), use the ELF format in creative
>> ways, including in the bootrom. Make SPL_REMAKE_ELF use a linker script
>> specified in SPL_REMAKE_ELF_LDSCRIPT (with the previously hardcoded path
>> as the default).
>>
>> Signed-off-by: Michael Srba <Michael.Srba at seznam.cz>
>> ---
>> Makefile | 10 ++++++++--
>> common/spl/Kconfig | 10 ++++++++++
>> 2 files changed, 18 insertions(+), 2 deletions(-)
>>
>> diff --git a/Makefile b/Makefile
>> index 8af18668b0f..50893d5689e 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -2004,16 +2004,22 @@ u-boot.elf: u-boot.bin u-boot-elf.lds FORCE
>> quiet_cmd_u-boot-spl-elf ?= LD $@
>> cmd_u-boot-spl-elf ?= $(LD) spl/u-boot-spl-elf.o -o $@ \
>> $(if $(CONFIG_SYS_BIG_ENDIAN),-EB,-EL) \
>> - -T u-boot-elf.lds --defsym=$(CONFIG_PLATFORM_ELFENTRY)=$(CONFIG_SPL_TEXT_BASE) \
>> + -T spl/u-boot-spl-elf.lds --defsym=$(CONFIG_PLATFORM_ELFENTRY)=$(CONFIG_SPL_TEXT_BASE) \
>> -Ttext=$(CONFIG_SPL_TEXT_BASE)
>> -spl/u-boot-spl.elf: spl/u-boot-spl.bin u-boot-elf.lds
>> +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)
>>
>> +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)
>> +
>> u-boot-elf.lds: arch/u-boot-elf.lds prepare FORCE
>> $(call if_changed_dep,cpp_lds)
>>
>> PHONY += prepare0
>> +
>> # 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 d1a85f50209..1d279a2bb05 100644
>> --- a/common/spl/Kconfig
>> +++ b/common/spl/Kconfig
>> @@ -247,6 +247,16 @@ 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 for SPL ELF"
>> + depends on SPL_REMAKE_ELF
>> + default "arch/$(ARCH)/u-boot-spl-elf.lds"
>> + help
>> + This allows specifying a linker script that will act on u-boot-spl.bin.
>> + Some platforms (e.g Qualcomm) use the ELF format in creative ways,
>> + including in the bootrom. For such platforms, you can change the default
>> + linker script to a platform-specific one.
>> +
>> config SPL_LDSCRIPT
>> string "Linker script for the SPL stage"
>> default "arch/arm/cpu/arm926ejs/sunxi/u-boot-spl.lds" if MACH_SUNIV
> Did what I said about cleaning up the remake elf Makefile logic itself
> get lost somewhere? Sorry. To repeat, we should have a remake elf
> function, make use of $(PHASE_) and have Kconfig entries for both
> REMAKE_ELF_LDSCRIPT and SPL_REMAKE_ELF_SCRIPT (so we can use $(PHASE_)
> again to get the right one. Thanks!
>
I guess I didn't quite get it, but now I understand.
More information about the U-Boot
mailing list