binman: Allow disabling expanding an entry
At present there is a command-line flag to disable substitution of expanded entries. Add an option to the entry node as well, so it can be controlled at the node level. Add a test to cover this. Fix up the comment to the checkSymbols() function it uses, while we are here. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
e9e0db8894
commit
3d43338293
@ -472,6 +472,13 @@ missing-msg:
|
||||
information about what needs to be fixed. See missing-blob-help for the
|
||||
message for each tag.
|
||||
|
||||
no-expanded:
|
||||
By default binman substitutes entries with expanded versions if available,
|
||||
so that a `u-boot` entry type turns into `u-boot-expanded`, for example. The
|
||||
`--no-expanded` command-line option disables this globally. The
|
||||
`no-expanded` property disables this just for a single entry. Put the
|
||||
`no-expanded` boolean property in the node to select this behaviour.
|
||||
|
||||
The attributes supported for images and sections are described below. Several
|
||||
are similar to those for entries.
|
||||
|
||||
|
@ -863,7 +863,7 @@ U-Boot can access binman symbols at runtime. See:
|
||||
in the binman README for more information.
|
||||
|
||||
Note that this entry is automatically replaced with u-boot-expanded unless
|
||||
--no-expanded is used.
|
||||
--no-expanded is used or the node has a 'no-expanded' property.
|
||||
|
||||
|
||||
|
||||
@ -984,7 +984,7 @@ The ELF file 'spl/u-boot-spl' must also be available for this to work, since
|
||||
binman uses that to look up symbols to write into the SPL binary.
|
||||
|
||||
Note that this entry is automatically replaced with u-boot-spl-expanded
|
||||
unless --no-expanded is used.
|
||||
unless --no-expanded is used or the node has a 'no-expanded' property.
|
||||
|
||||
|
||||
|
||||
@ -1113,7 +1113,7 @@ The ELF file 'tpl/u-boot-tpl' must also be available for this to work, since
|
||||
binman uses that to look up symbols to write into the TPL binary.
|
||||
|
||||
Note that this entry is automatically replaced with u-boot-tpl-expanded
|
||||
unless --no-expanded is used.
|
||||
unless --no-expanded is used or the node has a 'no-expanded' property.
|
||||
|
||||
|
||||
|
||||
|
@ -164,7 +164,8 @@ class Entry(object):
|
||||
if obj and expanded:
|
||||
# Check whether to use the expanded entry
|
||||
new_etype = etype + '-expanded'
|
||||
if obj.UseExpanded(node, etype, new_etype):
|
||||
can_expand = not fdt_util.GetBool(node, 'no-expanded')
|
||||
if can_expand and obj.UseExpanded(node, etype, new_etype):
|
||||
etype = new_etype
|
||||
else:
|
||||
obj = None
|
||||
|
@ -25,7 +25,7 @@ class Entry_u_boot(Entry_blob):
|
||||
in the binman README for more information.
|
||||
|
||||
Note that this entry is automatically replaced with u-boot-expanded unless
|
||||
--no-expanded is used.
|
||||
--no-expanded is used or the node has a 'no-expanded' property.
|
||||
"""
|
||||
def __init__(self, section, etype, node):
|
||||
super().__init__(section, etype, node)
|
||||
|
@ -32,7 +32,7 @@ class Entry_u_boot_spl(Entry_blob):
|
||||
binman uses that to look up symbols to write into the SPL binary.
|
||||
|
||||
Note that this entry is automatically replaced with u-boot-spl-expanded
|
||||
unless --no-expanded is used.
|
||||
unless --no-expanded is used or the node has a 'no-expanded' property.
|
||||
"""
|
||||
def __init__(self, section, etype, node):
|
||||
super().__init__(section, etype, node)
|
||||
|
@ -32,7 +32,7 @@ class Entry_u_boot_tpl(Entry_blob):
|
||||
binman uses that to look up symbols to write into the TPL binary.
|
||||
|
||||
Note that this entry is automatically replaced with u-boot-tpl-expanded
|
||||
unless --no-expanded is used.
|
||||
unless --no-expanded is used or the node has a 'no-expanded' property.
|
||||
"""
|
||||
def __init__(self, section, etype, node):
|
||||
super().__init__(section, etype, node)
|
||||
|
@ -1344,13 +1344,19 @@ class TestFunctional(unittest.TestCase):
|
||||
data = self._DoReadFile('052_u_boot_spl_nodtb.dts')
|
||||
self.assertEqual(U_BOOT_SPL_NODTB_DATA, data[:len(U_BOOT_SPL_NODTB_DATA)])
|
||||
|
||||
def checkSymbols(self, dts, base_data, u_boot_offset):
|
||||
def checkSymbols(self, dts, base_data, u_boot_offset, entry_args=None,
|
||||
use_expanded=False):
|
||||
"""Check the image contains the expected symbol values
|
||||
|
||||
Args:
|
||||
dts: Device tree file to use for test
|
||||
base_data: Data before and after 'u-boot' section
|
||||
u_boot_offset: Offset of 'u-boot' section in image
|
||||
entry_args: Dict of entry args to supply to binman
|
||||
key: arg name
|
||||
value: value of that arg
|
||||
use_expanded: True to use expanded entries where available, e.g.
|
||||
'u-boot-expanded' instead of 'u-boot'
|
||||
"""
|
||||
elf_fname = self.ElfTestFile('u_boot_binman_syms')
|
||||
syms = elf.GetSymbols(elf_fname, ['binman', 'image'])
|
||||
@ -1359,7 +1365,8 @@ class TestFunctional(unittest.TestCase):
|
||||
addr)
|
||||
|
||||
self._SetupSplElf('u_boot_binman_syms')
|
||||
data = self._DoReadFile(dts)
|
||||
data = self._DoReadFileDtb(dts, entry_args=entry_args,
|
||||
use_expanded=use_expanded)[0]
|
||||
# The image should contain the symbols from u_boot_binman_syms.c
|
||||
# Note that image_pos is adjusted by the base address of the image,
|
||||
# which is 0x10 in our test image
|
||||
@ -4460,5 +4467,14 @@ class TestFunctional(unittest.TestCase):
|
||||
start += fdt_size + len(U_BOOT_TPL_DATA)
|
||||
self.assertEqual(len(data), start)
|
||||
|
||||
def testSymbolsExpanded(self):
|
||||
"""Test binman can assign symbols in expanded entries"""
|
||||
entry_args = {
|
||||
'spl-dtb': '1',
|
||||
}
|
||||
self.checkSymbols('197_symbols_expand.dts', U_BOOT_SPL_NODTB_DATA +
|
||||
U_BOOT_SPL_DTB_DATA, 0x38,
|
||||
entry_args=entry_args, use_expanded=True)
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
23
tools/binman/test/197_symbols_expand.dts
Normal file
23
tools/binman/test/197_symbols_expand.dts
Normal file
@ -0,0 +1,23 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
binman {
|
||||
pad-byte = <0xff>;
|
||||
u-boot-spl {
|
||||
};
|
||||
|
||||
u-boot {
|
||||
offset = <0x38>;
|
||||
no-expanded;
|
||||
};
|
||||
|
||||
u-boot-spl2 {
|
||||
type = "u-boot-spl";
|
||||
};
|
||||
};
|
||||
};
|
Loading…
Reference in New Issue
Block a user