[Lldb-commits] [lldb] b6c24c1 - [lldb] [gdb-remote] Move ReadPacketWithOutputSupport() to client
Michał Górny via lldb-commits
lldb-commits at lists.llvm.org
Mon Oct 3 09:42:59 PDT 2022
Author: Michał Górny
Date: 2022-10-03T18:42:49+02:00
New Revision: b6c24c161900a035f5ea7193f4816b6d192d6ac8
URL: https://github.com/llvm/llvm-project/commit/b6c24c161900a035f5ea7193f4816b6d192d6ac8
DIFF: https://github.com/llvm/llvm-project/commit/b6c24c161900a035f5ea7193f4816b6d192d6ac8.diff
LOG: [lldb] [gdb-remote] Move ReadPacketWithOutputSupport() to client
Move ReadPacketWithOutputSupport() from GDBRemoteCommunication
to GDBRemoteClientBase. This function is client-specific and moving
it there simplifies followup patches that split communication into
separate thread.
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.llvm.org/D135028
Added:
Modified:
lldb/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.cpp
lldb/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.h
lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h
Removed:
################################################################################
diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.cpp
index ae85dbc68336d..394b62559da76 100644
--- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.cpp
+++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.cpp
@@ -194,6 +194,23 @@ GDBRemoteClientBase::SendPacketAndWaitForResponse(
return SendPacketAndWaitForResponseNoLock(payload, response);
}
+GDBRemoteCommunication::PacketResult
+GDBRemoteClientBase::ReadPacketWithOutputSupport(
+ StringExtractorGDBRemote &response, Timeout<std::micro> timeout,
+ bool sync_on_timeout,
+ llvm::function_ref<void(llvm::StringRef)> output_callback) {
+ auto result = ReadPacket(response, timeout, sync_on_timeout);
+ while (result == PacketResult::Success && response.IsNormalResponse() &&
+ response.PeekChar() == 'O') {
+ response.GetChar();
+ std::string output;
+ if (response.GetHexByteString(output))
+ output_callback(output);
+ result = ReadPacket(response, timeout, sync_on_timeout);
+ }
+ return result;
+}
+
GDBRemoteCommunication::PacketResult
GDBRemoteClientBase::SendPacketAndReceiveResponseWithOutputSupport(
llvm::StringRef payload, StringExtractorGDBRemote &response,
diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.h b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.h
index 4dd67a2b11f7e..b47fee76a2ab5 100644
--- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.h
+++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.h
@@ -58,6 +58,11 @@ class GDBRemoteClientBase : public GDBRemoteCommunication, public Broadcaster {
llvm::StringRef payload, StringExtractorGDBRemote &response,
std::chrono::seconds interrupt_timeout = std::chrono::seconds(0));
+ PacketResult ReadPacketWithOutputSupport(
+ StringExtractorGDBRemote &response, Timeout<std::micro> timeout,
+ bool sync_on_timeout,
+ llvm::function_ref<void(llvm::StringRef)> output_callback);
+
PacketResult SendPacketAndReceiveResponseWithOutputSupport(
llvm::StringRef payload, StringExtractorGDBRemote &response,
std::chrono::seconds interrupt_timeout,
diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
index b67cd7efd8846..7daf003fec7ba 100644
--- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
+++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
@@ -220,23 +220,6 @@ GDBRemoteCommunication::PacketResult GDBRemoteCommunication::GetAck() {
return result;
}
-GDBRemoteCommunication::PacketResult
-GDBRemoteCommunication::ReadPacketWithOutputSupport(
- StringExtractorGDBRemote &response, Timeout<std::micro> timeout,
- bool sync_on_timeout,
- llvm::function_ref<void(llvm::StringRef)> output_callback) {
- auto result = ReadPacket(response, timeout, sync_on_timeout);
- while (result == PacketResult::Success && response.IsNormalResponse() &&
- response.PeekChar() == 'O') {
- response.GetChar();
- std::string output;
- if (response.GetHexByteString(output))
- output_callback(output);
- result = ReadPacket(response, timeout, sync_on_timeout);
- }
- return result;
-}
-
GDBRemoteCommunication::PacketResult
GDBRemoteCommunication::ReadPacket(StringExtractorGDBRemote &response,
Timeout<std::micro> timeout,
diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h
index 9e17d6cc65238..4e59bd5ec8be6 100644
--- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h
+++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h
@@ -190,11 +190,6 @@ class GDBRemoteCommunication : public Communication {
PacketResult ReadPacket(StringExtractorGDBRemote &response,
Timeout<std::micro> timeout, bool sync_on_timeout);
- PacketResult ReadPacketWithOutputSupport(
- StringExtractorGDBRemote &response, Timeout<std::micro> timeout,
- bool sync_on_timeout,
- llvm::function_ref<void(llvm::StringRef)> output_callback);
-
PacketResult WaitForPacketNoLock(StringExtractorGDBRemote &response,
Timeout<std::micro> timeout,
bool sync_on_timeout);
More information about the lldb-commits
mailing list