[PATCH v5 01/13] binman: Ignore noload segments for image numbering
Varadarajan Narayanan
varadarajan.narayanan at oss.qualcomm.com
Wed Jun 17 12:18:00 CEST 2026
While including the partial images of a split-elf, binman gives the
segment number as found in the input ELF. However this results in 'gaps'
if the NOLOAD segments appear in between LOAD segments. Hence track the
LOAD segments separately and number the partial images accordingly.
Update the read segments test to verify this.
Signed-off-by: Varadarajan Narayanan <varadarajan.narayanan at oss.qualcomm.com>
---
v5: Update the read segments test to verify this.
---
tools/binman/elf.py | 4 +++-
tools/binman/elf_test.py | 4 ++++
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/tools/binman/elf.py b/tools/binman/elf.py
index 6ac960e0419..b43cf490b37 100644
--- a/tools/binman/elf.py
+++ b/tools/binman/elf.py
@@ -551,6 +551,7 @@ def read_loadable_segments(data):
raise ValueError(err)
entry = elf.header['e_entry']
segments = []
+ n = 0
for i in range(elf.num_segments()):
segment = elf.get_segment(i)
if segment['p_type'] != 'PT_LOAD' or not segment['p_memsz']:
@@ -558,7 +559,8 @@ def read_loadable_segments(data):
continue
start = segment['p_offset']
rend = start + segment['p_filesz']
- segments.append((i, segment['p_paddr'], data[start:rend]))
+ segments.append((n, segment['p_paddr'], data[start:rend]))
+ n = n + 1
return segments, entry
def is_valid(data):
diff --git a/tools/binman/elf_test.py b/tools/binman/elf_test.py
index 5b173392898..2799319d0a0 100644
--- a/tools/binman/elf_test.py
+++ b/tools/binman/elf_test.py
@@ -288,6 +288,10 @@ class TestElf(unittest.TestCase):
self.skipTest('Python elftools not available')
fname = self.ElfTestFile('embed_data')
segments, entry = elf.read_loadable_segments(tools.read_file(fname))
+ n = 0
+ for (i, start, data) in segments:
+ self.assertEqual(i, n)
+ n = n + 1
def test_read_segments_fail(self):
"""Test for read_loadable_segments() without elftools"""
--
2.34.1
More information about the U-Boot
mailing list