forked from OSchip/llvm-project
Add specific error messages around gdb RSP handshake failures
Report timeout exceeded and connection lost error messages when sending the initial handshake packet in a gdb remote serial protocol connection, an especially fragile time. Differential Revision: https://reviews.llvm.org/D108888
This commit is contained in:
parent
766afbc804
commit
f3472ad5c5
|
@ -82,6 +82,8 @@ bool GDBRemoteCommunicationClient::HandshakeWithServer(Status *error_ptr) {
|
|||
|
||||
// Start the read thread after we send the handshake ack since if we fail to
|
||||
// send the handshake ack, there is no reason to continue...
|
||||
std::chrono::steady_clock::time_point start_of_handshake =
|
||||
std::chrono::steady_clock::now();
|
||||
if (SendAck()) {
|
||||
// Wait for any responses that might have been queued up in the remote
|
||||
// GDB server and flush them all
|
||||
|
@ -97,8 +99,24 @@ bool GDBRemoteCommunicationClient::HandshakeWithServer(Status *error_ptr) {
|
|||
if (QueryNoAckModeSupported()) {
|
||||
return true;
|
||||
} else {
|
||||
if (error_ptr)
|
||||
error_ptr->SetErrorString("failed to get reply to handshake packet");
|
||||
std::chrono::steady_clock::time_point end_of_handshake =
|
||||
std::chrono::steady_clock::now();
|
||||
auto handshake_timeout =
|
||||
std::chrono::duration<double>(end_of_handshake - start_of_handshake)
|
||||
.count();
|
||||
if (error_ptr) {
|
||||
if (packet_result == PacketResult::ErrorDisconnected)
|
||||
error_ptr->SetErrorString("Connection shut down by remote side "
|
||||
"while waiting for reply to initial "
|
||||
"handshake packet");
|
||||
else if (packet_result == PacketResult::ErrorReplyTimeout)
|
||||
error_ptr->SetErrorStringWithFormat(
|
||||
"failed to get reply to handshake packet within timeout of "
|
||||
"%.1f seconds",
|
||||
handshake_timeout);
|
||||
else
|
||||
error_ptr->SetErrorString("failed to get reply to handshake packet");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (error_ptr)
|
||||
|
|
Loading…
Reference in New Issue