diff options
Diffstat (limited to 'lldb/source/Commands/CommandObjectDisassemble.h')
| -rw-r--r-- | lldb/source/Commands/CommandObjectDisassemble.h | 81 | 
1 files changed, 81 insertions, 0 deletions
diff --git a/lldb/source/Commands/CommandObjectDisassemble.h b/lldb/source/Commands/CommandObjectDisassemble.h new file mode 100644 index 0000000000000..70193e914c7f6 --- /dev/null +++ b/lldb/source/Commands/CommandObjectDisassemble.h @@ -0,0 +1,81 @@ +//===-- CommandObjectDisassemble.h ------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef liblldb_CommandObjectDisassemble_h_ +#define liblldb_CommandObjectDisassemble_h_ + +#include "lldb/Interpreter/CommandObject.h" +#include "lldb/Interpreter/Options.h" +#include "lldb/Utility/ArchSpec.h" + +namespace lldb_private { + +// CommandObjectDisassemble + +class CommandObjectDisassemble : public CommandObjectParsed { +public: +  class CommandOptions : public Options { +  public: +    CommandOptions(); + +    ~CommandOptions() override; + +    Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_arg, +                          ExecutionContext *execution_context) override; + +    void OptionParsingStarting(ExecutionContext *execution_context) override; + +    llvm::ArrayRef<OptionDefinition> GetDefinitions() override; + +    const char *GetPluginName() { +      return (plugin_name.empty() ? nullptr : plugin_name.c_str()); +    } + +    const char *GetFlavorString() { +      if (flavor_string.empty() || flavor_string == "default") +        return nullptr; +      return flavor_string.c_str(); +    } + +    Status OptionParsingFinished(ExecutionContext *execution_context) override; + +    bool show_mixed; // Show mixed source/assembly +    bool show_bytes; +    uint32_t num_lines_context; +    uint32_t num_instructions; +    bool raw; +    std::string func_name; +    bool current_function; +    lldb::addr_t start_addr; +    lldb::addr_t end_addr; +    bool at_pc; +    bool frame_line; +    std::string plugin_name; +    std::string flavor_string; +    ArchSpec arch; +    bool some_location_specified; // If no location was specified, we'll select +                                  // "at_pc".  This should be set +    // in SetOptionValue if anything the selects a location is set. +    lldb::addr_t symbol_containing_addr; +  }; + +  CommandObjectDisassemble(CommandInterpreter &interpreter); + +  ~CommandObjectDisassemble() override; + +  Options *GetOptions() override { return &m_options; } + +protected: +  bool DoExecute(Args &command, CommandReturnObject &result) override; + +  CommandOptions m_options; +}; + +} // namespace lldb_private + +#endif // liblldb_CommandObjectDisassemble_h_  | 
