1cdc6f8d7SJason Molenda"""Test that corefiles with LC_NOTE "addrable bits" load command, creating and reading.""" 2cdc6f8d7SJason Molenda 3cdc6f8d7SJason Molenda 4cdc6f8d7SJason Molendaimport os 5cdc6f8d7SJason Molendaimport re 6cdc6f8d7SJason Molendaimport subprocess 7cdc6f8d7SJason Molenda 8cdc6f8d7SJason Molendaimport lldb 9cdc6f8d7SJason Molendafrom lldbsuite.test.decorators import * 10cdc6f8d7SJason Molendafrom lldbsuite.test.lldbtest import * 11cdc6f8d7SJason Molendafrom lldbsuite.test import lldbutil 12cdc6f8d7SJason Molenda 13cdc6f8d7SJason Molenda 14cdc6f8d7SJason Molendaclass TestAddrableBitsCorefile(TestBase): 15cdc6f8d7SJason Molenda NO_DEBUG_INFO_TESTCASE = True 16cdc6f8d7SJason Molenda 17cdc6f8d7SJason Molenda def initial_setup(self): 18cdc6f8d7SJason Molenda self.build() 19cdc6f8d7SJason Molenda self.exe = self.getBuildArtifact("a.out") 20cdc6f8d7SJason Molenda self.corefile = self.getBuildArtifact("corefile") 21cdc6f8d7SJason Molenda 222238dcc3SJonas Devlieghere @skipIf(archs=no_match(["arm64e"])) 23cdc6f8d7SJason Molenda @skipUnlessDarwin 24cdc6f8d7SJason Molenda def test_lc_note_addrable_bits(self): 25cdc6f8d7SJason Molenda self.initial_setup() 26cdc6f8d7SJason Molenda 27cdc6f8d7SJason Molenda self.target = self.dbg.CreateTarget(self.exe) 28cdc6f8d7SJason Molenda err = lldb.SBError() 292238dcc3SJonas Devlieghere (target, process, thread, bkpt) = lldbutil.run_to_source_breakpoint( 302238dcc3SJonas Devlieghere self, "break here", lldb.SBFileSpec("main.c") 312238dcc3SJonas Devlieghere ) 32*1eeeab82SJordan Rupprecht self.assertTrue(process.IsValid()) 33cdc6f8d7SJason Molenda 34cdc6f8d7SJason Molenda found_main = False 35cdc6f8d7SJason Molenda for f in thread.frames: 36cdc6f8d7SJason Molenda if f.GetFunctionName() == "main": 37cdc6f8d7SJason Molenda found_main = True 38cdc6f8d7SJason Molenda self.assertTrue(found_main) 39cdc6f8d7SJason Molenda 40cdc6f8d7SJason Molenda cmdinterp = self.dbg.GetCommandInterpreter() 41cdc6f8d7SJason Molenda res = lldb.SBCommandReturnObject() 42cdc6f8d7SJason Molenda cmdinterp.HandleCommand("process save-core %s" % self.corefile, res) 43cdc6f8d7SJason Molenda self.assertTrue(res.Succeeded(), True) 44cdc6f8d7SJason Molenda process.Kill() 45cdc6f8d7SJason Molenda self.dbg.DeleteTarget(target) 46cdc6f8d7SJason Molenda 472238dcc3SJonas Devlieghere target = self.dbg.CreateTarget("") 48cdc6f8d7SJason Molenda process = target.LoadCore(self.corefile) 49cdc6f8d7SJason Molenda self.assertTrue(process.IsValid(), True) 50cdc6f8d7SJason Molenda thread = process.GetSelectedThread() 51cdc6f8d7SJason Molenda 52cdc6f8d7SJason Molenda found_main = False 53cdc6f8d7SJason Molenda for f in thread.frames: 54cdc6f8d7SJason Molenda if f.GetFunctionName() == "main": 55cdc6f8d7SJason Molenda found_main = True 56cdc6f8d7SJason Molenda self.assertTrue(found_main) 57