binman: elf: Check for ELF_TOOLS availability and remove extra semicolon

Check if elf tools are available when running DecodeElf(). Also
remove superfuous semicolon at line ending.

Signed-off-by: Lukas Funke <lukas.funke@weidmueller.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Revert part of patch to make binman test pass
Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Lukas Funke 2023-07-18 13:53:09 +02:00 committed by Simon Glass
parent 7755b22007
commit 43176ed86d
2 changed files with 20 additions and 6 deletions

View File

@ -447,13 +447,15 @@ def DecodeElf(data, location):
Returns:
ElfInfo object containing information about the decoded ELF file
"""
if not ELF_TOOLS:
raise ValueError("Python: No module named 'elftools'")
file_size = len(data)
with io.BytesIO(data) as fd:
elf = ELFFile(fd)
data_start = 0xffffffff;
data_end = 0;
mem_end = 0;
virt_to_phys = 0;
data_start = 0xffffffff
data_end = 0
mem_end = 0
virt_to_phys = 0
for i in range(elf.num_segments()):
segment = elf.get_segment(i)

View File

@ -255,8 +255,20 @@ class TestElf(unittest.TestCase):
fname = self.ElfTestFile('embed_data')
with self.assertRaises(ValueError) as e:
elf.GetSymbolFileOffset(fname, ['embed_start', 'embed_end'])
self.assertIn("Python: No module named 'elftools'",
str(e.exception))
with self.assertRaises(ValueError) as e:
elf.DecodeElf(tools.read_file(fname), 0xdeadbeef)
with self.assertRaises(ValueError) as e:
elf.GetFileOffset(fname, 0xdeadbeef)
with self.assertRaises(ValueError) as e:
elf.GetSymbolFromAddress(fname, 0xdeadbeef)
with self.assertRaises(ValueError) as e:
entry = FakeEntry(10)
section = FakeSection()
elf.LookupAndWriteSymbols(fname, entry, section, True)
self.assertIn(
"Section 'section_path': entry 'entry_path': Cannot write symbols to an ELF file without Python elftools",
str(e.exception))
finally:
elf.ELF_TOOLS = old_val