[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