u-boot-brain/arch/mips
Michal Simek e14ba8a577 arch: Add explicit linker script for u-boot-elf
Commit f4dc714aaa ("arm64: Turn u-boot.bin back into an ELF file after
relocate-rela")
introduce REMAKE_ELF option to recreate u-boot.elf from u-boot ->
u-boot.bin + DT -> u-boot.elf.

The best is to ilustrate it from make V=1 output
  cat u-boot-nodtb.bin dts/dt.dtb > u-boot-dtb.bin
  cp u-boot-dtb.bin u-boot.bin
aarch64-linux-gnu-objcopy -I binary -B aarch64 -O elf64-littleaarch64  u-boot.bin u-boot-elf.o
  aarch64-linux-gnu-ld.bfd u-boot-elf.o -o u-boot.elf --defsym="_start"=0x8000000 -Ttext=0x8000000

Last command has no explicit linker script passed that's why toolchain
internal linker script is used.
In Binutils 2.32 case it contains SIZEOF_HEADERS symbol which has changed
behavior by commit
https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=64029e93683a266c38d19789e780f3748bd6a188
which result in situation that program headers has changed from
(xilinx_zynqmp_mini_defconfig)

Program Headers:
  Type           Offset             VirtAddr           PhysAddr
                 FileSiz            MemSiz              Flags  Align
  LOAD           0x0000000000010000 0x00000000fffc0000 0x00000000fffc0000
                 0x0000000000018918 0x0000000000018918  RW     0x10000

to

Program Headers:
  Type           Offset             VirtAddr           PhysAddr
                 FileSiz            MemSiz              Flags  Align
  LOAD           0x0000000000000000 0x00000000fffb0000 0x00000000fffb0000
                 0x0000000000028918 0x0000000000028918  RW     0x10000

Xilinx tools like XSDB or Bootgen are using program headers for loading ELF
to the right location and by above binutils change ELF is loaded to
incorrect location.

The patch is explicitly use u-boot-elf.lds (just cat now) for u-boot.elf
recreation which is called when REMAKE_ELF is setup.
By purpose u-boot-elf.lds doesn't contain OUTPUT_FORMAT/OUTPUT_ARCH to be
able to use by all archs.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
Tested-By: Álvaro Fernández Rojas <noltari@gmail.com>
2020-04-03 11:52:55 -04:00
..
cpu common: Move get_tbclk() to time.h 2020-01-17 13:27:30 -05:00
dts dts: mtmips: add default pinctrl to eth nodes for all boards 2019-10-25 17:20:44 +02:00
include/asm dma-mapping: add <asm/dma-mapping.h> for all architectures 2020-02-20 15:09:54 +08:00
lib common: Move hang() to the same header as panic() 2020-01-17 17:53:40 -05:00
mach-ath79 common: Move hang() to the same header as panic() 2020-01-17 17:53:40 -05:00
mach-bmips bmips: swapping IO space isn't required 2018-12-10 18:46:45 +01:00
mach-jz47xx common: Move hang() to the same header as panic() 2020-01-17 17:53:40 -05:00
mach-mscc net: mscc: ocelot: Update network driver for pcb120 2019-05-03 16:42:23 +02:00
mach-mtmips dm: core: Create a new header file for 'compat' features 2020-02-05 19:33:46 -07:00
mach-pic32 dm: core: Create a new header file for 'compat' features 2020-02-05 19:33:46 -07:00
config.mk arch: Add explicit linker script for u-boot-elf 2020-04-03 11:52:55 -04:00
Kconfig MIPS: remove Micronas VCT boards 2019-11-29 16:18:35 +01:00
Makefile mips: rename mach-mt7620 to mach-mtmips 2019-05-03 16:43:11 +02:00
Makefile.postlink SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00