[U-Boot] [PATCH v2 6/7] arm: add a common .lds link script

Simon Glass
2012-02-21T02:32:29Z

Hi Albert,

On Fri, Feb 17, 2012 at 3:08 AM, Albert ARIBAUD
<albert.u.boot@aribaud.net> wrote:
> Hi Simon,
>
> Le 21/11/2011 21:49, Simon Glass a ?crit :
>
>
>> + ? ? ? .text :
>> + ? ? ? {
>> + ? ? ? ? ? ? ? __text_start = .;
>
>
> This assignment to __text_start does not exist in any of the existing
> u-boot.lds files. What is the point of it?

I would like to have a single symbol for the start of the text region
across all architectures. ARM has _start but this is not present
elsewhere. Also I think it should be defined by the link script.

>
>
>> + ? ? ? .u_boot_cmd : { *(.u_boot_cmd) }
>> + ? ? ? __u_boot_cmd_end = .;
>> +
>> + ? ? ? . = ALIGN(4);
>> +
>> + ? ? ? __image_copy_end = .;
>
>
> Ditto for __image_copy_end.

This is the end of the region that needs to be copied when U-Boot is
relocated. The symbol exists in ARMv7 so I have reproduced it here. If
I read the SPL code correctly then it seems to need this.

>
> These two changes are unexplained in the commit message. Mind you, the one
> about CPUDIR and start.S isn't either... and it should, because once the
> commit is in, there is no indication left that it is part of a set, so
> readers will have a difficulty spotting the changes introduced.

OK I will take a look at these problems.

>
> But what bothers me most is that the patch set produces u-boot.bin files
> which are not binary identical to those produced without the patch set; if I
> remove the two assignments, then binary identity is preserved.
>
> Note: I check for binary identity by diff'ing hex dumps of u-boot.bin files
> produced with and without the patch set. If the only difference is the build
> version and date, I deem the files binary identical. The dump is done with
> 'od -t x1z -A x u-boot.bin'.
>
> So unless there is a compelling and strictly unavoidable reason for these
> assignements, please drop them in the V3 patch set.

The binary will need to include values for these symbols in the dynsym
area, so adding a link symbol cannot produce an identical binary. But
the change should be harmless - it is just an extra symbol.

I do not want to drop these - in fact I want to standardize on these
(or something similar that we agree) across all architectures since it
makes the generic relocation code easier (at present it uses #ifdef to
work out what to do in the two different cases (SPL and non-SPL).
Ultimately we can look towards more uniformity across architectures in
the .lds files.

I will take another look at this series.

>
> Amicalement,
> --
> Albert.

Regards,
Simon