binman: Show the image position in the map
authorSimon Glass <sjg@chromium.org>
Tue, 17 Jul 2018 19:25:49 +0000 (13:25 -0600)
committerSimon Glass <sjg@chromium.org>
Wed, 1 Aug 2018 22:30:48 +0000 (16:30 -0600)
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>
tools/binman/bsection.py
tools/binman/entry.py
tools/binman/ftest.py
tools/binman/image.py

index 70a6ec17760931549ffbd79ebe6d4365b3679621..a0bd1b6d34e2a6e2da2ea734061ef2d4976847f4 100644 (file)
@@ -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)
 
index 996f03e3a68d70e9f8e54327b71d853c40af2f24..6ce5dbdc90ffc686b219a178904235ef42a50323 100644 (file)
@@ -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
index d09868588c678e6c01cd79264b92f6c87da1aed4..ce473dfaffbf4de6665db0cb0ae6f0f3b85914ca 100644 (file)
@@ -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):
index 4debc734519d86ec479fb23398a9113710bee135..68126bc3e69ba486f01b103509f6b5867bcc07a7 100644 (file)
@@ -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)