]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/source/Commands/CommandObjectDisassemble.h
MFV r322240: 8491 uberblock on-disk padding to reserve space for smoothly merging...
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / source / Commands / CommandObjectDisassemble.h
1 //===-- 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/Core/ArchSpec.h"
18 #include "lldb/Interpreter/CommandObject.h"
19 #include "lldb/Interpreter/Options.h"
20
21 namespace lldb_private {
22
23 //-------------------------------------------------------------------------
24 // CommandObjectDisassemble
25 //-------------------------------------------------------------------------
26
27 class CommandObjectDisassemble : public CommandObjectParsed {
28 public:
29   class CommandOptions : public Options {
30   public:
31     CommandOptions();
32
33     ~CommandOptions() override;
34
35     Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_arg,
36                           ExecutionContext *execution_context) override;
37
38     void OptionParsingStarting(ExecutionContext *execution_context) override;
39
40     llvm::ArrayRef<OptionDefinition> GetDefinitions() override;
41
42     const char *GetPluginName() {
43       return (plugin_name.empty() ? nullptr : plugin_name.c_str());
44     }
45
46     const char *GetFlavorString() {
47       if (flavor_string.empty() || flavor_string == "default")
48         return nullptr;
49       return flavor_string.c_str();
50     }
51
52     Status OptionParsingFinished(ExecutionContext *execution_context) override;
53
54     bool show_mixed; // Show mixed source/assembly
55     bool show_bytes;
56     uint32_t num_lines_context;
57     uint32_t num_instructions;
58     bool raw;
59     std::string func_name;
60     bool current_function;
61     lldb::addr_t start_addr;
62     lldb::addr_t end_addr;
63     bool at_pc;
64     bool frame_line;
65     std::string plugin_name;
66     std::string flavor_string;
67     ArchSpec arch;
68     bool some_location_specified; // If no location was specified, we'll select
69                                   // "at_pc".  This should be set
70     // in SetOptionValue if anything the selects a location is set.
71     lldb::addr_t symbol_containing_addr;
72     static OptionDefinition g_option_table[];
73   };
74
75   CommandObjectDisassemble(CommandInterpreter &interpreter);
76
77   ~CommandObjectDisassemble() override;
78
79   Options *GetOptions() override { return &m_options; }
80
81 protected:
82   bool DoExecute(Args &command, CommandReturnObject &result) override;
83
84   CommandOptions m_options;
85 };
86
87 } // namespace lldb_private
88
89 #endif // liblldb_CommandObjectDisassemble_h_