summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/include/lldb/Core/Disassembler.h25
-rw-r--r--lldb/source/Commands/CommandObjectDisassemble.cpp19
-rw-r--r--lldb/source/Core/Disassembler.cpp37
-rw-r--r--lldb/source/Target/StackFrame.cpp3
4 files changed, 41 insertions, 43 deletions
diff --git a/lldb/include/lldb/Core/Disassembler.h b/lldb/include/lldb/Core/Disassembler.h
index 5e0d57c6b2a..9a256e79dbd 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 8c3744ff6bb..980c83c11c4 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 995a82c30d4..a1208e43e04 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 a70e664cef6..efc2f3f56b5 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;
OpenPOWER on IntegriCloud