Skip to content

Commit e3ee436

Browse files
[gdbremote] Document MultiMemRead packet in protocol extensions
This adds a specification for the new packet discussed in the RFC [1]. [1]: https://discourse.llvm.org/t/rfc-a-new-vectorized-memory-read-packet/88441/12
1 parent 01f4510 commit e3ee436

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

lldb/docs/resources/lldbgdbremote.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2530,3 +2530,41 @@ read packet: $e0030100#b9
25302530
25312531
**Priority to Implement:** Only required for Wasm support. Necessary to show
25322532
variables.
2533+
2534+
### MultiMemRead
2535+
2536+
Read memory from multiple memory addresses.
2537+
2538+
There are two arguments to the request:
2539+
2540+
* `ranges`: a list of base-16 pairs of numbers. Each pair is separated by a
2541+
`,`, as is each number in the pair. The first number of the pair denotes the
2542+
base address of the memory read, the second denotes the number of bytes to be
2543+
read.
2544+
* `options`: an optional string of options. If present, it may be empty. If
2545+
present, it is the last argument of the request.
2546+
2547+
Both arguments must end with a `;`.
2548+
2549+
The reply packet starts with a comma-separated list of base-16 numbers,
2550+
denoting how many bytes were read from each address, followed by a `;`,
2551+
followed by a sequence of bytes containing the memory data. The length of this
2552+
sequence must be equal to the sum of the numbers provided at the start of the
2553+
reply.
2554+
2555+
If the stub is unable to read from any individual address, it should return a
2556+
length of "zero" for that address in the reply packet.
2557+
2558+
A stub that supports this packet should return `MultiMemRead+` in the reply to
2559+
`qSupported`.
2560+
2561+
```
2562+
send packet: $MultiMemRead:ranges:100a00,4,200200,a0,400000,4;
2563+
read packet: $4,0,2;<binary encoding of abcd1000><binary encoding of eeff>
2564+
```
2565+
2566+
In the example above, the first read produced `abcd1000`, the read of `a0`
2567+
bytes from address `200200` failed, and the third read produced two bytes –
2568+
`eeff` – out of the four requested.
2569+
2570+
**Priority to Implement:** Only required for performance.

0 commit comments

Comments
 (0)