]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/llvm/tools/lldb/source/Utility/StringExtractorGDBRemote.h
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / llvm / tools / lldb / source / Utility / StringExtractorGDBRemote.h
1 //===-- StringExtractorGDBRemote.h ------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 #ifndef utility_StringExtractorGDBRemote_h_
11 #define utility_StringExtractorGDBRemote_h_
12
13 // C Includes
14 // C++ Includes
15 #include <string>
16 // Other libraries and framework includes
17 // Project includes
18 #include "Utility/StringExtractor.h"
19
20 class StringExtractorGDBRemote : public StringExtractor
21 {
22 public:
23
24     StringExtractorGDBRemote() :
25         StringExtractor ()
26     {
27     }
28
29     StringExtractorGDBRemote(const char *cstr) :
30         StringExtractor (cstr)
31     {
32     }
33     StringExtractorGDBRemote(const StringExtractorGDBRemote& rhs) :
34         StringExtractor (rhs)
35     {
36     }
37
38     virtual ~StringExtractorGDBRemote()
39     {
40     }
41
42     enum ServerPacketType
43     {
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,
52         eServerPacketType_qC,
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,
95
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,
114
115         eServerPacketType_vAttach,
116         eServerPacketType_vAttachWait,
117         eServerPacketType_vAttachOrWait,
118         eServerPacketType_vAttachName,
119         eServerPacketType_vCont,
120         eServerPacketType_vCont_actions, // vCont?
121
122         eServerPacketType_stop_reason, // '?'
123
124         eServerPacketType_c,
125         eServerPacketType_C,
126         eServerPacketType_D,
127         eServerPacketType_g,
128         eServerPacketType_G,
129         eServerPacketType_H,
130         eServerPacketType_k,
131         eServerPacketType_m,
132         eServerPacketType_M,
133         eServerPacketType_p,
134         eServerPacketType_P,
135         eServerPacketType_s,
136         eServerPacketType_S,
137         eServerPacketType_T,
138         eServerPacketType_Z,
139         eServerPacketType_z,
140
141         eServerPacketType__M,
142         eServerPacketType__m,
143     };
144     
145     ServerPacketType
146     GetServerPacketType () const;
147
148     enum ResponseType
149     {
150         eUnsupported = 0,
151         eAck,
152         eNack,
153         eError,
154         eOK,
155         eResponse
156     };
157
158     ResponseType
159     GetResponseType () const;
160
161     bool
162     IsOKResponse() const;
163
164     bool
165     IsUnsupportedResponse() const;
166
167     bool
168     IsNormalResponse () const;
169
170     bool
171     IsErrorResponse() const;
172
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.
175     uint8_t
176     GetError();
177     
178     size_t
179     GetEscapedBinaryData (std::string &str);
180
181 };
182
183 #endif  // utility_StringExtractorGDBRemote_h_