1 //===-- StringExtractorGDBRemote.h ------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef utility_StringExtractorGDBRemote_h_
11 #define utility_StringExtractorGDBRemote_h_
16 // Other libraries and framework includes
18 #include "Utility/StringExtractor.h"
20 class StringExtractorGDBRemote : public StringExtractor
24 StringExtractorGDBRemote() :
29 StringExtractorGDBRemote(const char *cstr) :
30 StringExtractor (cstr)
33 StringExtractorGDBRemote(const StringExtractorGDBRemote& rhs) :
38 virtual ~StringExtractorGDBRemote()
44 eServerPacketType_nack = 0,
45 eServerPacketType_ack,
46 eServerPacketType_invalid,
47 eServerPacketType_unimplemented,
48 eServerPacketType_interrupt, // CTRL+c packet or "\x03"
49 eServerPacketType_A, // Program arguments packet
50 eServerPacketType_qfProcessInfo,
51 eServerPacketType_qsProcessInfo,
53 eServerPacketType_qGroupName,
54 eServerPacketType_qHostInfo,
55 eServerPacketType_qLaunchGDBServer,
56 eServerPacketType_qKillSpawnedProcess,
57 eServerPacketType_qLaunchSuccess,
58 eServerPacketType_qProcessInfoPID,
59 eServerPacketType_qSpeedTest,
60 eServerPacketType_qUserName,
61 eServerPacketType_qGetWorkingDir,
62 eServerPacketType_QEnvironment,
63 eServerPacketType_QLaunchArch,
64 eServerPacketType_QSetDisableASLR,
65 eServerPacketType_QSetSTDIN,
66 eServerPacketType_QSetSTDOUT,
67 eServerPacketType_QSetSTDERR,
68 eServerPacketType_QSetWorkingDir,
69 eServerPacketType_QStartNoAckMode,
70 eServerPacketType_qPlatform_shell,
71 eServerPacketType_qPlatform_mkdir,
72 eServerPacketType_qPlatform_chmod,
73 eServerPacketType_vFile_open,
74 eServerPacketType_vFile_close,
75 eServerPacketType_vFile_pread,
76 eServerPacketType_vFile_pwrite,
77 eServerPacketType_vFile_size,
78 eServerPacketType_vFile_mode,
79 eServerPacketType_vFile_exists,
80 eServerPacketType_vFile_md5,
81 eServerPacketType_vFile_stat,
82 eServerPacketType_vFile_symlink,
83 eServerPacketType_vFile_unlink,
84 // debug server packages
85 eServerPacketType_QEnvironmentHexEncoded,
86 eServerPacketType_QListThreadsInStopReply,
87 eServerPacketType_QRestoreRegisterState,
88 eServerPacketType_QSaveRegisterState,
89 eServerPacketType_QSetLogging,
90 eServerPacketType_QSetMaxPacketSize,
91 eServerPacketType_QSetMaxPayloadSize,
92 eServerPacketType_QSetEnableAsyncProfiling,
93 eServerPacketType_QSyncThreadState,
94 eServerPacketType_QThreadSuffixSupported,
96 eServerPacketType_qsThreadInfo,
97 eServerPacketType_qfThreadInfo,
98 eServerPacketType_qGetPid,
99 eServerPacketType_qGetProfileData,
100 eServerPacketType_qGDBServerVersion,
101 eServerPacketType_qMemoryRegionInfo,
102 eServerPacketType_qMemoryRegionInfoSupported,
103 eServerPacketType_qProcessInfo,
104 eServerPacketType_qRcmd,
105 eServerPacketType_qRegisterInfo,
106 eServerPacketType_qShlibInfoAddr,
107 eServerPacketType_qStepPacketSupported,
108 eServerPacketType_qSyncThreadStateSupported,
109 eServerPacketType_qThreadExtraInfo,
110 eServerPacketType_qThreadStopInfo,
111 eServerPacketType_qVAttachOrWaitSupported,
112 eServerPacketType_qWatchpointSupportInfo,
113 eServerPacketType_qWatchpointSupportInfoSupported,
115 eServerPacketType_vAttach,
116 eServerPacketType_vAttachWait,
117 eServerPacketType_vAttachOrWait,
118 eServerPacketType_vAttachName,
119 eServerPacketType_vCont,
120 eServerPacketType_vCont_actions, // vCont?
122 eServerPacketType_stop_reason, // '?'
141 eServerPacketType__M,
142 eServerPacketType__m,
146 GetServerPacketType () const;
159 GetResponseType () const;
162 IsOKResponse() const;
165 IsUnsupportedResponse() const;
168 IsNormalResponse () const;
171 IsErrorResponse() const;
173 // Returns zero if the packet isn't a EXX packet where XX are two hex
174 // digits. Otherwise the error encoded in XX is returned.
179 GetEscapedBinaryData (std::string &str);
183 #endif // utility_StringExtractorGDBRemote_h_