]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm-project/lldb/source/Commands/CommandObjectDisassemble.h
Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
[FreeBSD/FreeBSD.git] / contrib / llvm-project / lldb / source / Commands / CommandObjectDisassemble.h
1 //===-- CommandObjectDisassemble.h ------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8
9 #ifndef liblldb_CommandObjectDisassemble_h_
10 #define liblldb_CommandObjectDisassemble_h_
11
12 #include "lldb/Interpreter/CommandObject.h"
13 #include "lldb/Interpreter/Options.h"
14 #include "lldb/Utility/ArchSpec.h"
15
16 namespace lldb_private {
17
18 // CommandObjectDisassemble
19
20 class CommandObjectDisassemble : public CommandObjectParsed {
21 public:
22   class CommandOptions : public Options {
23   public:
24     CommandOptions();
25
26     ~CommandOptions() override;
27
28     Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_arg,
29                           ExecutionContext *execution_context) override;
30
31     void OptionParsingStarting(ExecutionContext *execution_context) override;
32
33     llvm::ArrayRef<OptionDefinition> GetDefinitions() override;
34
35     const char *GetPluginName() {
36       return (plugin_name.empty() ? nullptr : plugin_name.c_str());
37     }
38
39     const char *GetFlavorString() {
40       if (flavor_string.empty() || flavor_string == "default")
41         return nullptr;
42       return flavor_string.c_str();
43     }
44
45     Status OptionParsingFinished(ExecutionContext *execution_context) override;
46
47     bool show_mixed; // Show mixed source/assembly
48     bool show_bytes;
49     uint32_t num_lines_context;
50     uint32_t num_instructions;
51     bool raw;
52     std::string func_name;
53     bool current_function;
54     lldb::addr_t start_addr;
55     lldb::addr_t end_addr;
56     bool at_pc;
57     bool frame_line;
58     std::string plugin_name;
59     std::string flavor_string;
60     ArchSpec arch;
61     bool some_location_specified; // If no location was specified, we'll select
62                                   // "at_pc".  This should be set
63     // in SetOptionValue if anything the selects a location is set.
64     lldb::addr_t symbol_containing_addr;
65   };
66
67   CommandObjectDisassemble(CommandInterpreter &interpreter);
68
69   ~CommandObjectDisassemble() override;
70
71   Options *GetOptions() override { return &m_options; }
72
73 protected:
74   bool DoExecute(Args &command, CommandReturnObject &result) override;
75
76   CommandOptions m_options;
77 };
78
79 } // namespace lldb_private
80
81 #endif // liblldb_CommandObjectDisassemble_h_