diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp index a44e666427899..e49bf22512cf3 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp @@ -686,54 +686,6 @@ bool GDBRemoteCommunicationClient::GetxPacketSupported() { return m_supports_x; } -GDBRemoteCommunicationClient::PacketResult -GDBRemoteCommunicationClient::SendPacketsAndConcatenateResponses( - const char *payload_prefix, std::string &response_string) { - Lock lock(*this); - if (!lock) { - Log *log(ProcessGDBRemoteLog::GetLogIfAnyCategoryIsSet(GDBR_LOG_PROCESS | - GDBR_LOG_PACKETS)); - LLDB_LOGF(log, - "error: failed to get packet sequence mutex, not sending " - "packets with prefix '%s'", - payload_prefix); - return PacketResult::ErrorNoSequenceLock; - } - - response_string = ""; - std::string payload_prefix_str(payload_prefix); - unsigned int response_size = 0x1000; - if (response_size > GetRemoteMaxPacketSize()) { // May send qSupported packet - response_size = GetRemoteMaxPacketSize(); - } - - for (unsigned int offset = 0; true; offset += response_size) { - StringExtractorGDBRemote this_response; - // Construct payload - char sizeDescriptor[128]; - snprintf(sizeDescriptor, sizeof(sizeDescriptor), "%x,%x", offset, - response_size); - PacketResult result = SendPacketAndWaitForResponseNoLock( - payload_prefix_str + sizeDescriptor, this_response); - if (result != PacketResult::Success) - return result; - - const std::string &this_string = std::string(this_response.GetStringRef()); - - // Check for m or l as first character; l seems to mean this is the last - // chunk - char first_char = *this_string.c_str(); - if (first_char != 'm' && first_char != 'l') { - return PacketResult::ErrorReplyInvalid; - } - // Concatenate the result so far (skipping 'm' or 'l') - response_string.append(this_string, 1, std::string::npos); - if (first_char == 'l') - // We're done - return PacketResult::Success; - } -} - lldb::pid_t GDBRemoteCommunicationClient::GetCurrentProcessID(bool allow_lazy) { if (allow_lazy && m_curr_pid_is_valid == eLazyBoolYes) return m_curr_pid; @@ -3982,8 +3934,7 @@ bool GDBRemoteCommunicationClient::ReadExtFeature( // more chunks case ('m'): - if (str.length() > 1) - output << &str[1]; + output << str.substr(1); offset += str.length() - 1; break; diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h index fd3fe1ce29969..9b8b4cb887056 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h @@ -65,27 +65,6 @@ class GDBRemoteCommunicationClient : public GDBRemoteClientBase { // we are communicating with it. bool HandshakeWithServer(Status *error_ptr); - // For packets which specify a range of output to be returned, - // return all of the output via a series of request packets of the form - // 0, - // , - // *2, - // *3, - // ... - // until a "$l..." packet is received, indicating the end. - // (size is in hex; this format is used by a standard gdbserver to - // return the given portion of the output specified by ; - // for example, "qXfer:libraries-svr4:read::fff,1000" means - // "return a chunk of the xml description file for shared - // library load addresses, where the chunk starts at offset 0xfff - // and continues for 0x1000 bytes"). - // Concatenate the resulting server response packets together and - // return in response_string. If any packet fails, the return value - // indicates that failure and the returned string value is undefined. - PacketResult - SendPacketsAndConcatenateResponses(const char *send_payload_prefix, - std::string &response_string); - bool GetThreadSuffixSupported(); // This packet is usually sent first and the boolean return value diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp index 2b01da289d63e..9f5811baa2699 100644 --- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp @@ -3926,9 +3926,9 @@ DataExtractor ProcessGDBRemote::GetAuxvData() { DataBufferSP buf; if (m_gdb_comm.GetQXferAuxvReadSupported()) { std::string response_string; - if (m_gdb_comm.SendPacketsAndConcatenateResponses("qXfer:auxv:read::", - response_string) == - GDBRemoteCommunication::PacketResult::Success) + Status ST; + if (m_gdb_comm.ReadExtFeature(ConstString("auxv"), ConstString(""), + response_string, ST)) buf = std::make_shared(response_string.c_str(), response_string.length()); }