]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
doc: binman: Add guidance for determining ELF load addresses
authorAristo Chen <jj251510319013@gmail.com>
Sun, 14 Sep 2025 10:59:32 +0000 (10:59 +0000)
committerTom Rini <trini@konsulko.com>
Tue, 23 Sep 2025 19:35:22 +0000 (13:35 -0600)
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@canonical.com>
tools/binman/entries.rst

index 12a39d070e48ddeec5bc128b6c0bf7390fda202f..f6a5465ca44a480a90d9d047067b4ead0a06f692 100644 (file)
@@ -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