[PATCH v2 7/7] doc: binman: Add guidance for determining ELF load addresses

Simon Glass sjg at chromium.org
Fri Sep 26 16:48:11 CEST 2025


On Wed, 24 Sept 2025 at 06:32, Jonas Karlman <jonas at kwiboo.se> wrote:
>
> Hi,
>
> On 9/14/2025 12:59 PM, Aristo Chen wrote:
> > Add documentation to help users understand how to determine where ELF
> > files will be loaded when using binman's 'fit,load' property. This
> > addresses the common confusion about how load addresses are determined
> > from ELF files.
> >
> > The documentation explains three methods:
> > 1. Using readelf to examine program headers
> > 2. Checking the linker script (.lds file)
> > 3. Using objdump to see section addresses
> >
> > Also includes a specific example from binman tests showing how
> > elf_sections.lds sets ATF load address to 0x00000010 and
> > elf_sections_tee.lds sets TEE load address to 0x00100010 to avoid
> > memory overlap conflicts.
> >
> > This helps users debug memory layout conflicts more efficiently when
> > working with FIT images containing multiple ELF components.
> >
> > Signed-off-by: Aristo Chen <aristo.chen at canonical.com>
> > ---
> >  tools/binman/entries.rst | 18 ++++++++++++++++++
> >  1 file changed, 18 insertions(+)
> >
> > diff --git a/tools/binman/entries.rst b/tools/binman/entries.rst
> > index 12a39d070e4..f6a5465ca44 100644
> > --- a/tools/binman/entries.rst
> > +++ b/tools/binman/entries.rst
> > @@ -1050,6 +1050,24 @@ split-elf
> >          Generates a `load = <...>` property with the load address of the
> >          segment
> >
> > +        Note: The load address comes from the ELF file's program header or
> > +        linker script. To determine where an ELF file will be loaded, you can:
> > +
> > +        1. Use readelf to examine the program headers:
> > +           ``readelf -l your_elf_file.elf``
> > +           Look for the LOAD segments and their VirtAddr (Virtual Address)
> > +
> > +        2. Check the linker script (.lds file) used to build the ELF:
> > +           Look for the `. = <address>;` statements which set the location
> > +           counter and determine load addresses for different sections
> > +
> > +        3. Use objdump to see section addresses:
> > +           ``objdump -h your_elf_file.elf``
> > +
> > +        For example, in binman tests, elf_sections.lds sets ATF load address
> > +        to 0x00000010, while elf_sections_tee.lds sets TEE load address to
> > +        0x00100010 to avoid memory overlap conflicts.
>
> tools/binman/entries.rst should be generated from a "binman entry-docs"
> run as described in the documentation [1].
>
> Please update tools/binman/etype/fit.py or this will be lost next time
> someone updates the entries documentation.

With that fixed:

Reviewed-by: Simon Glass <sjg at chromium.org>


>
> [1] https://docs.u-boot.org/en/latest/develop/package/binman.html#entry-documentation
>
> Regards,
> Jonas
>
> > +
> >      fit,entry
> >          Generates a `entry = <...>` property with the entry address of the
> >          ELF. This is only produced for the first entry
>


More information about the U-Boot mailing list