binman: Rename 'position' to 'offset'
[oweals/u-boot.git] / tools / binman / etype / section.py
1 # SPDX-License-Identifier:      GPL-2.0+
2 # Copyright (c) 2018 Google, Inc
3 # Written by Simon Glass <sjg@chromium.org>
4 #
5 # Entry-type module for sections, which are entries which can contain other
6 # entries.
7 #
8
9 from entry import Entry
10 import fdt_util
11 import tools
12
13 import bsection
14
15 class Entry_section(Entry):
16     def __init__(self, image, etype, node):
17         Entry.__init__(self, image, etype, node)
18         self._section = bsection.Section(node.name, node)
19
20     def ProcessFdt(self, fdt):
21         return self._section.ProcessFdt(fdt)
22
23     def AddMissingProperties(self):
24         Entry.AddMissingProperties(self)
25         self._section.AddMissingProperties()
26
27     def ObtainContents(self):
28         return self._section.GetEntryContents()
29
30     def GetData(self):
31         return self._section.GetData()
32
33     def GetOffsets(self):
34         """Handle entries that want to set the offset/size of other entries
35
36         This calls each entry's GetOffsets() method. If it returns a list
37         of entries to update, it updates them.
38         """
39         self._section.GetEntryOffsets()
40         return {}
41
42     def Pack(self, offset):
43         """Pack all entries into the section"""
44         self._section.PackEntries()
45         self.size = self._section.CheckSize()
46         return super(Entry_section, self).Pack(offset)
47
48     def WriteSymbols(self, section):
49         """Write symbol values into binary files for access at run time"""
50         self._section.WriteSymbols()
51
52     def SetCalculatedProperties(self):
53         Entry.SetCalculatedProperties(self)
54         self._section.SetCalculatedProperties()
55
56     def ProcessContents(self):
57         self._section.ProcessEntryContents()
58         super(Entry_section, self).ProcessContents()
59
60     def CheckOffset(self):
61         self._section.CheckEntries()
62
63     def WriteMap(self, fd, indent):
64         """Write a map of the section to a .map file
65
66         Args:
67             fd: File to write the map to
68         """
69         super(Entry_section, self).WriteMap(fd, indent)
70         self._section.WriteMap(fd, indent + 1)