1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
|
//===-- Driver.h ------------------------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// In-house headers:
#include "MICmnConfig.h"
#if MICONFIG_COMPILE_MIDRIVER_WITH_LLDBDRIVER
#ifndef lldb_Driver_h_
#define lldb_Driver_h_
//#include "Platform.h" // IOR removed
#include <lldb/Utility/PseudoTerminal.h>
#include <set>
#include <bitset>
#include <string>
#include <vector>
#include <lldb/API/SBDefines.h>
#include <lldb/API/SBBroadcaster.h>
#include <lldb/API/SBDebugger.h>
#include <lldb/API/SBError.h>
#include "MIDriverMgr.h"
#include "MIDriverBase.h"
#define ASYNC true
#define NO_ASYNC false
class IOChannel;
class Driver : public lldb::SBBroadcaster, public CMIDriverBase, public CMIDriverMgr::IDriver
{
// MI required code:
// Static:
public:
static Driver * CreateSelf( void );
// Methods:
public:
bool MISetup( CMIUtilString & vwErrMsg );
// Overridden:
public:
// From CMIDriverMgr::IDriver
virtual bool DoInitialize( void );
virtual bool DoShutdown( void );
virtual bool DoMainLoop( void );
virtual void DoResizeWindow( const uint32_t vWindowSizeWsCol );
virtual lldb::SBError DoParseArgs( const int argc, const char * argv[], FILE * vpStdOut, bool & vwbExiting );
virtual CMIUtilString GetError( void ) const;
virtual const CMIUtilString & GetName( void ) const;
virtual lldb::SBDebugger & GetTheDebugger( void );
virtual bool GetDriverIsGDBMICompatibleDriver( void ) const;
virtual bool SetId( const CMIUtilString & vID );
virtual const CMIUtilString & GetId( void ) const;
// From CMIDriverBase
virtual bool DoFallThruToAnotherDriver( const CMIUtilString & vCmd, CMIUtilString & vwErrMsg );
virtual bool SetDriverParent( const CMIDriverBase & vrOtherDriver );
virtual const CMIUtilString & GetDriverName( void ) const;
virtual const CMIUtilString & GetDriverId( void ) const;
// Original code:
public:
Driver ();
virtual
~Driver ();
void
MainLoop ();
lldb::SBError
ParseArgs (int argc, const char *argv[], FILE *out_fh, bool &do_exit);
const char *
GetFilename() const;
const char *
GetCrashLogFilename() const;
const char *
GetArchName() const;
lldb::ScriptLanguage
GetScriptLanguage() const;
void
ExecuteInitialCommands (bool before_file);
bool
GetDebugMode() const;
class OptionData
{
public:
OptionData ();
~OptionData ();
void
Clear();
void
AddInitialCommand (const char *command, bool before_file, bool is_file, lldb::SBError &error);
//static OptionDefinition m_cmd_option_table[];
std::vector<std::string> m_args;
lldb::ScriptLanguage m_script_lang;
std::string m_core_file;
std::string m_crash_log;
std::vector<std::pair<bool,std::string> > m_initial_commands;
std::vector<std::pair<bool,std::string> > m_after_file_commands;
bool m_debug_mode;
bool m_source_quietly;
bool m_print_version;
bool m_print_python_path;
bool m_print_help;
bool m_wait_for;
std::string m_process_name;
lldb::pid_t m_process_pid;
bool m_use_external_editor; // FIXME: When we have set/show variables we can remove this from here.
typedef std::set<char> OptionSet;
OptionSet m_seen_options;
};
static lldb::SBError
SetOptionValue (int option_idx,
const char *option_arg,
Driver::OptionData &data);
lldb::SBDebugger &
GetDebugger()
{
return m_debugger;
}
void
ResizeWindow (unsigned short col);
private:
lldb::SBDebugger m_debugger;
OptionData m_option_data;
void
ResetOptionValues ();
void
ReadyForCommand ();
};
extern Driver * g_driver;
#endif // lldb_Driver_h_
#endif // MICONFIG_COMPILE_MIDRIVER_WITH_LLDBDRIVER
|