import time
from binman import bintool
+from binman import elf
from dtoc import fdt_util
from patman import tools
from patman.tools import to_hex, to_hex_size
fake_fname: Fake filename, if one was created, else None
required_props (dict of str): Properties which must be present. This can
be added to by subclasses
+ elf_fname (str): Filename of the ELF file, if this entry holds an ELF
+ file, or is a binary file produced from an ELF file
+ auto_write_symbols (bool): True to write ELF symbols into this entry's
+ contents
"""
fake_dir = None
- def __init__(self, section, etype, node, name_prefix=''):
+ def __init__(self, section, etype, node, name_prefix='',
+ auto_write_symbols=False):
# Put this here to allow entry-docs and help to work without libfdt
global state
from binman import state
self.fake_fname = None
self.required_props = []
self.comp_bintool = None
+ self.elf_fname = None
+ self.auto_write_symbols = auto_write_symbols
@staticmethod
def FindEntryClass(etype, expanded):
Args:
section: Section containing the entry
"""
- pass
+ if self.auto_write_symbols:
+ elf.LookupAndWriteSymbols(self.elf_fname, self, section.GetImage())
def CheckEntries(self):
"""Check that the entry offsets are correct
the node (if enabled with -u) which provides the uncompressed size of the
data.
"""
- def __init__(self, section, etype, node):
- super().__init__(section, etype, node)
+ def __init__(self, section, etype, node, auto_write_symbols=False):
+ super().__init__(section, etype, node,
+ auto_write_symbols=auto_write_symbols)
self._filename = fdt_util.GetString(self._node, 'filename', self.etype)
def ObtainContents(self, fake_size=0):
# Entry-type module for spl/u-boot-spl.bin
#
-from binman import elf
from binman.entry import Entry
from binman.etype.blob import Entry_blob
unless --no-expanded is used or the node has a 'no-expanded' property.
"""
def __init__(self, section, etype, node):
- super().__init__(section, etype, node)
+ super().__init__(section, etype, node, auto_write_symbols=True)
self.elf_fname = 'spl/u-boot-spl'
+ self.auto_write_symbols = True
def GetDefaultFilename(self):
return 'spl/u-boot-spl.bin'
-
- def WriteSymbols(self, section):
- elf.LookupAndWriteSymbols(self.elf_fname, self, section.GetImage())
# Entry-type module for 'u-boot-spl-nodtb.bin'
#
-from binman import elf
from binman.entry import Entry
from binman.etype.blob import Entry_blob
binman uses that to look up symbols to write into the SPL binary.
"""
def __init__(self, section, etype, node):
- super().__init__(section, etype, node)
+ super().__init__(section, etype, node, auto_write_symbols=True)
self.elf_fname = 'spl/u-boot-spl'
def GetDefaultFilename(self):
return 'spl/u-boot-spl-nodtb.bin'
-
- def WriteSymbols(self, section):
- elf.LookupAndWriteSymbols(self.elf_fname, self, section.GetImage())
# Entry-type module for tpl/u-boot-tpl.bin
#
-from binman import elf
from binman.entry import Entry
from binman.etype.blob import Entry_blob
unless --no-expanded is used or the node has a 'no-expanded' property.
"""
def __init__(self, section, etype, node):
- super().__init__(section, etype, node)
+ super().__init__(section, etype, node, auto_write_symbols=True)
self.elf_fname = 'tpl/u-boot-tpl'
def GetDefaultFilename(self):
return 'tpl/u-boot-tpl.bin'
-
- def WriteSymbols(self, section):
- elf.LookupAndWriteSymbols(self.elf_fname, self, section.GetImage())
# Entry-type module for 'u-boot-tpl-nodtb.bin'
#
-from binman import elf
from binman.entry import Entry
from binman.etype.blob import Entry_blob
binman uses that to look up symbols to write into the TPL binary.
"""
def __init__(self, section, etype, node):
- super().__init__(section, etype, node)
+ super().__init__(section, etype, node, auto_write_symbols=True)
self.elf_fname = 'tpl/u-boot-tpl'
def GetDefaultFilename(self):
return 'tpl/u-boot-tpl-nodtb.bin'
-
- def WriteSymbols(self, section):
- elf.LookupAndWriteSymbols(self.elf_fname, self, section.GetImage())
# Entry-type module for vpl/u-boot-vpl.bin
#
-from binman import elf
from binman.entry import Entry
from binman.etype.blob import Entry_blob
binman uses that to look up symbols to write into the VPL binary.
"""
def __init__(self, section, etype, node):
- super().__init__(section, etype, node)
+ super().__init__(section, etype, node, auto_write_symbols=True)
self.elf_fname = 'vpl/u-boot-vpl'
def GetDefaultFilename(self):
return 'vpl/u-boot-vpl.bin'
-
- def WriteSymbols(self, section):
- elf.LookupAndWriteSymbols(self.elf_fname, self, section.GetImage())
# Entry-type module for 'u-boot-vpl-nodtb.bin'
#
-from binman import elf
from binman.entry import Entry
from binman.etype.blob import Entry_blob
binman uses that to look up symbols to write into the VPL binary.
"""
def __init__(self, section, etype, node):
- super().__init__(section, etype, node)
+ super().__init__(section, etype, node, auto_write_symbols=True)
self.elf_fname = 'vpl/u-boot-vpl'
def GetDefaultFilename(self):
return 'vpl/u-boot-vpl-nodtb.bin'
-
- def WriteSymbols(self, section):
- elf.LookupAndWriteSymbols(self.elf_fname, self, section.GetImage())