forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			337 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			337 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			C++
		
	
	
	
//===-- MICmdCmdExec.h ------------------------------------------*- C++ -*-===//
 | 
						|
//
 | 
						|
//                     The LLVM Compiler Infrastructure
 | 
						|
//
 | 
						|
// This file is distributed under the University of Illinois Open Source
 | 
						|
// License. See LICENSE.TXT for details.
 | 
						|
//
 | 
						|
//===----------------------------------------------------------------------===//
 | 
						|
 | 
						|
// Overview:    CMICmdCmdExecRun                interface.
 | 
						|
//              CMICmdCmdExecContinue           interface.
 | 
						|
//              CMICmdCmdExecNext               interface.
 | 
						|
//              CMICmdCmdExecStep               interface.
 | 
						|
//              CMICmdCmdExecNextInstruction    interface.
 | 
						|
//              CMICmdCmdExecStepInstruction    interface.
 | 
						|
//              CMICmdCmdExecFinish             interface.
 | 
						|
//              CMICmdCmdExecInterrupt          interface.
 | 
						|
//              CMICmdCmdExecArguments          interface.
 | 
						|
//              CMICmdCmdExecAbort              interface.
 | 
						|
//
 | 
						|
//              To implement new MI commands derive a new command class from the
 | 
						|
//              command base
 | 
						|
//              class. To enable the new command for interpretation add the new
 | 
						|
//              command class
 | 
						|
//              to the command factory. The files of relevance are:
 | 
						|
//                  MICmdCommands.cpp
 | 
						|
//                  MICmdBase.h / .cpp
 | 
						|
//                  MICmdCmd.h / .cpp
 | 
						|
//              For an introduction to adding a new command see
 | 
						|
//              CMICmdCmdSupportInfoMiCmdQuery
 | 
						|
//              command class as an example.
 | 
						|
 | 
						|
#pragma once
 | 
						|
 | 
						|
// Third party headers:
 | 
						|
#include "lldb/API/SBCommandReturnObject.h"
 | 
						|
 | 
						|
// In-house headers:
 | 
						|
#include "MICmdBase.h"
 | 
						|
 | 
						|
//++
 | 
						|
//============================================================================
 | 
						|
// Details: MI command class. MI commands derived from the command base class.
 | 
						|
//          *this class implements MI command "exec-run".
 | 
						|
//--
 | 
						|
class CMICmdCmdExecRun : public CMICmdBase {
 | 
						|
  // Statics:
 | 
						|
public:
 | 
						|
  // Required by the CMICmdFactory when registering *this command
 | 
						|
  static CMICmdBase *CreateSelf();
 | 
						|
 | 
						|
  // Methods:
 | 
						|
public:
 | 
						|
  /* ctor */ CMICmdCmdExecRun();
 | 
						|
 | 
						|
  // Overridden:
 | 
						|
public:
 | 
						|
  // From CMICmdInvoker::ICmd
 | 
						|
  bool Execute() override;
 | 
						|
  bool Acknowledge() override;
 | 
						|
  bool ParseArgs() override;
 | 
						|
  // From CMICmnBase
 | 
						|
  /* dtor */ ~CMICmdCmdExecRun() override;
 | 
						|
 | 
						|
  // Attributes:
 | 
						|
private:
 | 
						|
  const CMIUtilString m_constStrArgStart; // StopAtEntry - run to first
 | 
						|
                                          // instruction or main() if specified
 | 
						|
  lldb::SBCommandReturnObject m_lldbResult;
 | 
						|
};
 | 
						|
 | 
						|
//++
 | 
						|
//============================================================================
 | 
						|
// Details: MI command class. MI commands derived from the command base class.
 | 
						|
//          *this class implements MI command "exec-continue".
 | 
						|
//--
 | 
						|
class CMICmdCmdExecContinue : public CMICmdBase {
 | 
						|
  // Statics:
 | 
						|
public:
 | 
						|
  // Required by the CMICmdFactory when registering *this command
 | 
						|
  static CMICmdBase *CreateSelf();
 | 
						|
 | 
						|
  // Methods:
 | 
						|
public:
 | 
						|
  /* ctor */ CMICmdCmdExecContinue();
 | 
						|
 | 
						|
  // Overridden:
 | 
						|
public:
 | 
						|
  // From CMICmdInvoker::ICmd
 | 
						|
  bool Execute() override;
 | 
						|
  bool Acknowledge() override;
 | 
						|
  // From CMICmnBase
 | 
						|
  /* dtor */ ~CMICmdCmdExecContinue() override;
 | 
						|
 | 
						|
  // Attributes:
 | 
						|
private:
 | 
						|
  lldb::SBCommandReturnObject m_lldbResult;
 | 
						|
};
 | 
						|
 | 
						|
//++
 | 
						|
//============================================================================
 | 
						|
// Details: MI command class. MI commands derived from the command base class.
 | 
						|
//          *this class implements MI command "exec-next".
 | 
						|
//--
 | 
						|
class CMICmdCmdExecNext : public CMICmdBase {
 | 
						|
  // Statics:
 | 
						|
public:
 | 
						|
  // Required by the CMICmdFactory when registering *this command
 | 
						|
  static CMICmdBase *CreateSelf();
 | 
						|
 | 
						|
  // Methods:
 | 
						|
public:
 | 
						|
  /* ctor */ CMICmdCmdExecNext();
 | 
						|
 | 
						|
  // Overridden:
 | 
						|
public:
 | 
						|
  // From CMICmdInvoker::ICmd
 | 
						|
  bool Execute() override;
 | 
						|
  bool Acknowledge() override;
 | 
						|
  bool ParseArgs() override;
 | 
						|
  // From CMICmnBase
 | 
						|
  /* dtor */ ~CMICmdCmdExecNext() override;
 | 
						|
 | 
						|
  // Attributes:
 | 
						|
private:
 | 
						|
  lldb::SBCommandReturnObject m_lldbResult;
 | 
						|
  const CMIUtilString m_constStrArgNumber; // Not specified in MI spec but
 | 
						|
                                           // Eclipse gives this option
 | 
						|
};
 | 
						|
 | 
						|
//++
 | 
						|
//============================================================================
 | 
						|
// Details: MI command class. MI commands derived from the command base class.
 | 
						|
//          *this class implements MI command "exec-step".
 | 
						|
//--
 | 
						|
class CMICmdCmdExecStep : public CMICmdBase {
 | 
						|
  // Statics:
 | 
						|
public:
 | 
						|
  // Required by the CMICmdFactory when registering *this command
 | 
						|
  static CMICmdBase *CreateSelf();
 | 
						|
 | 
						|
  // Methods:
 | 
						|
public:
 | 
						|
  /* ctor */ CMICmdCmdExecStep();
 | 
						|
 | 
						|
  // Overridden:
 | 
						|
public:
 | 
						|
  // From CMICmdInvoker::ICmd
 | 
						|
  bool Execute() override;
 | 
						|
  bool Acknowledge() override;
 | 
						|
  bool ParseArgs() override;
 | 
						|
  // From CMICmnBase
 | 
						|
  /* dtor */ ~CMICmdCmdExecStep() override;
 | 
						|
 | 
						|
  // Attributes:
 | 
						|
private:
 | 
						|
  lldb::SBCommandReturnObject m_lldbResult;
 | 
						|
  const CMIUtilString m_constStrArgNumber; // Not specified in MI spec but
 | 
						|
                                           // Eclipse gives this option
 | 
						|
};
 | 
						|
 | 
						|
//++
 | 
						|
//============================================================================
 | 
						|
// Details: MI command class. MI commands derived from the command base class.
 | 
						|
//          *this class implements MI command "exec-next-instruction".
 | 
						|
//--
 | 
						|
class CMICmdCmdExecNextInstruction : public CMICmdBase {
 | 
						|
  // Statics:
 | 
						|
public:
 | 
						|
  // Required by the CMICmdFactory when registering *this command
 | 
						|
  static CMICmdBase *CreateSelf();
 | 
						|
 | 
						|
  // Methods:
 | 
						|
public:
 | 
						|
  /* ctor */ CMICmdCmdExecNextInstruction();
 | 
						|
 | 
						|
  // Overridden:
 | 
						|
public:
 | 
						|
  // From CMICmdInvoker::ICmd
 | 
						|
  bool Execute() override;
 | 
						|
  bool Acknowledge() override;
 | 
						|
  bool ParseArgs() override;
 | 
						|
  // From CMICmnBase
 | 
						|
  /* dtor */ ~CMICmdCmdExecNextInstruction() override;
 | 
						|
 | 
						|
  // Attributes:
 | 
						|
private:
 | 
						|
  lldb::SBCommandReturnObject m_lldbResult;
 | 
						|
  const CMIUtilString m_constStrArgNumber; // Not specified in MI spec but
 | 
						|
                                           // Eclipse gives this option
 | 
						|
};
 | 
						|
 | 
						|
//++
 | 
						|
//============================================================================
 | 
						|
// Details: MI command class. MI commands derived from the command base class.
 | 
						|
//          *this class implements MI command "exec-step-instruction".
 | 
						|
//--
 | 
						|
class CMICmdCmdExecStepInstruction : public CMICmdBase {
 | 
						|
  // Statics:
 | 
						|
public:
 | 
						|
  // Required by the CMICmdFactory when registering *this command
 | 
						|
  static CMICmdBase *CreateSelf();
 | 
						|
 | 
						|
  // Methods:
 | 
						|
public:
 | 
						|
  /* ctor */ CMICmdCmdExecStepInstruction();
 | 
						|
 | 
						|
  // Overridden:
 | 
						|
public:
 | 
						|
  // From CMICmdInvoker::ICmd
 | 
						|
  bool Execute() override;
 | 
						|
  bool Acknowledge() override;
 | 
						|
  bool ParseArgs() override;
 | 
						|
  // From CMICmnBase
 | 
						|
  /* dtor */ ~CMICmdCmdExecStepInstruction() override;
 | 
						|
 | 
						|
  // Attributes:
 | 
						|
private:
 | 
						|
  lldb::SBCommandReturnObject m_lldbResult;
 | 
						|
  const CMIUtilString m_constStrArgNumber; // Not specified in MI spec but
 | 
						|
                                           // Eclipse gives this option
 | 
						|
};
 | 
						|
 | 
						|
//++
 | 
						|
//============================================================================
 | 
						|
// Details: MI command class. MI commands derived from the command base class.
 | 
						|
//          *this class implements MI command "exec-finish".
 | 
						|
//--
 | 
						|
class CMICmdCmdExecFinish : public CMICmdBase {
 | 
						|
  // Statics:
 | 
						|
public:
 | 
						|
  // Required by the CMICmdFactory when registering *this command
 | 
						|
  static CMICmdBase *CreateSelf();
 | 
						|
 | 
						|
  // Methods:
 | 
						|
public:
 | 
						|
  /* ctor */ CMICmdCmdExecFinish();
 | 
						|
 | 
						|
  // Overridden:
 | 
						|
public:
 | 
						|
  // From CMICmdInvoker::ICmd
 | 
						|
  bool Execute() override;
 | 
						|
  bool Acknowledge() override;
 | 
						|
  bool ParseArgs() override;
 | 
						|
  // From CMICmnBase
 | 
						|
  /* dtor */ ~CMICmdCmdExecFinish() override;
 | 
						|
 | 
						|
  // Attributes:
 | 
						|
private:
 | 
						|
  lldb::SBCommandReturnObject m_lldbResult;
 | 
						|
};
 | 
						|
 | 
						|
// CODETAG_DEBUG_SESSION_RUNNING_PROG_RECEIVED_SIGINT_PAUSE_PROGRAM
 | 
						|
//++
 | 
						|
//============================================================================
 | 
						|
// Details: MI command class. MI commands derived from the command base class.
 | 
						|
//          *this class implements MI command "exec-interrupt".
 | 
						|
// Gotchas: Using Eclipse this command is injected into the command system when
 | 
						|
// a
 | 
						|
//          SIGINT signal is received while running an inferior program.
 | 
						|
//--
 | 
						|
class CMICmdCmdExecInterrupt : public CMICmdBase {
 | 
						|
  // Statics:
 | 
						|
public:
 | 
						|
  // Required by the CMICmdFactory when registering *this command
 | 
						|
  static CMICmdBase *CreateSelf();
 | 
						|
 | 
						|
  // Methods:
 | 
						|
public:
 | 
						|
  /* ctor */ CMICmdCmdExecInterrupt();
 | 
						|
 | 
						|
  // Overridden:
 | 
						|
public:
 | 
						|
  // From CMICmdInvoker::ICmd
 | 
						|
  bool Execute() override;
 | 
						|
  bool Acknowledge() override;
 | 
						|
  // From CMICmnBase
 | 
						|
  /* dtor */ ~CMICmdCmdExecInterrupt() override;
 | 
						|
 | 
						|
  // Attributes:
 | 
						|
private:
 | 
						|
  lldb::SBCommandReturnObject m_lldbResult;
 | 
						|
};
 | 
						|
 | 
						|
//++
 | 
						|
//============================================================================
 | 
						|
// Details: MI command class. MI commands derived from the command base class.
 | 
						|
//          *this class implements MI command "exec-arguments".
 | 
						|
//--
 | 
						|
class CMICmdCmdExecArguments : public CMICmdBase {
 | 
						|
  // Statics:
 | 
						|
public:
 | 
						|
  // Required by the CMICmdFactory when registering *this command
 | 
						|
  static CMICmdBase *CreateSelf();
 | 
						|
 | 
						|
  // Methods:
 | 
						|
public:
 | 
						|
  /* ctor */ CMICmdCmdExecArguments();
 | 
						|
 | 
						|
  // Overridden:
 | 
						|
public:
 | 
						|
  // From CMICmdInvoker::ICmd
 | 
						|
  bool Execute() override;
 | 
						|
  bool Acknowledge() override;
 | 
						|
  bool ParseArgs() override;
 | 
						|
  // From CMICmnBase
 | 
						|
  /* dtor */ ~CMICmdCmdExecArguments() override;
 | 
						|
 | 
						|
  // Attributes:
 | 
						|
private:
 | 
						|
  const CMIUtilString m_constStrArgArguments;
 | 
						|
};
 | 
						|
 | 
						|
//++
 | 
						|
//============================================================================
 | 
						|
// Details: MI command class. MI commands derived from the command base class.
 | 
						|
//          *this class implements MI command "exec-abort".
 | 
						|
//--
 | 
						|
class CMICmdCmdExecAbort : public CMICmdBase {
 | 
						|
  // Statics:
 | 
						|
public:
 | 
						|
  // Required by the CMICmdFactory when registering *this command
 | 
						|
  static CMICmdBase *CreateSelf();
 | 
						|
 | 
						|
  // Methods:
 | 
						|
public:
 | 
						|
  /* ctor */ CMICmdCmdExecAbort();
 | 
						|
 | 
						|
  // Overridden:
 | 
						|
public:
 | 
						|
  // From CMICmdInvoker::ICmd
 | 
						|
  bool Execute() override;
 | 
						|
  bool Acknowledge() override;
 | 
						|
  // From CMICmnBase
 | 
						|
  /* dtor */ ~CMICmdCmdExecAbort() override;
 | 
						|
};
 |