-
Notifications
You must be signed in to change notification settings - Fork 14.9k
[gdbremote] Document MultiMemRead packet in protocol extensions #162675
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 3 commits
f7e3f64
df6ec38
5acd418
2d168ba
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -735,6 +735,56 @@ This is a performance optimization, which speeds up debugging by avoiding | |
multiple round-trips for retrieving thread information. The information from this | ||
packet can be retrieved using a combination of `qThreadStopInfo` and `m` packets. | ||
|
||
### MultiMemRead | ||
|
||
Read memory from multiple memory ranges. | ||
|
||
This packet has one argument: | ||
|
||
* `ranges`: a list of pairs of numbers, formatted in base-16. Each pair is | ||
separated by a `,`, as is each number in each pair. The first number of the | ||
pair denotes the base address of the memory read, the second denotes the number | ||
of bytes to be read. The list must end with a `;`. | ||
|
||
The reply packet starts with a comma-separated list of numbers formatted in | ||
base-16, denoting how many bytes were read from each range, in the same order | ||
as the request packet. The list is followed by a `;`, followed by a sequence of | ||
bytes containing binary encoded data for all memory that was read. The length | ||
of this sequence must be equal to the sum of the numbers provided at the start | ||
of the reply. The order of the binary data is the same as the order of the | ||
ranges in the request packet. | ||
|
||
If an entire range is not readable, the stub may perform a partial read of a | ||
prefix of the range. | ||
DavidSpickett marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
||
If the stub is unable to read any bytes from a particular range, it must return | ||
|
||
a length of "zero" for that range in the reply packet; no bytes for this memory | ||
range are included in the sequence of bytes that follows. | ||
|
||
A stub that supports this packet must include `MultiMemRead+` in the reply to | ||
`qSupported`. | ||
|
||
``` | ||
send packet: $MultiMemRead:ranges:100a00,4,200200,a0,400000,4; | ||
read packet: $4,0,2;<binary encoding of abcd1000><binary encoding of eeff> | ||
``` | ||
|
||
In the example above, the first read produced `abcd1000`, the read of `a0` | ||
bytes from address `200200` failed to read any bytes, and the third read | ||
produced two bytes – `eeff` – out of the four requested. | ||
|
||
``` | ||
send packet: $MultiMemRead:ranges:100a00,0; | ||
read packet: $0; | ||
``` | ||
|
||
In the example above, a read of zero bytes was requested. A zero-length request | ||
provides an alternative way of testing whether the stub supports | ||
`MultiMemRead`. | ||
DavidSpickett marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
||
**Priority to Implement:** Only required for performance, the debugger will | ||
fall back to doing separate read requests if this packet is unavailable. | ||
|
||
## QEnvironment:NAME=VALUE | ||
|
||
Setup the environment up for a new child process that will soon be | ||
|
Uh oh!
There was an error while loading. Please reload this page.