From 7da84753a347bb9b335b0a7106b1930c68953726 Mon Sep 17 00:00:00 2001 From: Pavel Labath Date: Wed, 10 Jan 2018 14:39:08 +0000 Subject: 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-svn: 322190 --- lldb/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'lldb/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.h') diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.h b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.h index 2646405c9b9..3d84ce0ebe1 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 output_callback); + bool SendvContPacket(llvm::StringRef payload, StringExtractorGDBRemote &response); -- cgit v1.2.3