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;
 | |
| };
 |