aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.h
diff options
context:
space:
mode:
authorPavel Labath <labath@google.com>2018-01-10 14:39:08 +0000
committerPavel Labath <labath@google.com>2018-01-10 14:39:08 +0000
commit7da84753a347bb9b335b0a7106b1930c68953726 (patch)
tree4764d4c28aa7e35146bc53a1318ec2d3d9154ae4 /lldb/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.h
parent3afbd825a394dab05b2376fbc33e535f3a1b444a (diff)
downloadllvm-7da84753a347bb9b335b0a7106b1930c68953726.zip
llvm-7da84753a347bb9b335b0a7106b1930c68953726.tar.gz
llvm-7da84753a347bb9b335b0a7106b1930c68953726.tar.bz2
Handle O reply packets during qRcmd
Summary: Gdb servers like openocd may send many $O reply packets for the client to output during a qRcmd command sequence. Currently, lldb interprets the first O packet as an unexpected response. Besides generating no output, this causes lldb to get out of sync with future commands because it continues reading O packets from the first command as response to subsequent commands. This patch handles any O packets during an qRcmd, treating the first non-O packet as the true response. Preliminary discussion at http://lists.llvm.org/pipermail/lldb-dev/2018-January/013078.html Reviewers: clayborg Reviewed By: clayborg Subscribers: labath, lldb-commits Differential Revision: https://reviews.llvm.org/D41745 Patch by Owen Shaw <llvm@owenpshaw.net> llvm-svn: 322190
Diffstat (limited to 'lldb/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.h')
-rw-r--r--lldb/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.h b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.h
index 2646405..3d84ce0 100644
--- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.h
+++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.h
@@ -48,6 +48,11 @@ public:
StringExtractorGDBRemote &response,
bool send_async);
+ PacketResult SendPacketAndReceiveResponseWithOutputSupport(
+ llvm::StringRef payload, StringExtractorGDBRemote &response,
+ bool send_async,
+ llvm::function_ref<void(llvm::StringRef)> output_callback);
+
bool SendvContPacket(llvm::StringRef payload,
StringExtractorGDBRemote &response);