[U-Boot] [PATCH V4 1/2] arm926ejs: fix linker file for newer ld support

Albert ARIBAUD
2010-11-09T18:47:49Z

Le 09/11/2010 19:24, Daniel Hobi a ?crit :
> Hi Albert,
>
> On 04.11.2010 23:22, Albert Aribaud wrote:
>> older ld emitted all ELF relocations in input sections named
>> .rel.dyn, whereas newer ld uses names of the form .rel*. The
>> linker script only collected .rel.dyn input sections. Rewrite
>> to collect all .rel* input sections and overlay with .bss.
>
> Tested-by: Daniel Hobi<daniel.hobi@schmid-telecom.ch>

Thanks Daniel for the test.

> Thank you. This patch is required to get Kirkwood-based boards working
> again when using the CodeSourcery 2009q3 toolchain.

(can't find the 2010q3 Lite toolchain on CodeSourcery's site, latest is
2010q1 apparently... Can you tell me which gcc and which ld version is
used in 2010q3?)

I think this V4 of my patchset could be now committed to
u-boot-arm/master, and if possible even on u-boot-arm for the december
release of u-boot, as it is a bugfix.

> But shouldn't this change be applied to all ARM linker scripts, ie
> arch/arm/cpu/*/u-boot.lds?

Yes, it should. :)

> And on many ARM platforms (including Kirkwood), the timer implementation
> is still accessing BSS variables before relocation.

That is fixed in the orion5x code; a git blame on the timer.c file will
tell you which commit of mine did the fix, and from then you can port to
kirkwood as the orion5x code comes from the kirkwood one.

> Is someone working on this? Candidates are:
>
> $ git grep "static ulong timestamp"
> arch/arm/cpu/arm1136/mx31/timer.c:static ulong timestamp;
> arch/arm/cpu/arm1136/omap24xx/timer.c:static ulong timestamp;
> arch/arm/cpu/arm1176/tnetv107x/timer.c:static ulong timestamp;
> arch/arm/cpu/arm720t/interrupts.c:static ulong timestamp;
> arch/arm/cpu/arm920t/a320/timer.c:static ulong timestamp;
> arch/arm/cpu/arm920t/at91rm9200/timer.c:static ulong timestamp;
> arch/arm/cpu/arm920t/s3c24x0/timer.c:static ulong timestamp;
> arch/arm/cpu/arm926ejs/davinci/timer.c:static ulong timestamp;
> arch/arm/cpu/arm926ejs/kirkwood/timer.c:static ulong timestamp;
> arch/arm/cpu/arm926ejs/mx25/timer.c:static ulong timestamp;
> arch/arm/cpu/arm926ejs/mx27/timer.c:static ulong timestamp;
> arch/arm/cpu/arm926ejs/omap/timer.c:static ulong timestamp;
> arch/arm/cpu/arm926ejs/orion5x/timer.c:static ulong timestamp;
> arch/arm/cpu/arm926ejs/spear/timer.c:static ulong timestamp;
> arch/arm/cpu/arm926ejs/versatile/timer.c:static ulong timestamp;
> arch/arm/cpu/armv7/mx5/timer.c:static ulong timestamp;
> arch/arm/cpu/armv7/omap-common/timer.c:static ulong timestamp;
> arch/arm/cpu/lh7a40x/timer.c:static ulong timestamp;
> arch/arm/cpu/s3c44b0/timer.c:static ulong timestamp;

Normally, the board maintainers should handle this during the window
after next version... Dunno if that is practical, but OTOH it would
easily show which boards are still maintained and which are not. :)

> Best regards,
> Daniel

Amicalement,
--
Albert.