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 enoughYeah, 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
signature.asc
Description: PGP signature

