1
2import gdbremote_testcase
3from lldbsuite.test.decorators import *
4from lldbsuite.test.lldbtest import *
5from lldbsuite.test import lldbutil
6
7
8class TestGdbRemote_vCont(gdbremote_testcase.GdbRemoteTestCaseBase):
9
10    mydir = TestBase.compute_mydir(__file__)
11
12    def vCont_supports_mode(self, mode, inferior_args=None):
13        # Setup the stub and set the gdb remote command stream.
14        procs = self.prep_debug_monitor_and_inferior(
15            inferior_args=inferior_args)
16        self.add_vCont_query_packets()
17
18        # Run the gdb remote command stream.
19        context = self.expect_gdbremote_sequence()
20        self.assertIsNotNone(context)
21
22        # Pull out supported modes.
23        supported_vCont_modes = self.parse_vCont_query_response(context)
24        self.assertIsNotNone(supported_vCont_modes)
25
26        # Verify we support the given mode.
27        self.assertTrue(mode in supported_vCont_modes)
28
29    def vCont_supports_c(self):
30        self.vCont_supports_mode("c")
31
32    def vCont_supports_C(self):
33        self.vCont_supports_mode("C")
34
35    def vCont_supports_s(self):
36        self.vCont_supports_mode("s")
37
38    def vCont_supports_S(self):
39        self.vCont_supports_mode("S")
40
41    @expectedFailureAll(oslist=["ios", "tvos", "watchos", "bridgeos"], bugnumber="rdar://27005337")
42    @debugserver_test
43    def test_vCont_supports_c_debugserver(self):
44        self.init_debugserver_test()
45        self.build()
46        self.vCont_supports_c()
47
48    @expectedFailureAll(oslist=["ios", "tvos", "watchos", "bridgeos"], bugnumber="rdar://27005337")
49    @llgs_test
50    def test_vCont_supports_c_llgs(self):
51        self.init_llgs_test()
52        self.build()
53        self.vCont_supports_c()
54
55    @expectedFailureAll(oslist=["ios", "tvos", "watchos", "bridgeos"], bugnumber="rdar://27005337")
56    @debugserver_test
57    def test_vCont_supports_C_debugserver(self):
58        self.init_debugserver_test()
59        self.build()
60        self.vCont_supports_C()
61
62    @expectedFailureAll(oslist=["ios", "tvos", "watchos", "bridgeos"], bugnumber="rdar://27005337")
63    @llgs_test
64    def test_vCont_supports_C_llgs(self):
65        self.init_llgs_test()
66        self.build()
67        self.vCont_supports_C()
68
69    @expectedFailureAll(oslist=["ios", "tvos", "watchos", "bridgeos"], bugnumber="rdar://27005337")
70    @debugserver_test
71    def test_vCont_supports_s_debugserver(self):
72        self.init_debugserver_test()
73        self.build()
74        self.vCont_supports_s()
75
76    @expectedFailureAll(oslist=["ios", "tvos", "watchos", "bridgeos"], bugnumber="rdar://27005337")
77    @llgs_test
78    def test_vCont_supports_s_llgs(self):
79        self.init_llgs_test()
80        self.build()
81        self.vCont_supports_s()
82
83    @expectedFailureAll(oslist=["ios", "tvos", "watchos", "bridgeos"], bugnumber="rdar://27005337")
84    @debugserver_test
85    def test_vCont_supports_S_debugserver(self):
86        self.init_debugserver_test()
87        self.build()
88        self.vCont_supports_S()
89
90    @expectedFailureAll(oslist=["ios", "tvos", "watchos", "bridgeos"], bugnumber="rdar://27005337")
91    @llgs_test
92    def test_vCont_supports_S_llgs(self):
93        self.init_llgs_test()
94        self.build()
95        self.vCont_supports_S()
96
97    @expectedFailureAll(oslist=["ios", "tvos", "watchos", "bridgeos"], bugnumber="rdar://27005337")
98    @debugserver_test
99    def test_single_step_only_steps_one_instruction_with_Hc_vCont_s_debugserver(
100            self):
101        self.init_debugserver_test()
102        self.build()
103        self.set_inferior_startup_launch()
104        self.single_step_only_steps_one_instruction(
105            use_Hc_packet=True, step_instruction="vCont;s")
106
107    @skipIfWindows # No pty support to test O* & I* notification packets.
108    @llgs_test
109    @expectedFailureAndroid(
110        bugnumber="llvm.org/pr24739",
111        archs=[
112            "arm",
113            "aarch64"])
114    @expectedFailureAll(
115        oslist=["linux"],
116        archs=["arm"],
117        bugnumber="llvm.org/pr24739")
118    @skipIf(triple='^mips')
119    @expectedFailureAll(oslist=["ios", "tvos", "watchos", "bridgeos"], bugnumber="rdar://27005337")
120    def test_single_step_only_steps_one_instruction_with_Hc_vCont_s_llgs(self):
121        self.init_llgs_test()
122        self.build()
123        self.set_inferior_startup_launch()
124        self.single_step_only_steps_one_instruction(
125            use_Hc_packet=True, step_instruction="vCont;s")
126
127    @expectedFailureAll(oslist=["ios", "tvos", "watchos", "bridgeos"], bugnumber="rdar://27005337")
128    @debugserver_test
129    def test_single_step_only_steps_one_instruction_with_vCont_s_thread_debugserver(
130            self):
131        self.init_debugserver_test()
132        self.build()
133        self.set_inferior_startup_launch()
134        self.single_step_only_steps_one_instruction(
135            use_Hc_packet=False, step_instruction="vCont;s:{thread}")
136
137    @skipIfWindows # No pty support to test O* & I* notification packets.
138    @llgs_test
139    @expectedFailureAndroid(
140        bugnumber="llvm.org/pr24739",
141        archs=[
142            "arm",
143            "aarch64"])
144    @expectedFailureAll(
145        oslist=["linux"],
146        archs=["arm"],
147        bugnumber="llvm.org/pr24739")
148    @skipIf(triple='^mips')
149    @expectedFailureAll(oslist=["ios", "tvos", "watchos", "bridgeos"], bugnumber="rdar://27005337")
150    def test_single_step_only_steps_one_instruction_with_vCont_s_thread_llgs(
151            self):
152        self.init_llgs_test()
153        self.build()
154        self.set_inferior_startup_launch()
155        self.single_step_only_steps_one_instruction(
156            use_Hc_packet=False, step_instruction="vCont;s:{thread}")
157