From mboxrd@z Thu Jan 1 00:00:00 1970 From: Albert ARIBAUD Date: Thu, 13 Feb 2014 15:37:17 +0100 Subject: [U-Boot] [PATCH v2] zynq: Fix elf header generation In-Reply-To: <44be0a40d7cfef0268a3d17fec91ccf8248d5401.1391583981.git.michal.simek@xilinx.com> References: <44be0a40d7cfef0268a3d17fec91ccf8248d5401.1391583981.git.michal.simek@xilinx.com> Message-ID: <20140213153717.5eceeefd@lilith> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Michal, On Wed, 5 Feb 2014 08:06:29 +0100, Michal Simek wrote: > This patch is here because of: > "arm: keep all sections in ELF file" > (sha1: 47ed5dd031d7d2c587e6afd386e79ccec1a1b7f7) > > Our tools expect to have elf with only LOAD header. > Without this fix also PHDR, INTERP and DYNAMIC headers > are available in ELF. > > Signed-off-by: Michal Simek > --- > > Changes in v2: > - Remove empty line from zynq-common.h > - Remove PXA linker script part > - Add comment to explain differences between our linker script > and ARM one > > Albert: We have discussed about patch via IRC that this > is reasonable solution. > I am sending it for a record and if it is fine I will add > it to my zynq branch and then will send you pull request. > > --- > arch/arm/cpu/armv7/zynq/u-boot.lds | 99 ++++++++++++++++++++++++++++++++++++++ > include/configs/zynq-common.h | 2 + > 2 files changed, 101 insertions(+) > create mode 100644 arch/arm/cpu/armv7/zynq/u-boot.lds > > diff --git a/arch/arm/cpu/armv7/zynq/u-boot.lds b/arch/arm/cpu/armv7/zynq/u-boot.lds > new file mode 100644 > index 0000000..a68b050 > --- /dev/null > +++ b/arch/arm/cpu/armv7/zynq/u-boot.lds > @@ -0,0 +1,99 @@ > +/* > + * Copyright (c) 2004-2008 Texas Instruments > + * > + * (C) Copyright 2002 > + * Gary Jennejohn, DENX Software Engineering, > + * > + * SPDX-License-Identifier: GPL-2.0+ > + */ > + > +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") > +OUTPUT_ARCH(arm) > +ENTRY(_start) > +SECTIONS > +{ > + . = 0x00000000; > + > + . = ALIGN(4); > + .text : > + { > + *(.__image_copy_start) > + CPUDIR/start.o (.text*) > + *(.text*) > + } > + > + . = ALIGN(4); > + .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } > + > + . = ALIGN(4); > + .data : { > + *(.data*) > + } > + > + . = ALIGN(4); > + > + . = .; > + > + . = ALIGN(4); > + .u_boot_list : { > + KEEP(*(SORT(.u_boot_list*))); > + } > + > + . = ALIGN(4); > + > + .image_copy_end : > + { > + *(.__image_copy_end) > + } > + > + .rel_dyn_start : > + { > + *(.__rel_dyn_start) > + } > + > + .rel.dyn : { > + *(.rel*) > + } > + > + .rel_dyn_end : > + { > + *(.__rel_dyn_end) > + } > + > + _end = .; > + > +/* > + * Compiler-generated __bss_start and __bss_end, see arch/arm/lib/bss.c > + * __bss_base and __bss_limit are for linker only (overlay ordering) > + */ > + > + .bss_start __rel_dyn_start (OVERLAY) : { > + KEEP(*(.__bss_start)); > + __bss_base = .; > + } > + > + .bss __bss_base (OVERLAY) : { > + *(.bss*) > + . = ALIGN(4); > + __bss_limit = .; > + } > + > + .bss_end __bss_limit (OVERLAY) : { > + KEEP(*(.__bss_end)); > + } > + > + /* > + * Zynq needs to discard more sections because the user > + * is expected to pass this image on to tools for boot.bin > + * generation that require them to be dropped. > + */ > + /DISCARD/ : { *(.dynsym) } > + /DISCARD/ : { *(.dynbss*) } > + /DISCARD/ : { *(.dynstr*) } > + /DISCARD/ : { *(.dynamic*) } > + /DISCARD/ : { *(.plt*) } > + /DISCARD/ : { *(.interp*) } > + /DISCARD/ : { *(.gnu*) } > + /DISCARD/ : { *(.ARM.exidx*) } > + /DISCARD/ : { *(.gnu.linkonce.armexidx.*) } > +} > diff --git a/include/configs/zynq-common.h b/include/configs/zynq-common.h > index 5faffad..d6dc745 100644 > --- a/include/configs/zynq-common.h > +++ b/include/configs/zynq-common.h > @@ -218,6 +218,8 @@ > # define CONFIG_SYS_MMC_MAX_DEVICE 1 > #endif > > +#define CONFIG_SYS_LDSCRIPT "arch/arm/cpu/armv7/zynq/u-boot.lds" > + > /* Commands */ > #include > > -- > 1.8.2.3 > > Applied to u-boot-arm/master, thanks! Amicalement, -- Albert.