xref: /llvm-project/lldb/test/API/arm/emulation/TestEmulations.py (revision 2238dcc39358353cac21df75c3c3286ab20b8f53)
199451b44SJordan Rupprecht"""
299451b44SJordan RupprechtTest some ARM instruction emulation.
399451b44SJordan Rupprecht"""
499451b44SJordan Rupprecht
599451b44SJordan Rupprechtimport os
699451b44SJordan Rupprechtimport lldb
799451b44SJordan Rupprechtfrom lldbsuite.test.decorators import *
899451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import *
999451b44SJordan Rupprechtfrom lldbsuite.test import lldbutil
1099451b44SJordan Rupprecht
1199451b44SJordan Rupprecht
1299451b44SJordan Rupprechtclass ARMEmulationTestCase(TestBase):
1399451b44SJordan Rupprecht    @no_debug_info_test
1499451b44SJordan Rupprecht    def test_thumb_emulations(self):
1599451b44SJordan Rupprecht        test_dir = os.path.join(self.getSourceDir(), "new-test-files")
1699451b44SJordan Rupprecht        files = os.listdir(test_dir)
1799451b44SJordan Rupprecht        thumb_files = list()
1899451b44SJordan Rupprecht        for f in files:
19*2238dcc3SJonas Devlieghere            if f.endswith("-thumb.dat"):
2099451b44SJordan Rupprecht                thumb_files.append(f)
2199451b44SJordan Rupprecht
2299451b44SJordan Rupprecht        for f in thumb_files:
2399451b44SJordan Rupprecht            test_file = os.path.join(test_dir, f)
2499451b44SJordan Rupprecht            self.run_a_single_test(test_file)
2599451b44SJordan Rupprecht
2699451b44SJordan Rupprecht    @no_debug_info_test
2799451b44SJordan Rupprecht    def test_arm_emulations(self):
2899451b44SJordan Rupprecht        test_dir = os.path.join(self.getSourceDir(), "new-test-files")
2999451b44SJordan Rupprecht        files = os.listdir(test_dir)
3099451b44SJordan Rupprecht        arm_files = list()
3199451b44SJordan Rupprecht        for f in files:
32*2238dcc3SJonas Devlieghere            if f.endswith("-arm.dat"):
3399451b44SJordan Rupprecht                arm_files.append(f)
3499451b44SJordan Rupprecht
3599451b44SJordan Rupprecht        for f in arm_files:
3699451b44SJordan Rupprecht            test_file = os.path.join(test_dir, f)
3799451b44SJordan Rupprecht            self.run_a_single_test(test_file)
3899451b44SJordan Rupprecht
3999451b44SJordan Rupprecht    def run_a_single_test(self, filename):
4099451b44SJordan Rupprecht        insn = lldb.SBInstruction()
4199451b44SJordan Rupprecht        stream = lldb.SBStream()
4299451b44SJordan Rupprecht        success = insn.TestEmulation(stream, filename)
4399451b44SJordan Rupprecht        output = stream.GetData()
4499451b44SJordan Rupprecht        if self.TraceOn():
45*2238dcc3SJonas Devlieghere            print("\nRunning test " + os.path.basename(filename))
4699451b44SJordan Rupprecht            print(output)
4799451b44SJordan Rupprecht
48*2238dcc3SJonas Devlieghere        self.assertTrue(success, "Emulation test {} failed.".format(filename))
49