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.

Signed-off-by: Varadarajan Narayanan <[email protected]>
---
 tools/binman/elf.py | 4 +++-
 1 file changed, 3 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):
-- 
2.34.1

Reply via email to