From: Michael Srba <[email protected]> Some platforms (e.g. at 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 <[email protected]> --- Makefile | 9 +++++++-- common/spl/Kconfig | 11 +++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 49d9740327e..8fe722f6c0d 100644 --- a/Makefile +++ b/Makefile @@ -2008,12 +2008,17 @@ 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) prepare FORCE + $(call if_changed_dep,cpp_lds) + u-boot-elf.lds: arch/u-boot-elf.lds prepare FORCE $(call if_changed_dep,cpp_lds) diff --git a/common/spl/Kconfig b/common/spl/Kconfig index 5fa94098e49..08a4d2a75e9 100644 --- a/common/spl/Kconfig +++ b/common/spl/Kconfig @@ -238,6 +238,17 @@ 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/u-boot-spl-elf.lds" + help + This allows specifying a linker script that will be used to re-wrap + the SPL binary into an ELF. + Some platforms (e.g. at least 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 -- 2.53.0

