xref: /llvm-project/lldb/test/API/functionalities/gdb_remote_client/TestContinue.py (revision 2238dcc39358353cac21df75c3c3286ab20b8f53)
1import lldb
2from lldbsuite.test.lldbtest import *
3from lldbsuite.test.decorators import *
4from lldbsuite.test.gdbclientutils import *
5from lldbsuite.test.lldbgdbclient import GDBRemoteTestBase
6
7
8class TestContinue(GDBRemoteTestBase):
9    class BaseResponder(MockGDBServerResponder):
10        def qSupported(self, client_supported):
11            return "PacketSize=3fff;QStartNoAckMode+;multiprocess+"
12
13        def qfThreadInfo(self):
14            return "mp400.401"
15
16        def haltReason(self):
17            return "S13"
18
19        def cont(self):
20            return "W01"
21
22        def other(self, packet):
23            if packet == "vCont?":
24                return "vCont;c;C;s;S"
25            if packet.startswith("vCont;"):
26                return "W00"
27            return ""
28
29    def test_continue_no_multiprocess(self):
30        class MyResponder(self.BaseResponder):
31            def qSupported(self, client_supported):
32                return "PacketSize=3fff;QStartNoAckMode+"
33
34            def qfThreadInfo(self):
35                return "m401"
36
37        self.server.responder = MyResponder()
38        self.runCmd("platform select remote-linux")
39        target = self.createTarget("a.yaml")
40        process = self.connect(target)
41        lldbutil.expect_state_changes(
42            self, self.dbg.GetListener(), process, [lldb.eStateExited]
43        )
44        self.assertPacketLogContains(["vCont;C13:401"])
45
46    def test_continue_no_vCont(self):
47        class MyResponder(self.BaseResponder):
48            def qSupported(self, client_supported):
49                return "PacketSize=3fff;QStartNoAckMode+"
50
51            def qfThreadInfo(self):
52                return "m401"
53
54            def other(self, packet):
55                return ""
56
57        self.server.responder = MyResponder()
58        self.runCmd("platform select remote-linux")
59        target = self.createTarget("a.yaml")
60        process = self.connect(target)
61        lldbutil.expect_state_changes(
62            self, self.dbg.GetListener(), process, [lldb.eStateExited]
63        )
64        self.assertPacketLogContains(["Hc401", "C13"])
65
66    def test_continue_multiprocess(self):
67        class MyResponder(self.BaseResponder):
68            pass
69
70        self.server.responder = MyResponder()
71        self.runCmd("platform select remote-linux")
72        target = self.createTarget("a.yaml")
73        process = self.connect(target)
74        lldbutil.expect_state_changes(
75            self, self.dbg.GetListener(), process, [lldb.eStateExited]
76        )
77        self.assertPacketLogContains(["vCont;C13:p400.401"])
78