[PATCH 23/25] binman: Use the actual contents in CheckSize()
Simon Glass
sjg at chromium.org
Mon Oct 19 04:41:36 CEST 2020
At present this function adds up the total size of entries to work out the
size of a section's contents. With compression this is no-longer enough.
We may as well bite the bullet and build the section contents instead.
Call _BuildSectionData() to get the (possibly compressed) contents and
GetPaddedData() to get the same but with padding added.
Note that this is inefficient since the section contents is calculated
twice. Future work will improve this.
This affects testPackOverlapMap() since the error is reported with a
different section size now (enough to hold the contents). Update that at
the same time.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
tools/binman/etype/section.py | 11 ++++-------
tools/binman/ftest.py | 2 +-
2 files changed, 5 insertions(+), 8 deletions(-)
diff --git a/tools/binman/etype/section.py b/tools/binman/etype/section.py
index b146239b779..570dbfcfd41 100644
--- a/tools/binman/etype/section.py
+++ b/tools/binman/etype/section.py
@@ -544,16 +544,13 @@ class Entry_section(Entry):
def CheckSize(self):
- """Check that the section contents does not exceed its size, etc."""
- contents_size = 0
- for entry in self._entries.values():
- contents_size = max(contents_size, entry.offset + entry.size)
-
- contents_size -= self._skip_at_start
+ data = self._BuildSectionData()
+ contents_size = len(data)
size = self.size
if not size:
- size = self.pad_before + contents_size + self.pad_after
+ data = self.GetPaddedData()
+ size = len(data)
size = tools.Align(size, self.align_size)
if self.size and contents_size > self.size:
diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
index bcd4482717a..8b7537e4eca 100644
--- a/tools/binman/ftest.py
+++ b/tools/binman/ftest.py
@@ -2022,7 +2022,7 @@ class TestFunctional(unittest.TestCase):
self.assertTrue(os.path.exists(map_fname))
map_data = tools.ReadFile(map_fname, binary=False)
self.assertEqual('''ImagePos Offset Size Name
-<none> 00000000 00000007 main-section
+<none> 00000000 00000008 main-section
<none> 00000000 00000004 u-boot
<none> 00000003 00000004 u-boot-align
''', map_data)
--
2.29.0.rc1.297.gfa9743e501-goog
More information about the U-Boot
mailing list