- The address argument can now be an expression (e.g. &array), it's no longer restricted to being just a number literal.
- The -o (offset) option is now properly handled, not just silently ignored.
- The --thread option is now properly handled.
- A new --frame option has been added for consistency with GDB.
- Added a new test to verify old and new functionality.
Details
Diff Detail
- Repository
- rL LLVM
Event Timeline
Great job! Looks good apart from a 1 inline comment.
Btw, please update tools/lldb-mi/MIExtensions.txt if your implementation has any non-standard functionality.
tools/lldb-mi/MICmdCmdData.cpp | ||
---|---|---|
690 ↗ | (On Diff #24877) | Looks like it isn't needed. Remove it please. |
Removed the line requested, added a full description of the command to MIExtensions.txt.
tools/lldb-mi/MICmdCmdData.cpp | ||
---|---|---|
730 ↗ | (On Diff #24936) | Not an objection on your patch but this "offset" field seems redundant to me as it is always 0. GDB seems to have the same behavior too. |
tools/lldb-mi/MICmdCmdData.cpp | ||
---|---|---|
730 ↗ | (On Diff #24936) | GDB sets the block offset to something other than zero in cases where the specified memory range has inaccessible regions, in that case it may return one or more blocks where begin != (address + byte-offset) and therefore the block offset will be (begin - (address + byte-offset)) > 0, where address and byte-offset correspond to the arguments passed into -data-read-memory-bytes. The way GDB deals with inaccessible regions is described in the MI spec, but the current implementation in LLDB-MI doesn't do any of that. In LLDB-MI the command only succeeds if the entire memory range is read successfully, if any of it is inaccessible the command simply returns an error. I suppose the title I chose for this patch is not entirely accurate, my changes bring us closer to complying with the MI spec, but there's still some way to go :) |