annotate lldb/docs/lldb-platform-packets.txt @ 180:680fa57a2f20

fix compile errors.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 30 May 2020 17:44:06 +0900
parents 0572611fdcc8
children 2e18cbf3894f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 Here is a brief overview of the packets that an lldb platform server
anatofuz
parents:
diff changeset
2 needs to implement for the lldb testsuite to be run on a remote
anatofuz
parents:
diff changeset
3 target device/system.
anatofuz
parents:
diff changeset
4
anatofuz
parents:
diff changeset
5 These are almost all lldb extensions to the gdb-remote serial
anatofuz
parents:
diff changeset
6 protocol. Many of the vFile: packets are described to the "Host
anatofuz
parents:
diff changeset
7 I/O Packets" detailed in the gdb-remote protocol documentation,
anatofuz
parents:
diff changeset
8 although the lldb platform extensions include packets that are not
anatofuz
parents:
diff changeset
9 defined there (vFile:size:, vFile:mode:, vFile:symlink, vFile:chmod:).
anatofuz
parents:
diff changeset
10 Most importantly, the flags that lldb passes to vFile:open: are
anatofuz
parents:
diff changeset
11 incompatible with the flags that gdb specifies.
anatofuz
parents:
diff changeset
12
anatofuz
parents:
diff changeset
13
anatofuz
parents:
diff changeset
14 //----------------------------------------------------------------------
anatofuz
parents:
diff changeset
15 // QStartNoAckMode
anatofuz
parents:
diff changeset
16 //
anatofuz
parents:
diff changeset
17 // BRIEF
anatofuz
parents:
diff changeset
18 // A request to stop sending ACK packets for each properly formatted packet.
anatofuz
parents:
diff changeset
19 //
anatofuz
parents:
diff changeset
20 // EXAMPLE
anatofuz
parents:
diff changeset
21 // A platform session will typically start like this:
anatofuz
parents:
diff changeset
22 //
anatofuz
parents:
diff changeset
23 // receive: +$QStartNoAckMode#b0
anatofuz
parents:
diff changeset
24 // send: + <-- ACKing the properly formatted QStartNoAckMode packet
anatofuz
parents:
diff changeset
25 // send: $OK#9a
anatofuz
parents:
diff changeset
26 // receive: + <-- Our OK packet getting ACKed
anatofuz
parents:
diff changeset
27 //
anatofuz
parents:
diff changeset
28 // ACK mode is now disabled.
anatofuz
parents:
diff changeset
29
anatofuz
parents:
diff changeset
30 //----------------------------------------------------------------------
anatofuz
parents:
diff changeset
31 // qHostInfo
anatofuz
parents:
diff changeset
32 //
anatofuz
parents:
diff changeset
33 // BRIEF
anatofuz
parents:
diff changeset
34 // Describe the hardware and OS of the target system
anatofuz
parents:
diff changeset
35 //
anatofuz
parents:
diff changeset
36 // EXAMPLE
anatofuz
parents:
diff changeset
37 //
anatofuz
parents:
diff changeset
38 // receive: qHostInfo
anatofuz
parents:
diff changeset
39 // send: cputype:16777228;cpusubtype:1;ostype:ios;watchpoint_exceptions_received:before;os_version:12.1;vendor:apple;default_packet_timeout:5;
anatofuz
parents:
diff changeset
40 //
anatofuz
parents:
diff changeset
41 // All numbers are base 10, os_version is a string that will be parsed as major.minor.patch.
anatofuz
parents:
diff changeset
42
anatofuz
parents:
diff changeset
43 //----------------------------------------------------------------------
anatofuz
parents:
diff changeset
44 // qModuleInfo
anatofuz
parents:
diff changeset
45 //
anatofuz
parents:
diff changeset
46 // BRIEF
anatofuz
parents:
diff changeset
47 // Report information about a binary on the target system
anatofuz
parents:
diff changeset
48 //
anatofuz
parents:
diff changeset
49 // EXAMPLE
anatofuz
parents:
diff changeset
50 // receive: qModuleInfo:2f62696e2f6c73;
anatofuz
parents:
diff changeset
51 //
anatofuz
parents:
diff changeset
52 // FIXME finish this packet description, v. GDBRemoteCommunicationServerCommon::Handle_qModuleInfo
anatofuz
parents:
diff changeset
53
anatofuz
parents:
diff changeset
54
anatofuz
parents:
diff changeset
55 //----------------------------------------------------------------------
anatofuz
parents:
diff changeset
56 // qGetWorkingDir
anatofuz
parents:
diff changeset
57 //
anatofuz
parents:
diff changeset
58 // BRIEF
anatofuz
parents:
diff changeset
59 // Get the current working directory of the platform stub in
anatofuz
parents:
diff changeset
60 // ASCII hex encoding.
anatofuz
parents:
diff changeset
61 //
anatofuz
parents:
diff changeset
62 // EXAMPLE
anatofuz
parents:
diff changeset
63 //
anatofuz
parents:
diff changeset
64 // receive: qGetWorkingDir
anatofuz
parents:
diff changeset
65 // send: 2f4170706c65496e7465726e616c2f6c6c64622f73657474696e67732f342f5465737453657474696e67732e746573745f646973617373656d626c65725f73657474696e6773
anatofuz
parents:
diff changeset
66
anatofuz
parents:
diff changeset
67
anatofuz
parents:
diff changeset
68
anatofuz
parents:
diff changeset
69 //----------------------------------------------------------------------
anatofuz
parents:
diff changeset
70 // QSetWorkingDir:
anatofuz
parents:
diff changeset
71 //
anatofuz
parents:
diff changeset
72 // BRIEF
anatofuz
parents:
diff changeset
73 // Set the current working directory of the platform stub in
anatofuz
parents:
diff changeset
74 // ASCII hex encoding.
anatofuz
parents:
diff changeset
75 //
anatofuz
parents:
diff changeset
76 // EXAMPLE
anatofuz
parents:
diff changeset
77 //
anatofuz
parents:
diff changeset
78 // receive: QSetWorkingDir:2f4170706c65496e7465726e616c2f6c6c64622f73657474696e67732f342f5465737453657474696e67732e746573745f646973617373656d626c65725f73657474696e6773
anatofuz
parents:
diff changeset
79 // send: OK
anatofuz
parents:
diff changeset
80
anatofuz
parents:
diff changeset
81 //----------------------------------------------------------------------
anatofuz
parents:
diff changeset
82 // qPlatform_mkdir:
anatofuz
parents:
diff changeset
83 //
anatofuz
parents:
diff changeset
84 // BRIEF
anatofuz
parents:
diff changeset
85 // Create a directory on the target system.
anatofuz
parents:
diff changeset
86 //
anatofuz
parents:
diff changeset
87 // EXAMPLE
anatofuz
parents:
diff changeset
88 //
anatofuz
parents:
diff changeset
89 // receive: qPlatform_mkdir:000001fd,2f746d702f6131
anatofuz
parents:
diff changeset
90 // send: F0
anatofuz
parents:
diff changeset
91 //
anatofuz
parents:
diff changeset
92 // request packet has the fields:
anatofuz
parents:
diff changeset
93 // 1. mode bits in base 16
anatofuz
parents:
diff changeset
94 // 2. file path in ascii-hex encoding
anatofuz
parents:
diff changeset
95 //
anatofuz
parents:
diff changeset
96 // response is F followed by the return value of the mkdir() call,
anatofuz
parents:
diff changeset
97 // base 10 encoded.
anatofuz
parents:
diff changeset
98
anatofuz
parents:
diff changeset
99 //----------------------------------------------------------------------
anatofuz
parents:
diff changeset
100 // qPlatform_shell:
anatofuz
parents:
diff changeset
101 //
anatofuz
parents:
diff changeset
102 // BRIEF
anatofuz
parents:
diff changeset
103 // Run a shell command on the target system, return the output.
anatofuz
parents:
diff changeset
104 //
anatofuz
parents:
diff changeset
105 // EXAMPLE
anatofuz
parents:
diff changeset
106 //
anatofuz
parents:
diff changeset
107 // receive: qPlatform_shell:6c73202f746d702f,0000000a
anatofuz
parents:
diff changeset
108 // send: F,0,0,<OUTPUT>
anatofuz
parents:
diff changeset
109 //
anatofuz
parents:
diff changeset
110 // request packet has the fields:
anatofuz
parents:
diff changeset
111 // 1. shell command ascii-hex encoded
anatofuz
parents:
diff changeset
112 // 2. timeout
anatofuz
parents:
diff changeset
113 // 3. {optional} working directory ascii-hex encoded
anatofuz
parents:
diff changeset
114 //
anatofuz
parents:
diff changeset
115 // Response is F followed by the return value of the command (base 16),
anatofuz
parents:
diff changeset
116 // followed by a another number, followed by the output of the command
anatofuz
parents:
diff changeset
117 / in binary-escaped-data encoding.
anatofuz
parents:
diff changeset
118
anatofuz
parents:
diff changeset
119 //----------------------------------------------------------------------
anatofuz
parents:
diff changeset
120 // qLaunchGDBServer
anatofuz
parents:
diff changeset
121 //
anatofuz
parents:
diff changeset
122 // BRIEF
anatofuz
parents:
diff changeset
123 // Start a gdbserver process (gdbserver, debugserver, lldb-server)
anatofuz
parents:
diff changeset
124 // on the target system.
anatofuz
parents:
diff changeset
125 //
anatofuz
parents:
diff changeset
126 // EXAMPLE
anatofuz
parents:
diff changeset
127 //
anatofuz
parents:
diff changeset
128 // receive: qLaunchGDBServer;host:<HOSTNAME_LLDB_IS_ON>;
anatofuz
parents:
diff changeset
129 // send: pid:1337;port:43001;
anatofuz
parents:
diff changeset
130 //
anatofuz
parents:
diff changeset
131 // request packet hostname field is not ascii-hex encoded. Hostnames
anatofuz
parents:
diff changeset
132 // don't have $ or # characters in them.
anatofuz
parents:
diff changeset
133 //
anatofuz
parents:
diff changeset
134 // response to the packet is the pid of the newly launched gdbserver,
anatofuz
parents:
diff changeset
135 // and the port it is listening for a connection on.
anatofuz
parents:
diff changeset
136 //
anatofuz
parents:
diff changeset
137 // When the testsuite is running, lldb may use the pid to kill off a
anatofuz
parents:
diff changeset
138 // debugserver that doesn't seem to be responding, etc.
anatofuz
parents:
diff changeset
139
anatofuz
parents:
diff changeset
140 //----------------------------------------------------------------------
anatofuz
parents:
diff changeset
141 // qKillSpawnedProcess:
anatofuz
parents:
diff changeset
142 //
anatofuz
parents:
diff changeset
143 // BRIEF
anatofuz
parents:
diff changeset
144 // Kill a process running on the target system.
anatofuz
parents:
diff changeset
145 //
anatofuz
parents:
diff changeset
146 // EXAMPLE
anatofuz
parents:
diff changeset
147 //
anatofuz
parents:
diff changeset
148 // receive: qKillSpawnedProcess:1337
anatofuz
parents:
diff changeset
149 // send: OK
anatofuz
parents:
diff changeset
150 //
anatofuz
parents:
diff changeset
151 // The request packet has the process ID in base 10.
anatofuz
parents:
diff changeset
152
anatofuz
parents:
diff changeset
153 //----------------------------------------------------------------------
anatofuz
parents:
diff changeset
154 // qProcessInfoPID:
anatofuz
parents:
diff changeset
155 //
anatofuz
parents:
diff changeset
156 // BRIEF
anatofuz
parents:
diff changeset
157 // Gather information about a process running on the target
anatofuz
parents:
diff changeset
158 //
anatofuz
parents:
diff changeset
159 // EXAMPLE
anatofuz
parents:
diff changeset
160 //
anatofuz
parents:
diff changeset
161 // receive: qProcessInfoPID:71964
anatofuz
parents:
diff changeset
162 // send: pid:71964;name:612e6f7574;
anatofuz
parents:
diff changeset
163 //
anatofuz
parents:
diff changeset
164 // The request packet has the pid encoded in base 10.
anatofuz
parents:
diff changeset
165 //
anatofuz
parents:
diff changeset
166 // The reply has semicolon-separated name:value fields, two are
anatofuz
parents:
diff changeset
167 // shown here. pid is base 10 encoded. name is ascii hex encoded.
anatofuz
parents:
diff changeset
168 // lldb-server can reply with many additional fields, but I think
anatofuz
parents:
diff changeset
169 // this is enough for the testsuite.
anatofuz
parents:
diff changeset
170
anatofuz
parents:
diff changeset
171 //----------------------------------------------------------------------
anatofuz
parents:
diff changeset
172 // qfProcessInfo:
anatofuz
parents:
diff changeset
173 //
anatofuz
parents:
diff changeset
174 // BRIEF
anatofuz
parents:
diff changeset
175 // Search the process table for processes matching criteria,
anatofuz
parents:
diff changeset
176 // respond with them in multiple packets.
anatofuz
parents:
diff changeset
177 //
anatofuz
parents:
diff changeset
178 // EXAMPLE
anatofuz
parents:
diff changeset
179 //
anatofuz
parents:
diff changeset
180 // receive: qfProcessInfo:name_match:equals;name:6e6f70726f6365737365786973747377697468746869736e616d65;
anatofuz
parents:
diff changeset
181 // send: pid:3500;name:612e6f7574;
anatofuz
parents:
diff changeset
182 //
anatofuz
parents:
diff changeset
183 // The request packet has a criteria to search for, followed by
anatofuz
parents:
diff changeset
184 // a specific name.
anatofuz
parents:
diff changeset
185 //
anatofuz
parents:
diff changeset
186 // KEY VALUE DESCRIPTION
anatofuz
parents:
diff changeset
187 // =========== ======== ================================================
anatofuz
parents:
diff changeset
188 // "name" ascii-hex An ASCII hex string that contains the name of
anatofuz
parents:
diff changeset
189 // the process that will be matched.
anatofuz
parents:
diff changeset
190 // "name_match" enum One of: "equals", "starts_with", "ends_with",
anatofuz
parents:
diff changeset
191 // "contains" or "regex"
anatofuz
parents:
diff changeset
192 // "pid" integer A string value containing the decimal process ID
anatofuz
parents:
diff changeset
193 // "parent_pid" integer A string value containing the decimal parent
anatofuz
parents:
diff changeset
194 // process ID
anatofuz
parents:
diff changeset
195 // "uid" integer A string value containing the decimal user ID
anatofuz
parents:
diff changeset
196 // "gid" integer A string value containing the decimal group ID
anatofuz
parents:
diff changeset
197 // "euid" integer A string value containing the decimal effective user ID
anatofuz
parents:
diff changeset
198 // "egid" integer A string value containing the decimal effective group ID
anatofuz
parents:
diff changeset
199 // "all_users" bool A boolean value that specifies if processes should
anatofuz
parents:
diff changeset
200 // be listed for all users, not just the user that the
anatofuz
parents:
diff changeset
201 // platform is running as
anatofuz
parents:
diff changeset
202 // "triple" ascii-hex An ASCII hex target triple string ("x86_64",
anatofuz
parents:
diff changeset
203 // "x86_64-apple-macosx", "armv7-apple-ios")
anatofuz
parents:
diff changeset
204 //
anatofuz
parents:
diff changeset
205 // If no criteria is given, qfProcessInfo will request a list of every process.
anatofuz
parents:
diff changeset
206 //
anatofuz
parents:
diff changeset
207 // The lldb testsuite currently only uses name_match:equals and the
anatofuz
parents:
diff changeset
208 // no-criteria mode to list every process.
anatofuz
parents:
diff changeset
209 //
anatofuz
parents:
diff changeset
210 // The response should include any information about the process that
anatofuz
parents:
diff changeset
211 // can be retrieved in semicolon-separated name:value fields.
anatofuz
parents:
diff changeset
212 // In this example, pid is base 10, name is ascii-hex encoded.
anatofuz
parents:
diff changeset
213 // The testsuite seems to only require these two.
anatofuz
parents:
diff changeset
214 //
anatofuz
parents:
diff changeset
215 // This packet only responds with one process. To get further matches to
anatofuz
parents:
diff changeset
216 // the search, qsProcessInfo should be sent.
anatofuz
parents:
diff changeset
217 //
anatofuz
parents:
diff changeset
218 // If no process match is found, Exx should be returned.
anatofuz
parents:
diff changeset
219 //
anatofuz
parents:
diff changeset
220 // Sample packet/response:
anatofuz
parents:
diff changeset
221 // send packet: $qfProcessInfo#00
anatofuz
parents:
diff changeset
222 // read packet: $pid:60001;ppid:59948;uid:7746;gid:11;euid:7746;egid:11;name:6c6c6462;triple:7838365f36342d6170706c652d6d61636f7378;#00
anatofuz
parents:
diff changeset
223 // send packet: $qsProcessInfo#00
anatofuz
parents:
diff changeset
224 // read packet: $pid:59992;ppid:192;uid:7746;gid:11;euid:7746;egid:11;name:6d64776f726b6572;triple:7838365f36342d6170706c652d6d61636f7378;#00
anatofuz
parents:
diff changeset
225 // send packet: $qsProcessInfo#00
anatofuz
parents:
diff changeset
226 // read packet: $E04#00
anatofuz
parents:
diff changeset
227
anatofuz
parents:
diff changeset
228 //----------------------------------------------------------------------
anatofuz
parents:
diff changeset
229 // qsProcessInfo
anatofuz
parents:
diff changeset
230 //
anatofuz
parents:
diff changeset
231 // BRIEF
anatofuz
parents:
diff changeset
232 // Return the next process info found by the most recent qfProcessInfo:
anatofuz
parents:
diff changeset
233 // packet.
anatofuz
parents:
diff changeset
234 //
anatofuz
parents:
diff changeset
235 // EXAMPLE
anatofuz
parents:
diff changeset
236 //
anatofuz
parents:
diff changeset
237 // Continues to return the results of the qfProcessInfo. Once all matches
anatofuz
parents:
diff changeset
238 // have been sent, Exx is returned to indicate end of matches.
anatofuz
parents:
diff changeset
239
anatofuz
parents:
diff changeset
240 //----------------------------------------------------------------------
anatofuz
parents:
diff changeset
241 // vFile:size:
anatofuz
parents:
diff changeset
242 //
anatofuz
parents:
diff changeset
243 // BRIEF
anatofuz
parents:
diff changeset
244 // Get the size of a file on the target system, filename in ASCII hex.
anatofuz
parents:
diff changeset
245 //
anatofuz
parents:
diff changeset
246 // EXAMPLE
anatofuz
parents:
diff changeset
247 //
anatofuz
parents:
diff changeset
248 // receive: vFile:size:2f746d702f61
anatofuz
parents:
diff changeset
249 // send: Fc008
anatofuz
parents:
diff changeset
250 //
anatofuz
parents:
diff changeset
251 // response is "F" followed by the file size in base 16.
anatofuz
parents:
diff changeset
252 // "F-1,errno" with the errno if an error occurs.
anatofuz
parents:
diff changeset
253
anatofuz
parents:
diff changeset
254
anatofuz
parents:
diff changeset
255 //----------------------------------------------------------------------
anatofuz
parents:
diff changeset
256 // vFile:mode:
anatofuz
parents:
diff changeset
257 //
anatofuz
parents:
diff changeset
258 // BRIEF
anatofuz
parents:
diff changeset
259 // Get the mode bits of a file on the target system, filename in ASCII hex.
anatofuz
parents:
diff changeset
260 //
anatofuz
parents:
diff changeset
261 // EXAMPLE
anatofuz
parents:
diff changeset
262 //
anatofuz
parents:
diff changeset
263 // receive: vFile:mode:2f746d702f61
anatofuz
parents:
diff changeset
264 // send: F1ed
anatofuz
parents:
diff changeset
265 //
anatofuz
parents:
diff changeset
266 // response is "F" followed by the mode bits in base 16, this 0x1ed would
anatofuz
parents:
diff changeset
267 // correspond to 0755 in octal.
anatofuz
parents:
diff changeset
268 // "F-1,errno" with the errno if an error occurs.
anatofuz
parents:
diff changeset
269
anatofuz
parents:
diff changeset
270 //----------------------------------------------------------------------
anatofuz
parents:
diff changeset
271 // vFile:unlink:
anatofuz
parents:
diff changeset
272 //
anatofuz
parents:
diff changeset
273 // BRIEF
anatofuz
parents:
diff changeset
274 // Remove a file on the target system.
anatofuz
parents:
diff changeset
275 //
anatofuz
parents:
diff changeset
276 // EXAMPLE
anatofuz
parents:
diff changeset
277 //
anatofuz
parents:
diff changeset
278 // receive: vFile:unlink:2f746d702f61
anatofuz
parents:
diff changeset
279 // send: F0
anatofuz
parents:
diff changeset
280 //
anatofuz
parents:
diff changeset
281 // Argument is a file path in ascii-hex encoding.
anatofuz
parents:
diff changeset
282 // Response is "F" plus the return value of unlink(), base 10 encoding.
anatofuz
parents:
diff changeset
283
anatofuz
parents:
diff changeset
284 //----------------------------------------------------------------------
anatofuz
parents:
diff changeset
285 // vFile:symlink:
anatofuz
parents:
diff changeset
286 //
anatofuz
parents:
diff changeset
287 // BRIEF
anatofuz
parents:
diff changeset
288 // Create a symbolic link (symlink, soft-link) on the target system.
anatofuz
parents:
diff changeset
289 //
anatofuz
parents:
diff changeset
290 // EXAMPLE
anatofuz
parents:
diff changeset
291 //
anatofuz
parents:
diff changeset
292 // receive: vFile:symlink:<SRC-FILE>,<DST-NAME>
anatofuz
parents:
diff changeset
293 // send: F0,0
anatofuz
parents:
diff changeset
294 //
anatofuz
parents:
diff changeset
295 // Argument file paths are in ascii-hex encoding.
anatofuz
parents:
diff changeset
296 // Response is "F" plus the return value of symlink(), base 10 encoding, twice.
anatofuz
parents:
diff changeset
297
anatofuz
parents:
diff changeset
298 //----------------------------------------------------------------------
anatofuz
parents:
diff changeset
299 // vFile:chmod:
anatofuz
parents:
diff changeset
300 // qPlatform_chmod:
anatofuz
parents:
diff changeset
301 //
anatofuz
parents:
diff changeset
302 // BRIEF
anatofuz
parents:
diff changeset
303 // Change the permission mode bits on a file on the target
anatofuz
parents:
diff changeset
304 //
anatofuz
parents:
diff changeset
305 // EXAMPLE
anatofuz
parents:
diff changeset
306 //
anatofuz
parents:
diff changeset
307 // receive: vFile:chmod:180,2f746d702f61
anatofuz
parents:
diff changeset
308 // send: F0
anatofuz
parents:
diff changeset
309 //
anatofuz
parents:
diff changeset
310 // Arguments are the mode bits to set, base 16, and a file path in
anatofuz
parents:
diff changeset
311 // ascii-hex encoding.
anatofuz
parents:
diff changeset
312 // Response is "F" plus the return value of chmod(), base 10 encoding.
anatofuz
parents:
diff changeset
313 //
anatofuz
parents:
diff changeset
314 // I don't know why there are two packets for the same thing, v.
anatofuz
parents:
diff changeset
315 // vFile:chmod:.
anatofuz
parents:
diff changeset
316
anatofuz
parents:
diff changeset
317 //----------------------------------------------------------------------
anatofuz
parents:
diff changeset
318 // vFile:chmod:
anatofuz
parents:
diff changeset
319 //
anatofuz
parents:
diff changeset
320 // BRIEF
anatofuz
parents:
diff changeset
321 // Change the permission mode bits on a file on the target
anatofuz
parents:
diff changeset
322 //
anatofuz
parents:
diff changeset
323 // EXAMPLE
anatofuz
parents:
diff changeset
324 //
anatofuz
parents:
diff changeset
325 // receive: vFile:chmod:180,2f746d702f61
anatofuz
parents:
diff changeset
326 // send: F0
anatofuz
parents:
diff changeset
327 //
anatofuz
parents:
diff changeset
328 // Arguments are the mode bits to set, base 16, and a file path in
anatofuz
parents:
diff changeset
329 // ascii-hex encoding.
anatofuz
parents:
diff changeset
330 // Response is "F" plus the return value of chmod(), base 10 encoding.
anatofuz
parents:
diff changeset
331
anatofuz
parents:
diff changeset
332
anatofuz
parents:
diff changeset
333 //----------------------------------------------------------------------
anatofuz
parents:
diff changeset
334 // vFile:open:
anatofuz
parents:
diff changeset
335 //
anatofuz
parents:
diff changeset
336 // BRIEF
anatofuz
parents:
diff changeset
337 // Open a file on the remote system and return the file descriptor of it.
anatofuz
parents:
diff changeset
338 //
anatofuz
parents:
diff changeset
339 // EXAMPLE
anatofuz
parents:
diff changeset
340 //
anatofuz
parents:
diff changeset
341 // receive: vFile:open:2f746d702f61,00000001,00000180
anatofuz
parents:
diff changeset
342 // send: F8
anatofuz
parents:
diff changeset
343 //
anatofuz
parents:
diff changeset
344 // request packet has the fields:
anatofuz
parents:
diff changeset
345 // 1. ASCII hex encoded filename
anatofuz
parents:
diff changeset
346 // 2. flags passed to the open call, base 16.
anatofuz
parents:
diff changeset
347 // Note that these are not the oflags that open(2) takes, but
anatofuz
parents:
diff changeset
348 // are the constant values in enum OpenOptions from lldb's File.h
anatofuz
parents:
diff changeset
349 // 3. mode bits, base 16
anatofuz
parents:
diff changeset
350 //
anatofuz
parents:
diff changeset
351 // response is F followed by the opened file descriptor in base 10.
anatofuz
parents:
diff changeset
352 // "F-1,errno" with the errno if an error occurs.
anatofuz
parents:
diff changeset
353 //
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
354 // COMPATIBILITY
150
anatofuz
parents:
diff changeset
355 // The gdb-remote serial protocol documentatio defines a vFile:open:
anatofuz
parents:
diff changeset
356 // packet which uses incompatible flag values, e.g. 1 means O_WRONLY
anatofuz
parents:
diff changeset
357 // in gdb's vFile:open:, but it means eOpenOptionRead to lldb's
anatofuz
parents:
diff changeset
358 // implementation.
anatofuz
parents:
diff changeset
359
anatofuz
parents:
diff changeset
360 //----------------------------------------------------------------------
anatofuz
parents:
diff changeset
361 // vFile:close:
anatofuz
parents:
diff changeset
362 //
anatofuz
parents:
diff changeset
363 // BRIEF
anatofuz
parents:
diff changeset
364 // Close a previously opened file descriptor.
anatofuz
parents:
diff changeset
365 //
anatofuz
parents:
diff changeset
366 // EXAMPLE
anatofuz
parents:
diff changeset
367 //
anatofuz
parents:
diff changeset
368 // receive: vFile:close:7
anatofuz
parents:
diff changeset
369 // send: F0
anatofuz
parents:
diff changeset
370 //
anatofuz
parents:
diff changeset
371 // File descriptor is in base 10.
anatofuz
parents:
diff changeset
372 // "F-1,errno" with the errno if an error occurs.
anatofuz
parents:
diff changeset
373
anatofuz
parents:
diff changeset
374
anatofuz
parents:
diff changeset
375 //----------------------------------------------------------------------
anatofuz
parents:
diff changeset
376 // vFile:pread:
anatofuz
parents:
diff changeset
377 //
anatofuz
parents:
diff changeset
378 // BRIEF
anatofuz
parents:
diff changeset
379 // Read data from an opened file descriptor.
anatofuz
parents:
diff changeset
380 //
anatofuz
parents:
diff changeset
381 // EXAMPLE
anatofuz
parents:
diff changeset
382 //
anatofuz
parents:
diff changeset
383 // receive: vFile:pread:7,1024,0
anatofuz
parents:
diff changeset
384 // send: F4;a'b\00
anatofuz
parents:
diff changeset
385 //
anatofuz
parents:
diff changeset
386 // request packet has the fields:
anatofuz
parents:
diff changeset
387 // 1. file descriptor, base 10
anatofuz
parents:
diff changeset
388 // 2. number of bytes to be read, base 10
anatofuz
parents:
diff changeset
389 // 3. offset into file to start from, base 10
anatofuz
parents:
diff changeset
390 //
anatofuz
parents:
diff changeset
391 // Response is F, followed by the number of bytes read (base 10), a
anatofuz
parents:
diff changeset
392 // semicolon, followed by the data in the binary-escaped-data encoding.
anatofuz
parents:
diff changeset
393
anatofuz
parents:
diff changeset
394
anatofuz
parents:
diff changeset
395 //----------------------------------------------------------------------
anatofuz
parents:
diff changeset
396 // vFile:pwrite:
anatofuz
parents:
diff changeset
397 //
anatofuz
parents:
diff changeset
398 // BRIEF
anatofuz
parents:
diff changeset
399 // Write data to a previously opened file descriptor.
anatofuz
parents:
diff changeset
400 //
anatofuz
parents:
diff changeset
401 // EXAMPLE
anatofuz
parents:
diff changeset
402 //
anatofuz
parents:
diff changeset
403 // receive: vFile:pwrite:8,0,\cf\fa\ed\fe\0c\00\00
anatofuz
parents:
diff changeset
404 // send: F1024
anatofuz
parents:
diff changeset
405 //
anatofuz
parents:
diff changeset
406 // request packet has the fields:
anatofuz
parents:
diff changeset
407 // 1. file descriptor, base 10
anatofuz
parents:
diff changeset
408 // 2. offset into file to start from, base 10
anatofuz
parents:
diff changeset
409 // 3. binary-escaped-data to be written
anatofuz
parents:
diff changeset
410 //
anatofuz
parents:
diff changeset
411 // Response is F, followed by the number of bytes written (base 10)
anatofuz
parents:
diff changeset
412
anatofuz
parents:
diff changeset
413
anatofuz
parents:
diff changeset
414
anatofuz
parents:
diff changeset
415
anatofuz
parents:
diff changeset
416
anatofuz
parents:
diff changeset
417
anatofuz
parents:
diff changeset
418 Finally, the platform must be able to launch processes so that debugserver
anatofuz
parents:
diff changeset
419 can attach to them. To do this, the following packets should be handled:
anatofuz
parents:
diff changeset
420
anatofuz
parents:
diff changeset
421 QSetDisableASLR
anatofuz
parents:
diff changeset
422 QSetDetachOnError
anatofuz
parents:
diff changeset
423 QSetSTDOUT
anatofuz
parents:
diff changeset
424 QSetSTDERR
anatofuz
parents:
diff changeset
425 QSetSTDIN
anatofuz
parents:
diff changeset
426 QEnvironment
anatofuz
parents:
diff changeset
427 QEnvironmentHexEncoded
anatofuz
parents:
diff changeset
428 A
anatofuz
parents:
diff changeset
429 qLaunchSuccess
anatofuz
parents:
diff changeset
430 qProcessInfo
anatofuz
parents:
diff changeset
431
anatofuz
parents:
diff changeset
432 Most of these are documented in the standard gdb-remote protocol
anatofuz
parents:
diff changeset
433 and/or the lldb-gdb-remote.txt documentation.