binman: Show the image position in the map

At present the map only shows the offset and size for each region. The
image position provides the actual position of each entry in the image,
regardless of the section hierarchy.

Add the image position to the map.

Signed-off-by: Simon Glass <sjg@chromium.org>
lime2-spi
Simon Glass 6 years ago
parent b8ef5b6bc8
commit 1be70d20d8
  1. 3
      tools/binman/bsection.py
  2. 8
      tools/binman/entry.py
  3. 28
      tools/binman/ftest.py
  4. 3
      tools/binman/image.py

@ -378,7 +378,8 @@ class Section(object):
Args:
fd: File to write the map to
"""
Entry.WriteMapLine(fd, indent, self._name, self._offset, self._size)
Entry.WriteMapLine(fd, indent, self._name, self._offset, self._size,
self._image_pos)
for entry in self._entries.values():
entry.WriteMap(fd, indent + 1)

@ -349,8 +349,9 @@ class Entry(object):
pass
@staticmethod
def WriteMapLine(fd, indent, name, offset, size):
print('%s%08x %08x %s' % (' ' * indent, offset, size, name), file=fd)
def WriteMapLine(fd, indent, name, offset, size, image_pos):
print('%08x %s%08x %08x %s' % (image_pos, ' ' * indent, offset,
size, name), file=fd)
def WriteMap(self, fd, indent):
"""Write a map of the entry to a .map file
@ -359,7 +360,8 @@ class Entry(object):
fd: File to write the map to
indent: Curent indent level of map (0=none, 1=one level, etc.)
"""
self.WriteMapLine(fd, indent, self.name, self.offset, self.size)
self.WriteMapLine(fd, indent, self.name, self.offset, self.size,
self.image_pos)
def GetEntries(self):
"""Return a list of entries contained by this entry

@ -1052,25 +1052,25 @@ class TestFunctional(unittest.TestCase):
def testMap(self):
"""Tests outputting a map of the images"""
_, _, map_data, _ = self._DoReadFileDtb('55_sections.dts', map=True)
self.assertEqual(''' Offset Size Name
00000000 00000028 main-section
00000000 00000010 section@0
00000000 00000004 u-boot
00000010 00000010 section@1
00000000 00000004 u-boot
00000020 00000004 section@2
00000000 00000004 u-boot
self.assertEqual('''ImagePos Offset Size Name
00000000 00000000 00000028 main-section
00000000 00000000 00000010 section@0
00000000 00000000 00000004 u-boot
00000010 00000010 00000010 section@1
00000010 00000000 00000004 u-boot
00000020 00000020 00000004 section@2
00000020 00000000 00000004 u-boot
''', map_data)
def testNamePrefix(self):
"""Tests that name prefixes are used"""
_, _, map_data, _ = self._DoReadFileDtb('56_name_prefix.dts', map=True)
self.assertEqual(''' Offset Size Name
00000000 00000028 main-section
00000000 00000010 section@0
00000000 00000004 ro-u-boot
00000010 00000010 section@1
00000000 00000004 rw-u-boot
self.assertEqual('''ImagePos Offset Size Name
00000000 00000000 00000028 main-section
00000000 00000000 00000010 section@0
00000000 00000000 00000004 ro-u-boot
00000010 00000010 00000010 section@1
00000010 00000000 00000004 rw-u-boot
''', map_data)
def testUnknownContents(self):

@ -124,5 +124,6 @@ class Image:
filename = '%s.map' % self._name
fname = tools.GetOutputFilename(filename)
with open(fname, 'w') as fd:
print('%8s %8s %s' % ('Offset', 'Size', 'Name'), file=fd)
print('%8s %8s %8s %s' % ('ImagePos', 'Offset', 'Size', 'Name'),
file=fd)
self._section.WriteMap(fd, 0)

Loading…
Cancel
Save