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