124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- CommandObjectDisassemble.h ------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef liblldb_CommandObjectDisassemble_h_ 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define liblldb_CommandObjectDisassemble_h_ 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C Includes 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C++ Includes 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Other libraries and framework includes 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Project includes 1749ce8969d3154e1560106cfe530444c09410f217Greg Clayton#include "lldb/Core/ArchSpec.h" 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Interpreter/CommandObject.h" 1984cdc15005983e5244d665fa779e33c2b6fac95fJim Ingham#include "lldb/Interpreter/Options.h" 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb_private { 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//------------------------------------------------------------------------- 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// CommandObjectDisassemble 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//------------------------------------------------------------------------- 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 27da26bd203cbb104291b39891febf7481794f205fJim Inghamclass CommandObjectDisassemble : public CommandObjectParsed 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner class CommandOptions : public Options 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner public: 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 34f15996eea072cdaa8a092f22d3a1212b3d95f0ecGreg Clayton CommandOptions (CommandInterpreter &interpreter); 3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual 3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~CommandOptions (); 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual Error 40143fcc3a15425659b381502ed4e1e50a3e726f36Greg Clayton SetOptionValue (uint32_t option_idx, const char *option_arg); 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 43143fcc3a15425659b381502ed4e1e50a3e726f36Greg Clayton OptionParsingStarting (); 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 45b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton const OptionDefinition* 4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetDefinitions (); 4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 48149731c0b267e5b6cd7192cbfac0c7f457ae5cfcGreg Clayton const char * 49149731c0b267e5b6cd7192cbfac0c7f457ae5cfcGreg Clayton GetPluginName () 50149731c0b267e5b6cd7192cbfac0c7f457ae5cfcGreg Clayton { 5124bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton if (plugin_name.empty()) 52149731c0b267e5b6cd7192cbfac0c7f457ae5cfcGreg Clayton return NULL; 5324bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton return plugin_name.c_str(); 54149731c0b267e5b6cd7192cbfac0c7f457ae5cfcGreg Clayton } 55149731c0b267e5b6cd7192cbfac0c7f457ae5cfcGreg Clayton 567d4083837c5a258375fdc185d464b4ed15759a4bJim Ingham const char * 577d4083837c5a258375fdc185d464b4ed15759a4bJim Ingham GetFlavorString () 587d4083837c5a258375fdc185d464b4ed15759a4bJim Ingham { 597d4083837c5a258375fdc185d464b4ed15759a4bJim Ingham if (flavor_string.empty() || flavor_string == "default") 607d4083837c5a258375fdc185d464b4ed15759a4bJim Ingham return NULL; 617d4083837c5a258375fdc185d464b4ed15759a4bJim Ingham return flavor_string.c_str(); 627d4083837c5a258375fdc185d464b4ed15759a4bJim Ingham } 637d4083837c5a258375fdc185d464b4ed15759a4bJim Ingham 64d2ad7fd53d12b194eb4f92c80e4ff83c4b892c70Jim Ingham virtual Error 65d2ad7fd53d12b194eb4f92c80e4ff83c4b892c70Jim Ingham OptionParsingFinished (); 66149731c0b267e5b6cd7192cbfac0c7f457ae5cfcGreg Clayton 6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool show_mixed; // Show mixed source/assembly 6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool show_bytes; 6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t num_lines_context; 70aa3e3e1f0f3be95c79f902c5331e11878f66b365Jim Ingham uint32_t num_instructions; 7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool raw; 7224bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton std::string func_name; 738d646f2613a5858df94ad08dfbfb6a691dfd5540Greg Clayton bool current_function; 7424bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton lldb::addr_t start_addr; 7524bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton lldb::addr_t end_addr; 7624bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton bool at_pc; 7724bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton bool frame_line; 7824bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton std::string plugin_name; 797d4083837c5a258375fdc185d464b4ed15759a4bJim Ingham std::string flavor_string; 8024bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton ArchSpec arch; 81d2ad7fd53d12b194eb4f92c80e4ff83c4b892c70Jim Ingham bool some_location_specified; // If no location was specified, we'll select "at_pc". This should be set 82d2ad7fd53d12b194eb4f92c80e4ff83c4b892c70Jim Ingham // in SetOptionValue if anything the selects a location is set. 839afae6223a520bcca114eabee46a9fb92a35a471Jason Molenda lldb::addr_t symbol_containing_addr; 84b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton static OptionDefinition g_option_table[]; 8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner }; 8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 87238c0a1e7b733cee539258faa656159c63f9e893Greg Clayton CommandObjectDisassemble (CommandInterpreter &interpreter); 8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual 9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~CommandObjectDisassemble (); 9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual 9324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Options * 9424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetOptions () 9524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 9624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return &m_options; 9724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 9824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 99da26bd203cbb104291b39891febf7481794f205fJim Inghamprotected: 10024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual bool 101da26bd203cbb104291b39891febf7481794f205fJim Ingham DoExecute (Args& command, 10224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner CommandReturnObject &result); 10324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 10424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner CommandOptions m_options; 10524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 10624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 10724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 10824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb_private 10924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 11024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // liblldb_CommandObjectDisassemble_h_ 111