1*a6926d57SMed Ismail Bennani"""
2*a6926d57SMed Ismail BennaniTest SBCompileUnit APIs.
3*a6926d57SMed Ismail Bennani"""
4*a6926d57SMed Ismail Bennani
5*a6926d57SMed Ismail Bennaniimport lldb
6*a6926d57SMed Ismail Bennanifrom lldbsuite.test.decorators import *
7*a6926d57SMed Ismail Bennanifrom lldbsuite.test.lldbtest import *
8*a6926d57SMed Ismail Bennanifrom lldbsuite.test import lldbutil
9*a6926d57SMed Ismail Bennani
10*a6926d57SMed Ismail Bennani
11*a6926d57SMed Ismail Bennaniclass CompileUnitAPITestCase(TestBase):
12*a6926d57SMed Ismail Bennani
13*a6926d57SMed Ismail Bennani    mydir = TestBase.compute_mydir(__file__)
14*a6926d57SMed Ismail Bennani
15*a6926d57SMed Ismail Bennani    def setUp(self):
16*a6926d57SMed Ismail Bennani        TestBase.setUp(self)
17*a6926d57SMed Ismail Bennani
18*a6926d57SMed Ismail Bennani    def test(self):
19*a6926d57SMed Ismail Bennani        """Exercise some SBCompileUnit APIs."""
20*a6926d57SMed Ismail Bennani        self.build()
21*a6926d57SMed Ismail Bennani
22*a6926d57SMed Ismail Bennani        (target, process, thread, bkpt) = lldbutil.run_to_source_breakpoint(self, 'break here', lldb.SBFileSpec('main.c'))
23*a6926d57SMed Ismail Bennani        self.assertTrue(target, VALID_TARGET)
24*a6926d57SMed Ismail Bennani        self.assertTrue(process, PROCESS_IS_VALID)
25*a6926d57SMed Ismail Bennani        self.assertTrue(bkpt and bkpt.GetNumLocations() == 1,
26*a6926d57SMed Ismail Bennani                        VALID_BREAKPOINT)
27*a6926d57SMed Ismail Bennani
28*a6926d57SMed Ismail Bennani        self.assertTrue(
29*a6926d57SMed Ismail Bennani            thread.IsValid(),
30*a6926d57SMed Ismail Bennani            "There should be a thread stopped due to breakpoint condition")
31*a6926d57SMed Ismail Bennani        frame0 = thread.GetFrameAtIndex(0)
32*a6926d57SMed Ismail Bennani        line_entry = frame0.GetLineEntry()
33*a6926d57SMed Ismail Bennani
34*a6926d57SMed Ismail Bennani        sc_list = target.FindCompileUnits(line_entry.GetFileSpec())
35*a6926d57SMed Ismail Bennani        self.assertGreater(sc_list.GetSize(), 0)
36*a6926d57SMed Ismail Bennani
37*a6926d57SMed Ismail Bennani        main_cu = sc_list.compile_units[0]
38*a6926d57SMed Ismail Bennani        self.assertTrue(main_cu.IsValid(), "Main executable CU is not valid")
39*a6926d57SMed Ismail Bennani
40*a6926d57SMed Ismail Bennani        self.assertEqual(main_cu.GetIndexForLineEntry(line_entry, True),
41*a6926d57SMed Ismail Bennani                         main_cu.FindLineEntryIndex(0, line_entry.GetLine(),
42*a6926d57SMed Ismail Bennani                                   line_entry.GetFileSpec(), True))
43*a6926d57SMed Ismail Bennani
44*a6926d57SMed Ismail Bennani
45