forked from libretro/Lakka-LibreELEC
39 lines
1.6 KiB
Diff
39 lines
1.6 KiB
Diff
From a2f92f02abaae9df68759586102438df6f8d5efb Mon Sep 17 00:00:00 2001
|
|
From: Samuel Holland <samuel@sholland.org>
|
|
Date: Sat, 9 Oct 2021 10:43:56 -0500
|
|
Subject: [PATCH 02/13] binman: Prevent entries in a section from overlapping
|
|
|
|
Currently, if the "offset" property is given for an entry, the section's
|
|
running offset is completely ignored. This causes entries to overlap if
|
|
the provided offset is less than the size of the entries earlier in the
|
|
section. Avoid the overlap by only using the provided offset when it is
|
|
greater than the running offset.
|
|
|
|
The motivation for this change is the rule used by SPL to find U-Boot on
|
|
sunxi boards: U-Boot starts 32 KiB after the start of SPL, unless SPL is
|
|
larger than 32 KiB, in which case U-Boot immediately follows SPL.
|
|
|
|
Signed-off-by: Samuel Holland <samuel@sholland.org>
|
|
---
|
|
tools/binman/entry.py | 4 +++-
|
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/tools/binman/entry.py b/tools/binman/entry.py
|
|
index 70222718ea93..61822eb5e44f 100644
|
|
--- a/tools/binman/entry.py
|
|
+++ b/tools/binman/entry.py
|
|
@@ -404,7 +404,9 @@ class Entry(object):
|
|
if self.offset_unset:
|
|
self.Raise('No offset set with offset-unset: should another '
|
|
'entry provide this correct offset?')
|
|
- self.offset = tools.align(offset, self.align)
|
|
+ elif self.offset > offset:
|
|
+ offset = self.offset
|
|
+ self.offset = tools.align(offset, self.align)
|
|
needed = self.pad_before + self.contents_size + self.pad_after
|
|
needed = tools.align(needed, self.align_size)
|
|
size = self.size
|
|
--
|
|
2.33.0
|
|
|