1""" 2Test some ARM instruction emulation. 3""" 4 5from __future__ import print_function 6 7 8import os 9import lldb 10from lldbsuite.test.decorators import * 11from lldbsuite.test.lldbtest import * 12from lldbsuite.test import lldbutil 13 14 15class ARMEmulationTestCase(TestBase): 16 17 @no_debug_info_test 18 def test_thumb_emulations(self): 19 test_dir = os.path.join(self.getSourceDir(), "new-test-files") 20 files = os.listdir(test_dir) 21 thumb_files = list() 22 for f in files: 23 if f.endswith('-thumb.dat'): 24 thumb_files.append(f) 25 26 for f in thumb_files: 27 test_file = os.path.join(test_dir, f) 28 self.run_a_single_test(test_file) 29 30 @no_debug_info_test 31 def test_arm_emulations(self): 32 test_dir = os.path.join(self.getSourceDir(), "new-test-files") 33 files = os.listdir(test_dir) 34 arm_files = list() 35 for f in files: 36 if f.endswith('-arm.dat'): 37 arm_files.append(f) 38 39 for f in arm_files: 40 test_file = os.path.join(test_dir, f) 41 self.run_a_single_test(test_file) 42 43 def run_a_single_test(self, filename): 44 insn = lldb.SBInstruction() 45 stream = lldb.SBStream() 46 success = insn.TestEmulation(stream, filename) 47 output = stream.GetData() 48 if self.TraceOn(): 49 print('\nRunning test ' + os.path.basename(filename)) 50 print(output) 51 52 self.assertTrue(success, 'Emulation test {} failed.'.format( 53 filename)) 54