summaryrefslogtreecommitdiffstats
path: root/lldb/source/Utility/StringExtractorGDBRemote.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Utility/StringExtractorGDBRemote.cpp')
-rw-r--r--lldb/source/Utility/StringExtractorGDBRemote.cpp45
1 files changed, 43 insertions, 2 deletions
diff --git a/lldb/source/Utility/StringExtractorGDBRemote.cpp b/lldb/source/Utility/StringExtractorGDBRemote.cpp
index 7e06a0f59bc..6e32481ccc5 100644
--- a/lldb/source/Utility/StringExtractorGDBRemote.cpp
+++ b/lldb/source/Utility/StringExtractorGDBRemote.cpp
@@ -94,6 +94,9 @@ StringExtractorGDBRemote::GetServerPacketType () const
else if (PACKET_STARTS_WITH ("QSetSTDERR:")) return eServerPacketType_QSetSTDERR;
else if (PACKET_STARTS_WITH ("QSetWorkingDir:")) return eServerPacketType_QSetWorkingDir;
break;
+ case 'L':
+ if (PACKET_STARTS_WITH ("QLaunchArch:")) return eServerPacketType_QLaunchArch;
+ break;
}
break;
@@ -120,14 +123,21 @@ StringExtractorGDBRemote::GetServerPacketType () const
if (PACKET_MATCHES ("qHostInfo")) return eServerPacketType_qHostInfo;
break;
+ case 'K':
+ if (PACKET_STARTS_WITH ("qKillSpawnedProcess")) return eServerPacketType_qKillSpawnedProcess;
+ break;
+
case 'L':
- if (PACKET_MATCHES ("qLaunchGDBServer")) return eServerPacketType_qLaunchGDBServer;
+ if (PACKET_STARTS_WITH ("qLaunchGDBServer")) return eServerPacketType_qLaunchGDBServer;
if (PACKET_MATCHES ("qLaunchSuccess")) return eServerPacketType_qLaunchSuccess;
break;
case 'P':
- if (PACKET_STARTS_WITH ("qProcessInfoPID:")) return eServerPacketType_qProcessInfoPID;
+ if (PACKET_STARTS_WITH ("qProcessInfoPID:")) return eServerPacketType_qProcessInfoPID;
+ if (PACKET_STARTS_WITH ("qPlatform_RunCommand:")) return eServerPacketType_qPlatform_RunCommand;
+ if (PACKET_STARTS_WITH ("qPlatform_IO_MkDir:")) return eServerPacketType_qPlatform_IO_MkDir;
break;
+
case 'S':
if (PACKET_STARTS_WITH ("qSpeedTest:")) return eServerPacketType_qSpeedTest;
@@ -138,6 +148,21 @@ StringExtractorGDBRemote::GetServerPacketType () const
break;
}
break;
+ case 'v':
+ if (PACKET_STARTS_WITH("vFile:"))
+ {
+ if (PACKET_STARTS_WITH("vFile:open:")) return eServerPacketType_vFile_Open;
+ else if (PACKET_STARTS_WITH("vFile:close:")) return eServerPacketType_vFile_Close;
+ else if (PACKET_STARTS_WITH("vFile:pread")) return eServerPacketType_vFile_pRead;
+ else if (PACKET_STARTS_WITH("vFile:pwrite")) return eServerPacketType_vFile_pWrite;
+ else if (PACKET_STARTS_WITH("vFile:size")) return eServerPacketType_vFile_Size;
+ else if (PACKET_STARTS_WITH("vFile:exists")) return eServerPacketType_vFile_Exists;
+ else if (PACKET_STARTS_WITH("vFile:stat")) return eServerPacketType_vFile_Stat;
+ else if (PACKET_STARTS_WITH("vFile:mode")) return eServerPacketType_vFile_Mode;
+ else if (PACKET_STARTS_WITH("vFile:MD5")) return eServerPacketType_vFile_MD5;
+
+ }
+ break;
}
return eServerPacketType_unimplemented;
}
@@ -180,3 +205,19 @@ StringExtractorGDBRemote::GetError ()
}
return 0;
}
+
+size_t
+StringExtractorGDBRemote::GetEscapedBinaryData (std::string &str)
+{
+ str.clear();
+ char ch;
+ while (GetBytesLeft())
+ {
+ ch = GetChar();
+ if (ch == 0x7d)
+ ch = (GetChar() ^ 0x20);
+ str.append(1,ch);
+ }
+ return str.size();
+}
+
OpenPOWER on IntegriCloud