blob: 2cf800d2f590d2c0f892c27d98ffe688931496e1 [file] [log] [blame]
Chris Lattner24943d22010-06-08 16:52:24 +00001//===-- CommandObjectDisassemble.h ------------------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef liblldb_CommandObjectDisassemble_h_
11#define liblldb_CommandObjectDisassemble_h_
12
13// C Includes
14// C++ Includes
15// Other libraries and framework includes
16// Project includes
17#include "lldb/Interpreter/CommandObject.h"
18#include "lldb/Core/Options.h"
19
20namespace lldb_private {
21
22//-------------------------------------------------------------------------
23// CommandObjectDisassemble
24//-------------------------------------------------------------------------
25
26class CommandObjectDisassemble : public CommandObject
27{
28public:
29 class CommandOptions : public Options
30 {
31 public:
32
33 CommandOptions ();
34
35 virtual
36 ~CommandOptions ();
37
38 virtual Error
39 SetOptionValue (int option_idx, const char *option_arg);
40
41 void
42 ResetOptionValues ();
43
44 const lldb::OptionDefinition*
45 GetDefinitions ();
46
47 bool show_mixed; // Show mixed source/assembly
48 bool show_bytes;
49 uint32_t num_lines_context;
50 bool raw;
51 std::string m_func_name;
52 lldb::addr_t m_load_addr;
53 static lldb::OptionDefinition g_option_table[];
54 };
55
56 CommandObjectDisassemble ();
57
58 virtual
59 ~CommandObjectDisassemble ();
60
61 virtual
62 Options *
63 GetOptions ()
64 {
65 return &m_options;
66 }
67
68 virtual bool
69 Execute (Args& command,
70 CommandContext *context,
71 CommandInterpreter *interpreter,
72 CommandReturnObject &result);
73
74protected:
75 CommandOptions m_options;
76
77 void
78 Disassemble (CommandContext *context,
79 CommandInterpreter *interpreter,
80 CommandReturnObject &result,
81 Disassembler *disassembler,
82 lldb::addr_t addr,
83 lldb::addr_t end_addr);
84
85 void
86 Disassemble (CommandContext *context,
87 CommandInterpreter *interpreter,
88 CommandReturnObject &result,
89 Disassembler *disassembler,
90 const SymbolContextList &sc_list);
91};
92
93} // namespace lldb_private
94
95#endif // liblldb_CommandObjectDisassemble_h_