[PATCH v2] arm: spl: Ensure 8 byte alignment of appended DTB without separate BSS

Marek Vasut marek.vasut at mailbox.org
Fri Feb 6 18:09:49 CET 2026


On 2/6/26 12:41 AM, Tom Rini wrote:
> Historically, when we have an appended device tree and also our
> resulting binary will contain the BSS section, we have ensured that
> everything will be where it's expected to be by declaring that the BSS
> is overlayed with a symbol matches the end of the port

part ?

> of the ELF binary
> that is objcopy'd to the binary we concatenate with. This in turn means
> that the logic to generate a "pad" file, which is the size found in the
> __bss_size symbol, will be correct and then we can concatenate the
> device tree and it will begin at __bss_size at run time.
> 
> With commit 5ffc1dcc26d3 ("arm: Remove rel.dyn from SPL linker scripts")
> we removed this overlay as part of trying to ensure that we met both the
> requirements of the device tree to be 8 byte aligned as well as that our
> logic to generate the -pad file would match what ended up in the
> resulting binary. While it was correct to remove an unused section it
> did not solve ultimately solve the problem for all cases.

solve ultimately solve ... one solve is enough

> To really fix the problem, we need to do two things. First, our final
> section prior to _image_binary_end must be 8 byte aligned (for the case
> of having a separate BSS and so our appended DTB exists at this
> location). This cannot be '.binman_sym_table' as it may be empty, and in
> turn the ELF type would be NOBITS and so not copied with objcopy. The
> __u_boot_list section will never be empty

How can we be sure of that ?

> , so it is our final section,
> and ends with a '. = ALIGN(8)' statement. Second, as this is the end of
> our copied data it is safe to declare that the BSS starts here, so use
> the OVERLAY keyword to place the BSS here.

[...]

> @@ -99,5 +99,6 @@ SECTIONS
>   
>   ASSERT(_image_binary_end % 8 == 0, \
>          "_image_binary_end must be 8-byte aligned for device tree");
> +
>   ASSERT(ADDR(.bss) % 8 == 0, \
>          ".bss must be 8-byte aligned");
Please drop this extra newline ^ .


More information about the U-Boot mailing list