File: lldbplatformpackets.md

package info (click to toggle)
llvm-toolchain-19 1%3A19.1.7-3
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 1,998,520 kB
  • sloc: cpp: 6,951,680; ansic: 1,486,157; asm: 913,598; python: 232,024; f90: 80,126; objc: 75,281; lisp: 37,276; pascal: 16,990; sh: 10,009; ml: 5,058; perl: 4,724; awk: 3,523; makefile: 3,167; javascript: 2,504; xml: 892; fortran: 664; cs: 573
file content (49 lines) | stat: -rw-r--r-- 2,722 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# LLDB Platform Packets

This is a list of the packets that an lldb platform server
needs to implement for the lldb testsuite to be run on a remote
target device/system.

These are almost all lldb extensions to the gdb-remote serial
protocol. Many of the `vFile:` packets are also described in the "Host
I/O Packets" detailed in the gdb-remote protocol documentation,
although the lldb platform extensions include packets that are not
defined there (`vFile:size:`, `vFile:mode:`, `vFile:symlink`, `vFile:chmod:`).

Most importantly, the flags that LLDB passes to `vFile:open:` are
incompatible with the flags that GDB specifies.

* [QSetWorkingDir](./lldbgdbremote.md#qsetworkingdir-ascii-hex-path)
* [QStartNoAckMode](./lldbgdbremote.md#qstartnoackmode)
* [qGetWorkingDir](./lldbgdbremote.md#qgetworkingdir)
* [qHostInfo](./lldbgdbremote.md#qhostinfo)
* [qKillSpawnedProcess](./lldbgdbremote.md#qkillspawnedprocess-platform-extension)
* [qLaunchGDBServer](./lldbgdbremote.md#qlaunchgdbserver-platform-extension)
* [qModuleInfo](./lldbgdbremote.md#qmoduleinfo-module-path-arch-triple)
* [qPathComplete](./lldbgdbremote.md#qpathcomplete-platform-extension)
* [qPlatform_mkdir](./lldbgdbremote.md#qplatform-mkdir)
* [qPlatform_shell](./lldbgdbremote.md#qplatform-shell)
* [qProcessInfo](./lldbgdbremote.md#qprocessinfo)
  * The lldb test suite currently only uses `name_match:equals` and the no-criteria mode to list every process.
* [qProcessInfoPID](./lldbgdbremote.md#qprocessinfopid-pid-platform-extension)
  * It is likely that you only need to support the `pid` and `name` fields.
* [vFile:chmod](./lldbgdbremote.md#vfile-chmod-qplatform-chmod)
* [vFile:close](./lldbgdbremote.md#vfile-close)
* [vFile:mode](./lldbgdbremote.md#vfile-mode)
* [vFile:open](./lldbgdbremote.md#vfile-open)
* [vFile:pread](./lldbgdbremote.md#vfile-pread)
* [vFile:pwrite](./lldbgdbremote.md#vfile-pwrite)
* [vFile:size](./lldbgdbremote.md#vfile-size)
* [vFile:symlink](./lldbgdbremote.md#vfile-symlink)
* [vFile:unlink](./lldbgdbremote.md#vfile-unlink)

The remote platform must be able to launch processes so that debugserver
can attach to them. This requires the following packets in addition to the
previous list:
* [A](./lldbgdbremote.md#a-launch-args-packet)
* [QEnvironment](./lldbgdbremote.md#qenvironment-name-value)
* [QEnvironmentHexEncoded](./lldbgdbremote.md#qenvironmenthexencoded-hex-encoding-name-value)
* [QSetDetatchOnError](./lldbgdbremote.md#qsetdetachonerror)
* [QSetDisableASLR](./lldbgdbremote.md#qsetdisableaslr-bool)
* [QSetSTDIN / QSetSTDOUT / QSetSTDERR](./lldbgdbremote.md#qsetstdin-ascii-hex-path-qsetstdout-ascii-hex-path-qsetstderr-ascii-hex-path) (all 3)
* [qLaunchSuccess](./lldbgdbremote.md#qlaunchsuccess)