| """ |
| Test some ARM instruction emulation. |
| """ |
| |
| from __future__ import print_function |
| |
| |
| import os |
| import time |
| import lldb |
| from lldbsuite.test.decorators import * |
| from lldbsuite.test.lldbtest import * |
| from lldbsuite.test import lldbutil |
| |
| |
| class ARMEmulationTestCase(TestBase): |
| |
| mydir = TestBase.compute_mydir(__file__) |
| |
| @no_debug_info_test |
| def test_thumb_emulations(self): |
| test_dir = os.path.join(self.getSourceDir(), "new-test-files") |
| files = os.listdir(test_dir) |
| thumb_files = list() |
| for f in files: |
| if '-thumb.dat' in f: |
| thumb_files.append(f) |
| |
| for f in thumb_files: |
| test_file = os.path.join(test_dir, f) |
| self.run_a_single_test(test_file) |
| |
| @no_debug_info_test |
| def test_arm_emulations(self): |
| test_dir = os.path.join(self.getSourceDir(), "new-test-files") |
| files = os.listdir(test_dir) |
| arm_files = list() |
| for f in files: |
| if '-arm.dat' in f: |
| arm_files.append(f) |
| |
| for f in arm_files: |
| test_file = os.path.join(test_dir, f) |
| self.run_a_single_test(test_file) |
| |
| def run_a_single_test(self, filename): |
| insn = lldb.SBInstruction() |
| stream = lldb.SBStream() |
| success = insn.TestEmulation(stream, filename) |
| output = stream.GetData() |
| if self.TraceOn(): |
| print('\nRunning test ' + os.path.basename(filename)) |
| print(output) |
| |
| self.assertTrue(success, 'Emulation test succeeded.') |