From 1da6f9d7f1a62119cf83edc75cfe50461131d1b5 Mon Sep 17 00:00:00 2001 From: Greg Clayton Date: Wed, 22 Jun 2011 01:39:49 +0000 Subject: [PATCH] Fixed an issue where SBFrame::GetDisassembly() was returning disassembly that contained the current line marker. This is now an option which is not enabled for the API disassembly call. llvm-svn: 133597 --- lldb/include/lldb/Core/Disassembler.h | 25 +++++++------ .../Commands/CommandObjectDisassemble.cpp | 19 +++++++--- lldb/source/Core/Disassembler.cpp | 37 +++++++------------ lldb/source/Target/StackFrame.cpp | 3 +- 4 files changed, 41 insertions(+), 43 deletions(-) diff --git a/lldb/include/lldb/Core/Disassembler.h b/lldb/include/lldb/Core/Disassembler.h index 5e0d57c6b2a8..9a256e79dbd3 100644 --- a/lldb/include/lldb/Core/Disassembler.h +++ b/lldb/include/lldb/Core/Disassembler.h @@ -184,6 +184,13 @@ class Disassembler : { public: + enum + { + eOptionNone = 0u, + eOptionShowBytes = (1u << 0), + eOptionRawOuput = (1u << 1), + eOptionShowCurrentLine = (1u << 2) + }; static Disassembler* FindPlugin (const ArchSpec &arch, const char *plugin_name); @@ -202,8 +209,7 @@ public: const AddressRange &range, uint32_t num_instructions, uint32_t num_mixed_context_lines, - bool show_bytes, - bool raw, + uint32_t options, Stream &strm); static bool @@ -214,8 +220,7 @@ public: const Address &start, uint32_t num_instructions, uint32_t num_mixed_context_lines, - bool show_bytes, - bool raw, + uint32_t options, Stream &strm); static size_t @@ -226,8 +231,7 @@ public: SymbolContextList &sc_list, uint32_t num_instructions, uint32_t num_mixed_context_lines, - bool show_bytes, - bool raw, + uint32_t options, Stream &strm); static bool @@ -239,8 +243,7 @@ public: Module *module, uint32_t num_instructions, uint32_t num_mixed_context_lines, - bool show_bytes, - bool raw, + uint32_t options, Stream &strm); static bool @@ -250,8 +253,7 @@ public: const ExecutionContext &exe_ctx, uint32_t num_instructions, uint32_t num_mixed_context_lines, - bool show_bytes, - bool raw, + uint32_t options, Stream &strm); //------------------------------------------------------------------ @@ -269,8 +271,7 @@ public: const ExecutionContext &exe_ctx, uint32_t num_instructions, uint32_t num_mixed_context_lines, - bool show_bytes, - bool raw, + uint32_t options, Stream &strm); size_t diff --git a/lldb/source/Commands/CommandObjectDisassemble.cpp b/lldb/source/Commands/CommandObjectDisassemble.cpp index 8c3744ff6bbc..980c83c11c41 100644 --- a/lldb/source/Commands/CommandObjectDisassemble.cpp +++ b/lldb/source/Commands/CommandObjectDisassemble.cpp @@ -258,6 +258,16 @@ CommandObjectDisassemble::Execute m_options.num_lines_context = 1; ExecutionContext exe_ctx(m_interpreter.GetExecutionContext()); + uint32_t options = 0; + + if (!m_options.show_mixed) + options |= Disassembler::eOptionShowCurrentLine; + + if (m_options.show_bytes) + options |= Disassembler::eOptionShowBytes; + + if (m_options.raw) + options |= Disassembler::eOptionRawOuput; if (!m_options.func_name.empty()) { @@ -271,8 +281,7 @@ CommandObjectDisassemble::Execute NULL, // Module * m_options.num_instructions, m_options.show_mixed ? m_options.num_lines_context : 0, - m_options.show_bytes, - m_options.raw, + options, result.GetOutputStream())) { result.SetStatus (eReturnStatusSuccessFinishResult); @@ -369,8 +378,7 @@ CommandObjectDisassemble::Execute range.GetBaseAddress(), m_options.num_instructions, m_options.show_mixed ? m_options.num_lines_context : 0, - m_options.show_bytes, - m_options.raw, + options, result.GetOutputStream())) { result.SetStatus (eReturnStatusSuccessFinishResult); @@ -413,8 +421,7 @@ CommandObjectDisassemble::Execute range, m_options.num_instructions, m_options.show_mixed ? m_options.num_lines_context : 0, - m_options.show_bytes, - m_options.raw, + options, result.GetOutputStream())) { result.SetStatus (eReturnStatusSuccessFinishResult); diff --git a/lldb/source/Core/Disassembler.cpp b/lldb/source/Core/Disassembler.cpp index 995a82c30d4e..a1208e43e04b 100644 --- a/lldb/source/Core/Disassembler.cpp +++ b/lldb/source/Core/Disassembler.cpp @@ -110,8 +110,7 @@ Disassembler::Disassemble SymbolContextList &sc_list, uint32_t num_instructions, uint32_t num_mixed_context_lines, - bool show_bytes, - bool raw, + uint32_t options, Stream &strm ) { @@ -134,8 +133,7 @@ Disassembler::Disassemble range, num_instructions, num_mixed_context_lines, - show_bytes, - raw, + options, strm)) { ++success_count; @@ -157,8 +155,7 @@ Disassembler::Disassemble Module *module, uint32_t num_instructions, uint32_t num_mixed_context_lines, - bool show_bytes, - bool raw, + uint32_t options, Stream &strm ) { @@ -199,8 +196,7 @@ Disassembler::Disassemble sc_list, num_instructions, num_mixed_context_lines, - show_bytes, - raw, + options, strm); } return false; @@ -242,8 +238,7 @@ Disassembler::Disassemble const AddressRange &disasm_range, uint32_t num_instructions, uint32_t num_mixed_context_lines, - bool show_bytes, - bool raw, + uint32_t options, Stream &strm ) { @@ -267,8 +262,7 @@ Disassembler::Disassemble exe_ctx, num_instructions, num_mixed_context_lines, - show_bytes, - raw, + options, strm); } } @@ -285,8 +279,7 @@ Disassembler::Disassemble const Address &start_address, uint32_t num_instructions, uint32_t num_mixed_context_lines, - bool show_bytes, - bool raw, + uint32_t options, Stream &strm ) { @@ -307,8 +300,7 @@ Disassembler::Disassemble exe_ctx, num_instructions, num_mixed_context_lines, - show_bytes, - raw, + options, strm); } } @@ -324,8 +316,7 @@ Disassembler::PrintInstructions const ExecutionContext &exe_ctx, uint32_t num_instructions, uint32_t num_mixed_context_lines, - bool show_bytes, - bool raw, + uint32_t options, Stream &strm ) { @@ -384,7 +375,7 @@ Disassembler::PrintInstructions sc.line_entry.line, num_mixed_context_lines, num_mixed_context_lines, - num_mixed_context_lines ? "->" : "", + ((options & eOptionShowCurrentLine) ? "->" : ""), &strm); } } @@ -421,6 +412,8 @@ Disassembler::PrintInstructions else strm.PutCString(" "); } + const bool show_bytes = (options & eOptionShowBytes) != 0; + const bool raw = (options & eOptionRawOuput) != 0; inst->Dump(&strm, max_opcode_byte_size, true, show_bytes, &exe_ctx, raw); strm.EOL(); } @@ -443,8 +436,7 @@ Disassembler::Disassemble const ExecutionContext &exe_ctx, uint32_t num_instructions, uint32_t num_mixed_context_lines, - bool show_bytes, - bool raw, + uint32_t options, Stream &strm ) { @@ -476,8 +468,7 @@ Disassembler::Disassemble range, num_instructions, num_mixed_context_lines, - show_bytes, - raw, + options, strm); } diff --git a/lldb/source/Target/StackFrame.cpp b/lldb/source/Target/StackFrame.cpp index a70e664cef68..efc2f3f56b56 100644 --- a/lldb/source/Target/StackFrame.cpp +++ b/lldb/source/Target/StackFrame.cpp @@ -262,8 +262,7 @@ StackFrame::Disassemble () exe_ctx, 0, 0, - false, - false, + 0, m_disassembly); if (m_disassembly.GetSize() == 0) return NULL;