xref: /llvm-project/lldb/test/API/macosx/lc-note/addrable-bits/TestAddrableBitsCorefile.py (revision 1eeeab82c6eb185f5139e633a59c2dbcb15616e4)
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