Message ID | 20190130035935.235565-8-sjg@chromium.org |
---|---|
State | Superseded |
Delegated to: | Bin Meng |
Headers | show |
Series | x86: Add support for booting from TPL | expand |
Hi Simon, On Wed, Jan 30, 2019 at 12:00 PM Simon Glass <sjg@chromium.org> wrote: > > At present sections are always placed automatically. Even if an 'offset' > property is provided it is ignored. Update the logic to support an offset > for sections. > > Note: Needs a test updates > > Signed-off-by: Simon Glass <sjg@chromium.org> > --- > > tools/binman/bsection.py | 5 +++-- > tools/binman/etype/section.py | 3 ++- > 2 files changed, 5 insertions(+), 3 deletions(-) > Reviewed-by: Bin Meng <bmeng.cn@gmail.com> x86 is not using 'offset' in section so it should be fine. I think we will need update tools/binman/README to document 'offset' too. Regards, Bin
diff --git a/tools/binman/bsection.py b/tools/binman/bsection.py index ccf2920c5b..4a5ced201e 100644 --- a/tools/binman/bsection.py +++ b/tools/binman/bsection.py @@ -57,7 +57,7 @@ class Section(object): self._name = name self._node = node self._image = image - self._offset = 0 + self._offset = None self._size = None self._align_size = None self._pad_before = 0 @@ -75,6 +75,7 @@ class Section(object): def _ReadNode(self): """Read properties from the section node""" + self._offset = fdt_util.GetInt(self._node, 'offset') self._size = fdt_util.GetInt(self._node, 'size') self._align_size = fdt_util.GetInt(self._node, 'align-size') if tools.NotPowerOfTwo(self._align_size): @@ -130,7 +131,7 @@ class Section(object): entry.AddMissingProperties() def SetCalculatedProperties(self): - state.SetInt(self._node, 'offset', self._offset) + state.SetInt(self._node, 'offset', self._offset or 0) state.SetInt(self._node, 'size', self._size) image_pos = self._image_pos if self._parent_section: diff --git a/tools/binman/etype/section.py b/tools/binman/etype/section.py index 7f1b413604..3681a48468 100644 --- a/tools/binman/etype/section.py +++ b/tools/binman/etype/section.py @@ -67,7 +67,8 @@ class Entry_section(Entry): def Pack(self, offset): """Pack all entries into the section""" self._section.PackEntries() - self._section.SetOffset(offset) + if self._section._offset is None: + self._section.SetOffset(offset) self.size = self._section.GetSize() return super(Entry_section, self).Pack(offset)
At present sections are always placed automatically. Even if an 'offset' property is provided it is ignored. Update the logic to support an offset for sections. Note: Needs a test updates Signed-off-by: Simon Glass <sjg@chromium.org> --- tools/binman/bsection.py | 5 +++-- tools/binman/etype/section.py | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-)