| #!/usr/bin/env python |
| # |
| # Copyright 2020, Data61, CSIRO (ABN 41 687 119 230) |
| # |
| # SPDX-License-Identifier: BSD-2-Clause |
| # |
| |
| from __future__ import absolute_import, division, print_function, \ |
| unicode_literals |
| |
| import unittest |
| |
| from capdl import ELF |
| from tests import CapdlTestCase |
| |
| |
| class TestElf(CapdlTestCase): |
| |
| def test_elf(self): |
| elf = ELF('resources/arm-hello.bin') |
| assert elf.get_arch() in [40, 'EM_ARM', 'ARM'] |
| elf.get_spec() |
| |
| def test_ia32_elf(self): |
| elf = ELF('resources/ia32-hello.bin') |
| assert elf.get_arch() == 'x86' |
| |
| elf.get_spec() |
| |
| def test_symbol_lookup(self): |
| elf = ELF('resources/unstripped.bin') |
| assert elf.get_arch() == 'x86' |
| |
| # Confirm that the address concurs with the one we get from objdump. |
| assert elf.get_symbol_vaddr('_start') == 0x08048d48 |
| |
| elf = ELF('resources/stripped.bin') |
| assert elf.get_arch() == 'x86' |
| |
| # We shouldn't be able to get the symbol from the stripped binary. |
| try: |
| vaddr = elf.get_symbol_vaddr('_start') |
| assert not ('Symbol lookup on a stripped binary returned _start == 0x%0.8x' % vaddr) |
| except: |
| # Expected |
| pass |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |