summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2023-01-23 11:29:41 -0700
committerSimon Glass <sjg@chromium.org>2023-01-26 10:47:45 -0700
commit060a65e899859dcbf42049a18be20ce7118e7c0e (patch)
tree6289299feae412a54dd6251985bb65bfe5dc9501 /tools
parentc2e13aa9e1a99da9334f0a666783c8f7dd98016f (diff)
downloadu-boot-060a65e899859dcbf42049a18be20ce7118e7c0e.tar.gz
u-boot-060a65e899859dcbf42049a18be20ce7118e7c0e.tar.bz2
u-boot-060a65e899859dcbf42049a18be20ce7118e7c0e.zip
binman: Fix a test-coverage regression
Unfortunately a recent patch snuck through without the require test coverage. Fix it. Signed-off-by: Simon Glass <sjg@chromium.org> Fixes: 571bc4e67d3 ("binman: Support positioning an entry by and ELF symbol")
Diffstat (limited to 'tools')
-rw-r--r--tools/binman/elf_test.py13
-rw-r--r--tools/binman/entry_test.py19
-rw-r--r--tools/binman/test/embed_data.c1
3 files changed, 32 insertions, 1 deletions
diff --git a/tools/binman/elf_test.py b/tools/binman/elf_test.py
index 082a3e1d28..8cb55ebb81 100644
--- a/tools/binman/elf_test.py
+++ b/tools/binman/elf_test.py
@@ -242,7 +242,7 @@ class TestElf(unittest.TestCase):
end = offset['embed_end'].offset
data = tools.read_file(fname)
embed_data = data[start:end]
- expect = struct.pack('<III', 0x1234, 0x5678, 0)
+ expect = struct.pack('<IIIII', 2, 3, 0x1234, 0x5678, 0)
self.assertEqual(expect, embed_data)
def testEmbedFail(self):
@@ -358,6 +358,17 @@ class TestElf(unittest.TestCase):
self.assertEqual(True, elf.is_valid(data))
self.assertEqual(False, elf.is_valid(data[4:]))
+ def test_get_symbol_offset(self):
+ fname = self.ElfTestFile('embed_data')
+ syms = elf.GetSymbols(fname, ['embed_start', 'embed'])
+ expected = syms['embed'].address - syms['embed_start'].address
+ val = elf.GetSymbolOffset(fname, 'embed', 'embed_start')
+ self.assertEqual(expected, val)
+
+ with self.assertRaises(KeyError) as e:
+ elf.GetSymbolOffset(fname, 'embed')
+ self.assertIn('__image_copy_start', str(e.exception))
+
if __name__ == '__main__':
unittest.main()
diff --git a/tools/binman/entry_test.py b/tools/binman/entry_test.py
index aa470c5816..a6fbf62731 100644
--- a/tools/binman/entry_test.py
+++ b/tools/binman/entry_test.py
@@ -114,6 +114,25 @@ class TestEntry(unittest.TestCase):
self.assertEquals(tools.get_bytes(0, 1024), base.CompressData(b'abc'))
self.assertEquals(tools.get_bytes(0, 1024), base.DecompressData(b'abc'))
+ def testLookupOffset(self):
+ """Test the lookup_offset() method of the base class"""
+ def MyFindEntryByNode(node):
+ return self.found
+
+ base = entry.Entry.Create(None, self.GetNode(), 'blob-dtb')
+ base.FindEntryByNode = MyFindEntryByNode
+ base.section = base
+ self.found = None
+ base.offset_from_elf = [self.GetNode(), 'start', 0]
+ with self.assertRaises(ValueError) as e:
+ base.lookup_offset()
+ self.assertIn("Cannot find entry for node 'u-boot'", str(e.exception))
+
+ self.found = base
+ with self.assertRaises(ValueError) as e:
+ base.lookup_offset()
+ self.assertIn("Need elf-fname property 'u-boot'", str(e.exception))
+
if __name__ == "__main__":
unittest.main()
diff --git a/tools/binman/test/embed_data.c b/tools/binman/test/embed_data.c
index 47d8c38248..08b68c550f 100644
--- a/tools/binman/test/embed_data.c
+++ b/tools/binman/test/embed_data.c
@@ -7,6 +7,7 @@
*/
int first[10] = {1};
+int before[2] __attribute__((section(".embed"))) = {2, 3};
int embed[3] __attribute__((section(".embed"))) = {0x1234, 0x5678};
int second[10] = {1};