Path: blob/main/contrib/llvm-project/lldb/source/Commands/CommandObjectDisassemble.h
39587 views
//===-- CommandObjectDisassemble.h ------------------------------*- C++ -*-===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//78#ifndef LLDB_SOURCE_COMMANDS_COMMANDOBJECTDISASSEMBLE_H9#define LLDB_SOURCE_COMMANDS_COMMANDOBJECTDISASSEMBLE_H1011#include "lldb/Interpreter/CommandObject.h"12#include "lldb/Interpreter/Options.h"13#include "lldb/Utility/ArchSpec.h"1415namespace lldb_private {1617// CommandObjectDisassemble1819class CommandObjectDisassemble : public CommandObjectParsed {20public:21class CommandOptions : public Options {22public:23CommandOptions();2425~CommandOptions() override;2627Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_arg,28ExecutionContext *execution_context) override;2930void OptionParsingStarting(ExecutionContext *execution_context) override;3132llvm::ArrayRef<OptionDefinition> GetDefinitions() override;3334const char *GetPluginName() {35return (plugin_name.empty() ? nullptr : plugin_name.c_str());36}3738const char *GetFlavorString() {39if (flavor_string.empty() || flavor_string == "default")40return nullptr;41return flavor_string.c_str();42}4344Status OptionParsingFinished(ExecutionContext *execution_context) override;4546bool show_mixed; // Show mixed source/assembly47bool show_bytes;48bool show_control_flow_kind;49uint32_t num_lines_context = 0;50uint32_t num_instructions = 0;51bool raw;52std::string func_name;53bool current_function = false;54lldb::addr_t start_addr = 0;55lldb::addr_t end_addr = 0;56bool at_pc = false;57bool frame_line = false;58std::string plugin_name;59std::string flavor_string;60ArchSpec arch;61bool some_location_specified = false; // If no location was specified, we'll62// select "at_pc". This should be set63// in SetOptionValue if anything the selects a location is set.64lldb::addr_t symbol_containing_addr = 0;65bool force = false;66};6768CommandObjectDisassemble(CommandInterpreter &interpreter);6970~CommandObjectDisassemble() override;7172Options *GetOptions() override { return &m_options; }7374protected:75void DoExecute(Args &command, CommandReturnObject &result) override;7677llvm::Expected<std::vector<AddressRange>>78GetRangesForSelectedMode(CommandReturnObject &result);7980llvm::Expected<std::vector<AddressRange>> GetContainingAddressRanges();81llvm::Expected<std::vector<AddressRange>> GetCurrentFunctionRanges();82llvm::Expected<std::vector<AddressRange>> GetCurrentLineRanges();83llvm::Expected<std::vector<AddressRange>>84GetNameRanges(CommandReturnObject &result);85llvm::Expected<std::vector<AddressRange>> GetPCRanges();86llvm::Expected<std::vector<AddressRange>> GetStartEndAddressRanges();8788llvm::Error CheckRangeSize(const AddressRange &range, llvm::StringRef what);8990CommandOptions m_options;91};9293} // namespace lldb_private9495#endif // LLDB_SOURCE_COMMANDS_COMMANDOBJECTDISASSEMBLE_H969798