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

Aristo Chen jj251510319013 at gmail.com
Sun Sep 14 12:59:32 CEST 2025


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.
+
     fit,entry
         Generates a `entry = <...>` property with the entry address of the
         ELF. This is only produced for the first entry
-- 
2.43.0



More information about the U-Boot mailing list