On Fri, Feb 06, 2026 at 06:09:49PM +0100, Marek Vasut wrote:
> 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

Yeah, oops.

> > 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 ?

That __u_boot_list will never be empty? There's too much non-trivial
code using it.

> > , 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 ^ .

I'll fix that (and the port->part and solve) when applying, assuming no
feedback from the toolchain gurus.

-- 
Tom

Attachment: signature.asc
Description: PGP signature

Reply via email to