]> Git Repo - J-u-boot.git/commitdiff
arm64: Turn u-boot.bin back into an ELF file after relocate-rela
authorScott Wood <[email protected]>
Sat, 14 Dec 2013 03:47:33 +0000 (11:47 +0800)
committerAlbert ARIBAUD <[email protected]>
Thu, 9 Jan 2014 15:08:28 +0000 (16:08 +0100)
While performing relocations on u-boot.bin should be good enough for
booting on real hardware, some simulators insist on booting an ELF file
(and yet don't perform ELF relocations), so convert the relocated
binary back into an ELF file.  This can go away in the future if we
change relocate-rela to operate directly on the ELF file, or if and
when we stop caring about a simulator with this restriction.

Signed-off-by: Scott Wood <[email protected]>
Signed-off-by: David Feng <[email protected]>
Makefile

index 85a9330f10a82139fc75639b5e3cedd3eb8eb15e..a4c2928eb6282ec1d58dfe239b48dbf7972851d5 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -358,6 +358,7 @@ ALL-$(CONFIG_OF_SEPARATE) += $(obj)u-boot.dtb $(obj)u-boot-dtb.bin
 ifneq ($(CONFIG_SPL_TARGET),)
 ALL-$(CONFIG_SPL) += $(obj)$(subst ",,$(CONFIG_SPL_TARGET))
 endif
+ALL-$(CONFIG_REMAKE_ELF) += $(obj)u-boot.elf
 
 # enable combined SPL/u-boot/dtb rules for tegra
 ifneq ($(CONFIG_TEGRA),)
@@ -528,6 +529,18 @@ $(obj)u-boot-img-spl-at-end.bin: $(obj)spl/u-boot-spl.bin $(obj)u-boot.img
                        conv=notrunc 2>/dev/null
                cat $(obj)u-boot-pad.img $(obj)spl/u-boot-spl.bin > $@
 
+# Create a new ELF from a raw binary file.  This is useful for arm64
+# where static relocation needs to be performed on the raw binary,
+# but certain simulators only accept an ELF file (but don't do the
+# relocation).
+# FIXME refactor dts/Makefile to share target/arch detection
+$(obj)u-boot.elf: $(obj)u-boot.bin
+       @$(OBJCOPY)  -B aarch64 -I binary -O elf64-littleaarch64 \
+               $< $(obj)u-boot-elf.o
+       @$(LD) $(obj)u-boot-elf.o -o $@ \
+               --defsym=_start=$(CONFIG_SYS_TEXT_BASE) \
+               -Ttext=$(CONFIG_SYS_TEXT_BASE)
+
 ifeq ($(CONFIG_SANDBOX),y)
 GEN_UBOOT = \
                cd $(LNDIR) && $(CC) $(SYMS) -T $(obj)u-boot.lds \
This page took 0.038033 seconds and 4 git commands to generate.