summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/source/Commands/CommandObjectMemory.cpp21
-rw-r--r--lldb/source/Core/DataExtractor.cpp15
2 files changed, 19 insertions, 17 deletions
diff --git a/lldb/source/Commands/CommandObjectMemory.cpp b/lldb/source/Commands/CommandObjectMemory.cpp
index 7a16a60bc0e..1a0c165429f 100644
--- a/lldb/source/Commands/CommandObjectMemory.cpp
+++ b/lldb/source/Commands/CommandObjectMemory.cpp
@@ -726,16 +726,17 @@ public:
assert (output_stream);
- data.Dump (output_stream,
- 0,
- m_format_options.GetFormat(),
- item_byte_size,
- item_count,
- num_per_line,
- addr,
- 0,
- 0,
- exe_scope);
+ uint32_t bytes_dumped = data.Dump (output_stream,
+ 0,
+ m_format_options.GetFormat(),
+ item_byte_size,
+ item_count,
+ num_per_line,
+ addr,
+ 0,
+ 0,
+ exe_scope);
+ m_next_addr = addr + bytes_dumped;
output_stream->EOL();
return true;
}
diff --git a/lldb/source/Core/DataExtractor.cpp b/lldb/source/Core/DataExtractor.cpp
index ff2d293781a..aa60b03b775 100644
--- a/lldb/source/Core/DataExtractor.cpp
+++ b/lldb/source/Core/DataExtractor.cpp
@@ -1319,16 +1319,14 @@ DataExtractor::Dump (Stream *s,
if (s == NULL)
return start_offset;
- uint32_t offset;
- uint32_t count;
- uint32_t line_start_offset;
-
if (item_format == eFormatPointer)
{
if (item_byte_size != 4 && item_byte_size != 8)
item_byte_size = s->GetAddressByteSize();
}
+ uint32_t offset = start_offset;
+
if (item_format == eFormatInstruction)
{
Target *target = NULL;
@@ -1347,8 +1345,11 @@ DataExtractor::Dump (Stream *s,
so_addr.SetSection(NULL);
}
- if (disassembler_sp->DecodeInstructions (so_addr, *this, start_offset, item_count, false))
+ size_t bytes_consumed = disassembler_sp->DecodeInstructions (so_addr, *this, start_offset, item_count, false);
+
+ if (bytes_consumed)
{
+ offset += bytes_consumed;
const bool show_address = base_addr != LLDB_INVALID_ADDRESS;
const bool show_bytes = true;
ExecutionContext exe_ctx;
@@ -1366,8 +1367,8 @@ DataExtractor::Dump (Stream *s,
if ((item_format == eFormatOSType || item_format == eFormatAddressInfo) && item_byte_size > 8)
item_format = eFormatHex;
-
- for (offset = start_offset, line_start_offset = start_offset, count = 0; ValidOffset(offset) && count < item_count; ++count)
+ uint32_t line_start_offset = start_offset;
+ for (uint32_t count = 0; ValidOffset(offset) && count < item_count; ++count)
{
if ((count % num_per_line) == 0)
{
OpenPOWER on IntegriCloud