* [U-Boot] [PATCH v2] zynq: Fix elf header generation
@ 2014-02-05 7:06 Michal Simek
2014-02-13 14:37 ` Albert ARIBAUD
0 siblings, 1 reply; 2+ messages in thread
From: Michal Simek @ 2014-02-05 7:06 UTC (permalink / raw)
To: u-boot
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 <michal.simek@xilinx.com>
---
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, <garyj@denx.de>
+ *
+ * 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 <config_cmd_default.h>
--
1.8.2.3
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140205/a175232b/attachment.pgp>
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [U-Boot] [PATCH v2] zynq: Fix elf header generation
2014-02-05 7:06 [U-Boot] [PATCH v2] zynq: Fix elf header generation Michal Simek
@ 2014-02-13 14:37 ` Albert ARIBAUD
0 siblings, 0 replies; 2+ messages in thread
From: Albert ARIBAUD @ 2014-02-13 14:37 UTC (permalink / raw)
To: u-boot
Hi Michal,
On Wed, 5 Feb 2014 08:06:29 +0100, Michal Simek
<michal.simek@xilinx.com> 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 <michal.simek@xilinx.com>
> ---
>
> 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, <garyj@denx.de>
> + *
> + * 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 <config_cmd_default.h>
>
> --
> 1.8.2.3
>
>
Applied to u-boot-arm/master, thanks!
Amicalement,
--
Albert.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2014-02-13 14:37 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-02-05 7:06 [U-Boot] [PATCH v2] zynq: Fix elf header generation Michal Simek
2014-02-13 14:37 ` Albert ARIBAUD
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.