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