[U-Boot] [PATCH 8/8] mips: bmips: add support for raw .elf images

Álvaro Fernández Rojas noltari at gmail.com
Sat Apr 15 17:19:25 UTC 2017



El 14/04/2017 a las 21:05, Daniel Schwierzeck escribió:
> 
> 
> Am 13.04.2017 um 17:52 schrieb Álvaro Fernández Rojas:
>> CFE supports loading .elf images instead of raw binaries.
>>
>> Signed-off-by: Álvaro Fernández Rojas <noltari at gmail.com>
>> ---
>>  Makefile                     | 22 ++++++++++++++++++++++
>>  arch/mips/cpu/u-boot-elf.lds | 10 ++++++++++
>>  2 files changed, 32 insertions(+)
>>  create mode 100644 arch/mips/cpu/u-boot-elf.lds
>>
>> diff --git a/Makefile b/Makefile
>> index 09b597d..667b5f2 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -568,6 +568,15 @@ ifndef LDSCRIPT
>>  	endif
>>  endif
>>  
>> +ifndef LDSCRIPT_ELF
>> +	ifeq ($(wildcard $(LDSCRIPT_ELF)),)
>> +		LDSCRIPT_ELF := $(srctree)/$(CPUDIR)/u-boot-elf.lds
>> +	endif
>> +	ifeq ($(wildcard $(LDSCRIPT_ELF)),)
>> +		LDSCRIPT_ELF := $(srctree)/arch/$(ARCH)/cpu/u-boot-elf.lds
>> +	endif
>> +endif
> 
> could you try to build the ELF binary without a custom linker script? I
> think the built-in one should work too.
> 
>> +
>>  else
>>  # Dummy target needed, because used as prerequisite
>>  include/config/auto.conf: ;
>> @@ -786,6 +795,7 @@ ifneq ($(CONFIG_SPL_TARGET),)
>>  ALL-$(CONFIG_SPL) += $(CONFIG_SPL_TARGET:"%"=%)
>>  endif
>>  ALL-$(CONFIG_REMAKE_ELF) += u-boot.elf
>> +ALL-$(CONFIG_ARCH_BMIPS) += u-boot-bmips.elf
>>  ALL-$(CONFIG_EFI_APP) += u-boot-app.efi
>>  ALL-$(CONFIG_EFI_STUB) += u-boot-payload.efi
>>  
>> @@ -1192,6 +1202,15 @@ u-boot.elf: u-boot.bin
>>  		--defsym=_start=$(CONFIG_SYS_TEXT_BASE) \
>>  		-Ttext=$(CONFIG_SYS_TEXT_BASE)
>>  
>> +# Rules to link u-boot-bmips
>> +quiet_cmd_u-boot-bmips ?= LD      $@
>> +	cmd_u-boot-bmips ?= $(LD) -e startup -T u-boot-elf.lds \
>> +	-Ttext $(CONFIG_SYS_TEXT_BASE) -o $@ u-boot-bmips.o
>> +
>> +u-boot-bmips.elf: u-boot.bin u-boot-elf.lds
>> +	$(Q)$(LD) -r -b binary --oformat elf32-tradbigmips -o u-boot-bmips.o $<
>> +	$(call if_changed,u-boot-bmips)
> 
> could you try to generate the ELF binary like in the existing rule
> above? If that works, we could refactor the generic rule to remove the
> hard-coded aarch64 flags. If not, move this code and the
> "ALL-$(CONFIG_ARCH_BMIPS) += u-boot-bmips.elf" to arch/mips/Makefile
Sure, I will try and see if it works.

> 
> Also don't forget to add new binaries to .gitignore and the Makefile
> clean targets.
Right, my fault :).

> 
>> +
>>  # Rule to link u-boot
>>  # May be overridden by arch/$(ARCH)/config.mk
>>  quiet_cmd_u-boot__ ?= LD      $@
>> @@ -1340,6 +1359,9 @@ cmd_cpp_lds = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) \
>>  u-boot.lds: $(LDSCRIPT) prepare FORCE
>>  	$(call if_changed_dep,cpp_lds)
>>  
>> +u-boot-elf.lds: $(LDSCRIPT_ELF) prepare
>> +	$(call if_changed_dep,cpp_lds)
>> +
>>  spl/u-boot-spl.bin: spl/u-boot-spl
>>  	@:
>>  spl/u-boot-spl: tools prepare \
>> diff --git a/arch/mips/cpu/u-boot-elf.lds b/arch/mips/cpu/u-boot-elf.lds
>> new file mode 100644
>> index 0000000..db0bb46
>> --- /dev/null
>> +++ b/arch/mips/cpu/u-boot-elf.lds
>> @@ -0,0 +1,10 @@
>> +OUTPUT_ARCH(mips)
>> +SECTIONS {
>> +	.text : {
>> +		startup = .;
>> +		*(.text)
>> +		*(.text.*)
>> +		*(.data)
>> +		*(.data.*)
>> +	}
>> +}
>>
> 


More information about the U-Boot mailing list