[U-Boot] [RFC] arm926ejs: fix linker file for newer ld support

Darius Augulis
2010-10-31T18:35:45Z

Hi Albert,

On 10/31/2010 07:43 PM, Albert Aribaud wrote:
> This is an RFC so far. I'd like people who have issues with newer linkers to test this patch.
>
> It is intended for arm926ejs, so you might have to 'port' it to your own ARM architecture.

Thanks! It works on arm1176/mini6410 and solves problem of missing commands.

tested with gcc 4.4.5 + binutils 2.20.1 toolchain from Buildroot.

But it's strange, because I done the same test of declaring variable in
start.s:

.globl cmd_start
cmd_start:
.word __u_boot_cmd_start

Then disassembled elf shows it's value:

57e00048 <cmd_start>:
57e00048: 00000000 .word 0x00000000

Commands are there and somehow working, but at least it's very strange.

Darius.

>
> It has been roughly tested with ELDK 4.2 and CodeSourcery arm-2010q1-202; both seem to run rather properly (no NAND issue at startup, 'help' and commands seem to be there).
>
> Amicalement,
> Albert.
>
> Signed-off-by: Albert Aribaud<albert.aribaud@free.fr>
> ---
> arch/arm/cpu/arm926ejs/u-boot.lds | 18 +++++++++---------
> 1 files changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/arch/arm/cpu/arm926ejs/u-boot.lds b/arch/arm/cpu/arm926ejs/u-boot.lds
> index 72f45f8..4e42543 100644
> --- a/arch/arm/cpu/arm926ejs/u-boot.lds
> +++ b/arch/arm/cpu/arm926ejs/u-boot.lds
> @@ -45,15 +45,6 @@ SECTIONS
>
> . = ALIGN(4);
>
> - __rel_dyn_start = .;
> - .rel.dyn : { *(.rel.dyn) }
> - __rel_dyn_end = .;
> -
> - __dynsym_start = .;
> - .dynsym : { *(.dynsym) }
> -
> - . = ALIGN(4);
> -
> . = .;
> __u_boot_cmd_start = .;
> .u_boot_cmd : { *(.u_boot_cmd) }
> @@ -64,6 +55,15 @@ SECTIONS
> .bss (NOLOAD) : { *(.bss) . = ALIGN(4); }
> _end = .;
>
> + __rel_dyn_start = .;
> + .rel.dyn : { *(.rel*) }
> + __rel_dyn_end = .;
> +
> + __dynsym_start = .;
> + .dynsym : { *(.dynsym) }
> +
> + . = ALIGN(4);
> +
> /DISCARD/ : { *(.dynstr*) }
> /DISCARD/ : { *(.dynamic*) }
> /DISCARD/ : { *(.plt*) }