[PATCH v3 2/7] arm: clean up v7 and v8 linker scripts for bss_start/end

Richard Henderson richard.henderson at linaro.org
Wed Mar 13 23:43:29 CET 2024


On 3/13/24 11:43, Ilias Apalodimas wrote:
> Hi Richard,
> 
> On Wed, 13 Mar 2024 at 22:19, Richard Henderson
> <richard.henderson at linaro.org> wrote:
>>
>> On 3/13/24 06:23, Ilias Apalodimas wrote:
>>> +++ b/arch/arm/cpu/armv8/u-boot-spl.lds
>>> @@ -63,18 +63,11 @@ SECTIONS
>>>
>>>        _image_binary_end = .;
>>>
>>> -     .bss_start (NOLOAD) : {
>>> -             . = ALIGN(8);
>>> -             KEEP(*(.__bss_start));
>>> -     } >.sdram
>>> -
>>> -     .bss (NOLOAD) : {
>>> +     .bss : {
>>> +             __bss_start = .;
>>>                *(.bss*)
>>> -              . = ALIGN(8);
>>> -     } >.sdram
>>> -
>>> -     .bss_end (NOLOAD) : {
>>> -             KEEP(*(.__bss_end));
>>> +             . = ALIGN(8);
>>> +             __bss_end = .;
>>
>> Still missing the alignment on .bss, previously in .bss_start.
> 
> Since this is emitted in .sdram memory I can't define it as
> .bss ALIGN(8) : {....} since the calculated memory will be outside the
> sdram-defined region
> 
> I could define it as
> .bss : {
>          . = ALIGN(8);
>          __bss_start = .;
>          ......
> }
> 
> But instead, I added an assert at the bottom which will break the
> linking if the __bss_start is not 8byte aligned.

I think it would be clearer to assert on __bss_start address rather than 
CONFIG_SPL_BSS_START_ADDR, if that's possible.  If not, then the constant will have to do.


r~


More information about the U-Boot mailing list