mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-06-22 14:41:42 +00:00
binman: Allow for skip_at_start when reading entries
The offset of an entry needs to be adjusted by its skip-at-start value. This is currently missing when reading entry data. Fix it. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
6eb9932668
commit
5c6ba71bbe
3 changed files with 48 additions and 4 deletions
|
@ -605,10 +605,12 @@ class Entry_section(Entry):
|
|||
def ReadData(self, decomp=True):
|
||||
tout.Info("ReadData path='%s'" % self.GetPath())
|
||||
parent_data = self.section.ReadData(True)
|
||||
tout.Info('%s: Reading data from offset %#x-%#x, size %#x' %
|
||||
(self.GetPath(), self.offset, self.offset + self.size,
|
||||
self.size))
|
||||
data = parent_data[self.offset:self.offset + self.size]
|
||||
offset = self.offset - self.section._skip_at_start
|
||||
data = parent_data[offset:offset + self.size]
|
||||
tout.Info(
|
||||
'%s: Reading data from offset %#x-%#x (real %#x), size %#x, got %#x' %
|
||||
(self.GetPath(), self.offset, self.offset + self.size, offset,
|
||||
self.size, len(data)))
|
||||
return data
|
||||
|
||||
def ReadChildData(self, child, decomp=True):
|
||||
|
|
|
@ -4226,6 +4226,25 @@ class TestFunctional(unittest.TestCase):
|
|||
expect = FILES_DATA[:15] + b'\0' + FILES_DATA[15:]
|
||||
self.assertEqual(expect, data)
|
||||
|
||||
def testReadImageSkip(self):
|
||||
"""Test reading an image and accessing its FDT map"""
|
||||
data = self.data = self._DoReadFileRealDtb('191_read_image_skip.dts')
|
||||
image_fname = tools.GetOutputFilename('image.bin')
|
||||
orig_image = control.images['image']
|
||||
image = Image.FromFile(image_fname)
|
||||
self.assertEqual(orig_image.GetEntries().keys(),
|
||||
image.GetEntries().keys())
|
||||
|
||||
orig_entry = orig_image.GetEntries()['fdtmap']
|
||||
entry = image.GetEntries()['fdtmap']
|
||||
self.assertEqual(orig_entry.offset, entry.offset)
|
||||
self.assertEqual(orig_entry.size, entry.size)
|
||||
self.assertEqual(16, entry.image_pos)
|
||||
|
||||
u_boot = image.GetEntries()['section'].GetEntries()['u-boot']
|
||||
|
||||
self.assertEquals(U_BOOT_DATA, u_boot.ReadData())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
|
23
tools/binman/test/191_read_image_skip.dts
Normal file
23
tools/binman/test/191_read_image_skip.dts
Normal file
|
@ -0,0 +1,23 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
binman {
|
||||
end-at-4gb;
|
||||
size = <0x400>;
|
||||
section {
|
||||
size = <0x10>;
|
||||
u-boot {
|
||||
};
|
||||
};
|
||||
fdtmap {
|
||||
};
|
||||
image-header {
|
||||
location = "end";
|
||||
};
|
||||
};
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue