summaryrefslogtreecommitdiffstats
path: root/tools/binman/elf_test.py
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2019-07-08 13:18:35 -0600
committerSimon Glass <sjg@chromium.org>2019-07-23 20:27:57 -0700
commitd8d40748dd6f202948a8173073cf34f3b6468b6d (patch)
tree301b945ae17e4c90e9e20041ed22e35fbfa7e825 /tools/binman/elf_test.py
parentf58558a5ae785fdbdaadbe172a2bb86158f01d4f (diff)
downloadu-boot-d8d40748dd6f202948a8173073cf34f3b6468b6d.tar.gz
u-boot-d8d40748dd6f202948a8173073cf34f3b6468b6d.tar.xz
u-boot-d8d40748dd6f202948a8173073cf34f3b6468b6d.zip
binman: Add a function to decode an ELF file
Add a function which decodes an ELF file, working out where in memory each part of the data should be written. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'tools/binman/elf_test.py')
-rw-r--r--tools/binman/elf_test.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/tools/binman/elf_test.py b/tools/binman/elf_test.py
index 3172982427..e2506377f2 100644
--- a/tools/binman/elf_test.py
+++ b/tools/binman/elf_test.py
@@ -156,6 +156,27 @@ class TestElf(unittest.TestCase):
self.assertEqual(expected_text + expected_data, data)
shutil.rmtree(outdir)
+ def testDecodeElf(self):
+ """Test for the MakeElf function"""
+ if not elf.ELF_TOOLS:
+ self.skipTest('Python elftools not available')
+ outdir = tempfile.mkdtemp(prefix='elf.')
+ expected_text = b'1234'
+ expected_data = b'wxyz'
+ elf_fname = os.path.join(outdir, 'elf')
+ elf.MakeElf(elf_fname, expected_text, expected_data)
+ data = tools.ReadFile(elf_fname)
+
+ load = 0xfef20000
+ entry = load + 2
+ expected = expected_text + expected_data
+ self.assertEqual(elf.ElfInfo(expected, load, entry, len(expected)),
+ elf.DecodeElf(data, 0))
+ self.assertEqual(elf.ElfInfo(b'\0\0' + expected[2:],
+ load, entry, len(expected)),
+ elf.DecodeElf(data, load + 2))
+ #shutil.rmtree(outdir)
+
if __name__ == '__main__':
unittest.main()