summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2020-10-26 17:40:23 -0600
committerSimon Glass <sjg@chromium.org>2020-10-29 14:42:59 -0600
commitb004bf3906e6f80b80558424e4a3ed8767103e37 (patch)
tree970fe3890bdfc2d2f07fb506690bde6c517f83e3
parent0b65769c2e31ae7b3ee6015b1f7602e4e1ac56a6 (diff)
downloadu-boot-b004bf3906e6f80b80558424e4a3ed8767103e37.tar.gz
binman: Update CheckEntries() for compressed sections
At present this function assumes that the size of a section is at least as large as its contents. With compression this is often not the case. Relax this constraint by using the uncompressed size, if available. Signed-off-by: Simon Glass <sjg@chromium.org>
-rw-r--r--tools/binman/etype/section.py6
1 files changed, 4 insertions, 2 deletions
diff --git a/tools/binman/etype/section.py b/tools/binman/etype/section.py
index 1618bebe4b..b146239b77 100644
--- a/tools/binman/etype/section.py
+++ b/tools/binman/etype/section.py
@@ -299,19 +299,21 @@ class Entry_section(Entry):
def CheckEntries(self):
"""Check that entries do not overlap or extend outside the section"""
+ max_size = self.size if self.uncomp_size is None else self.uncomp_size
+
offset = 0
prev_name = 'None'
for entry in self._entries.values():
entry.CheckEntries()
if (entry.offset < self._skip_at_start or
entry.offset + entry.size > self._skip_at_start +
- self.size):
+ max_size):
entry.Raise('Offset %#x (%d) size %#x (%d) is outside the '
"section '%s' starting at %#x (%d) "
'of size %#x (%d)' %
(entry.offset, entry.offset, entry.size, entry.size,
self._node.path, self._skip_at_start,
- self._skip_at_start, self.size, self.size))
+ self._skip_at_start, max_size, max_size))
if entry.offset < offset and entry.size:
entry.Raise("Offset %#x (%d) overlaps with previous entry '%s' "
"ending at %#x (%d)" %