[Lldb-commits] [lldb] 81a2f39 - [lldb/gdb-remote] Delete SendPacketsAndConcatenateResponses
Pavel Labath via lldb-commits
lldb-commits at lists.llvm.org
Thu Oct 7 04:12:03 PDT 2021
Author: Pavel Labath
Date: 2021-10-07T13:09:27+02:00
New Revision: 81a2f39307a1f2169203abeb66c7bb00b5496edc
URL: https://github.com/llvm/llvm-project/commit/81a2f39307a1f2169203abeb66c7bb00b5496edc
DIFF: https://github.com/llvm/llvm-project/commit/81a2f39307a1f2169203abeb66c7bb00b5496edc.diff
LOG: [lldb/gdb-remote] Delete SendPacketsAndConcatenateResponses
ReadExtFeature provides equivalent functionality. Also fix a but in
ReadExtFeature, which prevented it from being used for auxv data (it
contains nul characters).
Added:
Modified:
lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h
lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
Removed:
################################################################################
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
- // <prefix>0,<size>
- // <prefix><size>,<size>
- // <prefix><size>*2,<size>
- // <prefix><size>*3,<size>
- // ...
- // 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 <prefix>;
- // 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<DataBufferHeap>(response_string.c_str(),
response_string.length());
}
More information about the lldb-commits
mailing list