diff options
| -rw-r--r-- | lldb/source/Commands/CommandObjectMemory.cpp | 21 | ||||
| -rw-r--r-- | lldb/source/Core/DataExtractor.cpp | 15 |
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) { |

