Revert "[lldb] Fix qEcho message handling (#145072)" (#145241)

Temporarily revert commit e066f35c6981c720e3a7e5883efc40c861b3b7ee,
because lldb tests randomly hang after it's been pushed.
This commit is contained in:
eleviant 2025-06-22 18:59:08 +02:00 committed by GitHub
parent ee414e3504
commit 80b9fcf8fd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 2 additions and 85 deletions

View File

@ -92,9 +92,6 @@ class MockGDBServerResponder:
class RESPONSE_DISCONNECT: class RESPONSE_DISCONNECT:
pass pass
class RESPONSE_NONE:
pass
def __init__(self): def __init__(self):
self.packetLog = [] self.packetLog = []
@ -184,8 +181,6 @@ class MockGDBServerResponder:
return self.qQueryGDBServer() return self.qQueryGDBServer()
if packet == "qHostInfo": if packet == "qHostInfo":
return self.qHostInfo() return self.qHostInfo()
if packet.startswith("qEcho"):
return self.qEcho(int(packet.split(":")[1]))
if packet == "qGetWorkingDir": if packet == "qGetWorkingDir":
return self.qGetWorkingDir() return self.qGetWorkingDir()
if packet == "qOffsets": if packet == "qOffsets":
@ -242,9 +237,6 @@ class MockGDBServerResponder:
def qHostInfo(self): def qHostInfo(self):
return "ptrsize:8;endian:little;" return "ptrsize:8;endian:little;"
def qEcho(self):
return "E04"
def qQueryGDBServer(self): def qQueryGDBServer(self):
return "E04" return "E04"
@ -663,8 +655,6 @@ class MockGDBServer:
if not isinstance(response, list): if not isinstance(response, list):
response = [response] response = [response]
for part in response: for part in response:
if part is MockGDBServerResponder.RESPONSE_NONE:
continue
if part is MockGDBServerResponder.RESPONSE_DISCONNECT: if part is MockGDBServerResponder.RESPONSE_DISCONNECT:
raise self.TerminateConnectionException() raise self.TerminateConnectionException()
self._sendPacket(part) self._sendPacket(part)

View File

@ -354,9 +354,8 @@ GDBRemoteCommunication::WaitForPacketNoLock(StringExtractorGDBRemote &packet,
disconnected = true; disconnected = true;
Disconnect(); Disconnect();
} }
} else {
timed_out = true;
} }
timed_out = true;
break; break;
case eConnectionStatusSuccess: case eConnectionStatusSuccess:
// printf ("status = success but error = %s\n", // printf ("status = success but error = %s\n",

View File

@ -406,7 +406,7 @@ void GDBRemoteCommunicationClient::GetRemoteQSupported() {
m_supports_qXfer_memory_map_read = eLazyBoolYes; m_supports_qXfer_memory_map_read = eLazyBoolYes;
else if (x == "qXfer:siginfo:read+") else if (x == "qXfer:siginfo:read+")
m_supports_qXfer_siginfo_read = eLazyBoolYes; m_supports_qXfer_siginfo_read = eLazyBoolYes;
else if (x == "qEcho+") else if (x == "qEcho")
m_supports_qEcho = eLazyBoolYes; m_supports_qEcho = eLazyBoolYes;
else if (x == "QPassSignals+") else if (x == "QPassSignals+")
m_supports_QPassSignals = eLazyBoolYes; m_supports_QPassSignals = eLazyBoolYes;

View File

@ -356,78 +356,6 @@ class TestGDBRemoteClient(GDBRemoteTestBase):
["vRun;%s;61726731;61726732;61726733" % (exe_hex,)] ["vRun;%s;61726731;61726732;61726733" % (exe_hex,)]
) )
def test_launch_lengthy_vRun(self):
class MyResponder(MockGDBServerResponder):
def __init__(self, *args, **kwargs):
self.started = False
return super().__init__(*args, **kwargs)
def qC(self):
if self.started:
return "QCp10.10"
else:
return "E42"
def qfThreadInfo(self):
if self.started:
return "mp10.10"
else:
return "E42"
def qsThreadInfo(self):
return "l"
def qEcho(self, num):
resp = "qEcho:" + str(num)
if num >= 2:
# We have launched our program
self.started = True
return [resp, "T13"]
return resp
def qSupported(self, client_supported):
return "PacketSize=3fff;QStartNoAckMode+;qEcho+;"
def qHostInfo(self):
return "default_packet_timeout:1;"
def vRun(self, packet):
return [self.RESPONSE_NONE]
def A(self, packet):
return "E28"
self.server.responder = MyResponder()
target = self.createTarget("a.yaml")
# NB: apparently GDB packets are using "/" on Windows too
exe_path = self.getBuildArtifact("a").replace(os.path.sep, "/")
exe_hex = binascii.b2a_hex(exe_path.encode()).decode()
process = self.connect(target)
lldbutil.expect_state_changes(
self, self.dbg.GetListener(), process, [lldb.eStateConnected]
)
process = target.Launch(
lldb.SBListener(),
["arg1", "arg2", "arg3"], # argv
[], # envp
None, # stdin_path
None, # stdout_path
None, # stderr_path
None, # working_directory
0, # launch_flags
True, # stop_at_entry
lldb.SBError(),
) # error
self.assertTrue(process, PROCESS_IS_VALID)
self.assertEqual(process.GetProcessID(), 16)
self.assertPacketLogContains(
["vRun;%s;61726731;61726732;61726733" % (exe_hex,)]
)
def test_launch_QEnvironment(self): def test_launch_QEnvironment(self):
class MyResponder(MockGDBServerResponder): class MyResponder(MockGDBServerResponder):
def qC(self): def qC(self):