From 420562aa82f8a81675772f795ca22c74ae817128 Mon Sep 17 00:00:00 2001 From: Greg Clayton Date: Fri, 29 May 2015 00:15:15 +0000 Subject: [PATCH] Add support for the qEcho command to lldb-server in the common packets. llvm-svn: 238533 --- .../Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp | 10 ++++++++++ .../Process/gdb-remote/GDBRemoteCommunicationServerCommon.h | 3 +++ lldb/source/Utility/StringExtractorGDBRemote.cpp | 4 ++++ lldb/source/Utility/StringExtractorGDBRemote.h | 1 + 4 files changed, 18 insertions(+) diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp index 0cc528f..37aed54 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp @@ -87,6 +87,8 @@ GDBRemoteCommunicationServerCommon::GDBRemoteCommunicationServerCommon(const cha &GDBRemoteCommunicationServerCommon::Handle_qLaunchSuccess); RegisterMemberFunctionHandler(StringExtractorGDBRemote::eServerPacketType_QListThreadsInStopReply, &GDBRemoteCommunicationServerCommon::Handle_QListThreadsInStopReply); + RegisterMemberFunctionHandler(StringExtractorGDBRemote::eServerPacketType_qEcho, + &GDBRemoteCommunicationServerCommon::Handle_qEcho); RegisterMemberFunctionHandler(StringExtractorGDBRemote::eServerPacketType_qModuleInfo, &GDBRemoteCommunicationServerCommon::Handle_qModuleInfo); RegisterMemberFunctionHandler(StringExtractorGDBRemote::eServerPacketType_qPlatform_chmod, @@ -915,6 +917,7 @@ GDBRemoteCommunicationServerCommon::Handle_qSupported (StringExtractorGDBRemote response.PutCString (";QStartNoAckMode+"); response.PutCString (";QThreadSuffixSupported+"); response.PutCString (";QListThreadsInStopReply+"); + response.PutCString (";qEcho"); #if defined(__linux__) response.PutCString (";qXfer:auxv:read+"); #endif @@ -1153,6 +1156,13 @@ GDBRemoteCommunicationServerCommon::Handle_A (StringExtractorGDBRemote &packet) } GDBRemoteCommunication::PacketResult +GDBRemoteCommunicationServerCommon::Handle_qEcho (StringExtractorGDBRemote &packet) +{ + // Just echo back the exact same packet for qEcho... + return SendPacketNoLock(packet.GetStringRef().c_str(), packet.GetStringRef().size()); +} + +GDBRemoteCommunication::PacketResult GDBRemoteCommunicationServerCommon::Handle_qModuleInfo (StringExtractorGDBRemote &packet) { packet.SetFilePos(::strlen ("qModuleInfo:")); diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.h b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.h index cb79d10..62b129b 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.h +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.h @@ -110,6 +110,9 @@ protected: Handle_vFile_MD5 (StringExtractorGDBRemote &packet); PacketResult + Handle_qEcho (StringExtractorGDBRemote &packet); + + PacketResult Handle_qModuleInfo (StringExtractorGDBRemote &packet); PacketResult diff --git a/lldb/source/Utility/StringExtractorGDBRemote.cpp b/lldb/source/Utility/StringExtractorGDBRemote.cpp index 7497992..718c8f6 100644 --- a/lldb/source/Utility/StringExtractorGDBRemote.cpp +++ b/lldb/source/Utility/StringExtractorGDBRemote.cpp @@ -140,6 +140,10 @@ StringExtractorGDBRemote::GetServerPacketType () const if (packet_size == 2) return eServerPacketType_qC; break; + case 'E': + if (PACKET_STARTS_WITH ("qEcho:")) return eServerPacketType_qEcho; + break; + case 'G': if (PACKET_STARTS_WITH ("qGroupName:")) return eServerPacketType_qGroupName; if (PACKET_MATCHES ("qGetWorkingDir")) return eServerPacketType_qGetWorkingDir; diff --git a/lldb/source/Utility/StringExtractorGDBRemote.h b/lldb/source/Utility/StringExtractorGDBRemote.h index cb53758..78f6021 100644 --- a/lldb/source/Utility/StringExtractorGDBRemote.h +++ b/lldb/source/Utility/StringExtractorGDBRemote.h @@ -50,6 +50,7 @@ public: eServerPacketType_qfProcessInfo, eServerPacketType_qsProcessInfo, eServerPacketType_qC, + eServerPacketType_qEcho, eServerPacketType_qGroupName, eServerPacketType_qHostInfo, eServerPacketType_qLaunchGDBServer, -- 2.7.4