diff options
Diffstat (limited to 'tools/lldb-mi/MICmnLLDBDebugSessionInfo.h')
| -rw-r--r-- | tools/lldb-mi/MICmnLLDBDebugSessionInfo.h | 292 | 
1 files changed, 0 insertions, 292 deletions
| diff --git a/tools/lldb-mi/MICmnLLDBDebugSessionInfo.h b/tools/lldb-mi/MICmnLLDBDebugSessionInfo.h deleted file mode 100644 index 1fa81951f43a..000000000000 --- a/tools/lldb-mi/MICmnLLDBDebugSessionInfo.h +++ /dev/null @@ -1,292 +0,0 @@ -//===-- MICmnLLDBDebugSessionInfo.h -----------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#pragma once - -// Third party headers: -#include "lldb/API/SBDebugger.h" -#include "lldb/API/SBListener.h" -#include "lldb/API/SBProcess.h" -#include "lldb/API/SBTarget.h" -#include <map> -#include <vector> - -// In-house headers: -#include "MICmnBase.h" -#include "MICmnLLDBDebugSessionInfoVarObj.h" -#include "MICmnMIValueTuple.h" -#include "MIUtilMapIdToVariant.h" -#include "MIUtilSingletonBase.h" -#include "MIUtilThreadBaseStd.h" - -// Declarations: -class CMICmnLLDBDebugger; -struct SMICmdData; -class CMICmnMIValueTuple; -class CMICmnMIValueList; - -//++ -//============================================================================ -// Details: MI debug session object that holds debugging information between -//          instances of MI commands executing their work and producing MI -//          result records. Information/data is set by one or many commands then -//          retrieved by the same or other subsequent commands. -//          It primarily holds LLDB type objects. -//          A singleton class. -//-- -class CMICmnLLDBDebugSessionInfo -    : public CMICmnBase, -      public MI::ISingleton<CMICmnLLDBDebugSessionInfo> { -  friend class MI::ISingleton<CMICmnLLDBDebugSessionInfo>; - -  // Structs: -public: -  //++ -  //============================================================================ -  // Details: Break point information object. Used to easily pass information -  // about -  //          a break around and record break point information to be recalled -  //          by -  //          other commands or LLDB event handling functions. -  //-- -  struct SBrkPtInfo { -    SBrkPtInfo() -        : m_id(0), m_bDisp(false), m_bEnabled(false), m_pc(0), m_nLine(0), -          m_bHaveArgOptionThreadGrp(false), m_nTimes(0), m_bPending(false), -          m_nIgnore(0), m_bCondition(false), m_bBrkPtThreadId(false), -          m_nBrkPtThreadId(0) {} - -    MIuint m_id;              // LLDB break point ID. -    CMIUtilString m_strType;  // Break point type. -    bool m_bDisp;             // True = "del", false = "keep". -    bool m_bEnabled;          // True = enabled, false = disabled break point. -    lldb::addr_t m_pc;        // Address number. -    CMIUtilString m_fnName;   // Function name. -    CMIUtilString m_fileName; // File name text. -    CMIUtilString m_path;     // Full file name and path text. -    MIuint m_nLine;           // File line number. -    bool m_bHaveArgOptionThreadGrp; // True = include MI field, false = do not -                                    // include "thread-groups". -    CMIUtilString m_strOptThrdGrp;  // Thread group number. -    MIuint m_nTimes;                // The count of the breakpoint existence. -    CMIUtilString m_strOrigLoc;     // The name of the break point. -    bool m_bPending;  // True = the breakpoint has not been established yet, -                      // false = location found -    MIuint m_nIgnore; // The number of time the breakpoint is run over before it -                      // is stopped on a hit -    bool m_bCondition; // True = break point is conditional, use condition -                       // expression, false = no condition -    CMIUtilString m_strCondition; // Break point condition expression -    bool m_bBrkPtThreadId; // True = break point is specified to work with a -                           // specific thread, false = no specified thread given -    MIuint -        m_nBrkPtThreadId; // Restrict the breakpoint to the specified thread-id -  }; - -  // Enumerations: -public: -  //++ =================================================================== -  // Details: The type of variable used by MIResponseFormVariableInfo family -  // functions. -  //-- -  enum VariableType_e { -    eVariableType_InScope = (1u << 0),  // In scope only. -    eVariableType_Statics = (1u << 1),  // Statics. -    eVariableType_Locals = (1u << 2),   // Locals. -    eVariableType_Arguments = (1u << 3) // Arguments. -  }; - -  //++ =================================================================== -  // Details: Determine the information that should be shown by using -  // MIResponseFormVariableInfo family functions. -  //-- -  enum VariableInfoFormat_e { -    eVariableInfoFormat_NoValues = 0, -    eVariableInfoFormat_AllValues = 1, -    eVariableInfoFormat_SimpleValues = 2 -  }; - -  //++ =================================================================== -  // Details: Determine the information that should be shown by using -  // MIResponseFormThreadInfo family functions. -  //-- -  enum ThreadInfoFormat_e { -    eThreadInfoFormat_NoFrames, -    eThreadInfoFormat_AllFrames -  }; - -  //++ =================================================================== -  // Details: Determine the information that should be shown by using -  // MIResponseFormFrameInfo family functions. -  //-- -  enum FrameInfoFormat_e { -    eFrameInfoFormat_NoArguments, -    eFrameInfoFormat_AllArguments, -    eFrameInfoFormat_AllArgumentsInSimpleForm -  }; - -  // Typedefs: -public: -  typedef std::vector<uint32_t> VecActiveThreadId_t; - -  // Methods: -public: -  bool Initialize() override; -  bool Shutdown() override; - -  // Variant type data which can be assigned and retrieved across all command -  // instances -  template <typename T> -  bool SharedDataAdd(const CMIUtilString &vKey, const T &vData); -  template <typename T> -  bool SharedDataRetrieve(const CMIUtilString &vKey, T &vwData); -  void SharedDataDestroy(); - -  //  Common command required functionality -  bool AccessPath(const CMIUtilString &vPath, bool &vwbYesAccessible); -  bool ResolvePath(const SMICmdData &vCmdData, const CMIUtilString &vPath, -                   CMIUtilString &vwrResolvedPath); -  bool ResolvePath(const CMIUtilString &vstrUnknown, -                   CMIUtilString &vwrResolvedPath); -  bool MIResponseFormFrameInfo(const lldb::SBThread &vrThread, -                               const MIuint vnLevel, -                               const FrameInfoFormat_e veFrameInfoFormat, -                               CMICmnMIValueTuple &vwrMiValueTuple); -  bool MIResponseFormThreadInfo(const SMICmdData &vCmdData, -                                const lldb::SBThread &vrThread, -                                const ThreadInfoFormat_e veThreadInfoFormat, -                                CMICmnMIValueTuple &vwrMIValueTuple); -  bool MIResponseFormVariableInfo(const lldb::SBFrame &vrFrame, -                                  const MIuint vMaskVarTypes, -                                  const VariableInfoFormat_e veVarInfoFormat, -                                  CMICmnMIValueList &vwrMiValueList, -                                  const MIuint vnMaxDepth = 10, -                                  const bool vbMarkArgs = false); -  void MIResponseFormBrkPtFrameInfo(const SBrkPtInfo &vrBrkPtInfo, -                                    CMICmnMIValueTuple &vwrMiValueTuple); -  bool MIResponseFormBrkPtInfo(const SBrkPtInfo &vrBrkPtInfo, -                               CMICmnMIValueTuple &vwrMiValueTuple); -  bool GetBrkPtInfo(const lldb::SBBreakpoint &vBrkPt, -                    SBrkPtInfo &vrwBrkPtInfo) const; -  bool RecordBrkPtInfo(const MIuint vnBrkPtId, const SBrkPtInfo &vrBrkPtInfo); -  bool RecordBrkPtInfoGet(const MIuint vnBrkPtId, -                          SBrkPtInfo &vrwBrkPtInfo) const; -  bool RecordBrkPtInfoDelete(const MIuint vnBrkPtId); -  CMIUtilThreadMutex &GetSessionMutex() { return m_sessionMutex; } -  lldb::SBDebugger &GetDebugger() const; -  lldb::SBListener &GetListener() const; -  lldb::SBTarget GetTarget() const; -  lldb::SBProcess GetProcess() const; - -  // Attributes: -public: -  // The following are available to all command instances -  const MIuint m_nBrkPointCntMax; -  VecActiveThreadId_t m_vecActiveThreadId; -  lldb::tid_t m_currentSelectedThread; - -  // These are keys that can be used to access the shared data map -  // Note: This list is expected to grow and will be moved and abstracted in the -  // future. -  const CMIUtilString m_constStrSharedDataKeyWkDir; -  const CMIUtilString m_constStrSharedDataSolibPath; -  const CMIUtilString m_constStrPrintCharArrayAsString; -  const CMIUtilString m_constStrPrintExpandAggregates; -  const CMIUtilString m_constStrPrintAggregateFieldNames; - -  // Typedefs: -private: -  typedef std::vector<CMICmnLLDBDebugSessionInfoVarObj> VecVarObj_t; -  typedef std::map<MIuint, SBrkPtInfo> MapBrkPtIdToBrkPtInfo_t; -  typedef std::pair<MIuint, SBrkPtInfo> MapPairBrkPtIdToBrkPtInfo_t; - -  // Methods: -private: -  /* ctor */ CMICmnLLDBDebugSessionInfo(); -  /* ctor */ CMICmnLLDBDebugSessionInfo(const CMICmnLLDBDebugSessionInfo &); -  void operator=(const CMICmnLLDBDebugSessionInfo &); -  // -  bool GetVariableInfo(const lldb::SBValue &vrValue, const bool vbInSimpleForm, -                       CMIUtilString &vwrStrValue); -  bool GetFrameInfo(const lldb::SBFrame &vrFrame, lldb::addr_t &vwPc, -                    CMIUtilString &vwFnName, CMIUtilString &vwFileName, -                    CMIUtilString &vwPath, MIuint &vwnLine); -  bool GetThreadFrames(const SMICmdData &vCmdData, const MIuint vThreadIdx, -                       const FrameInfoFormat_e veFrameInfoFormat, -                       CMIUtilString &vwrThreadFrames); -  bool -  MIResponseForVariableInfoInternal(const VariableInfoFormat_e veVarInfoFormat, -                                    CMICmnMIValueList &vwrMiValueList, -                                    const lldb::SBValueList &vwrSBValueList, -                                    const MIuint vnMaxDepth, -                                    const bool vbIsArgs, const bool vbMarkArgs); - -  // Overridden: -private: -  // From CMICmnBase -  /* dtor */ ~CMICmnLLDBDebugSessionInfo() override; - -  // Attributes: -private: -  CMIUtilMapIdToVariant m_mapIdToSessionData; // Hold and retrieve key to value -                                              // data available across all -                                              // commands -  VecVarObj_t m_vecVarObj; // Vector of session variable objects -  MapBrkPtIdToBrkPtInfo_t m_mapBrkPtIdToBrkPtInfo; -  CMIUtilThreadMutex m_sessionMutex; -}; - -//++ -// Details: Command instances can create and share data between other instances -// of commands. -//          This function adds new data to the shared data. Using the same ID -//          more than -//          once replaces any previous matching data keys. -// Type:    Template method. -// Args:    T       - The type of the object to be stored. -//          vKey    - (R) A non empty unique data key to retrieve the data by. -//          vData   - (R) Data to be added to the share. -// Return:  MIstatus::success - Functional succeeded. -//          MIstatus::failure - Functional failed. -// Throws:  None. -//-- -template <typename T> -bool CMICmnLLDBDebugSessionInfo::SharedDataAdd(const CMIUtilString &vKey, -                                               const T &vData) { -  if (!m_mapIdToSessionData.Add<T>(vKey, vData)) { -    SetErrorDescription(m_mapIdToSessionData.GetErrorDescription()); -    return MIstatus::failure; -  } - -  return MIstatus::success; -} - -//++ -// Details: Command instances can create and share data between other instances -// of commands. -//          This function retrieves data from the shared data container. -// Type:    Method. -// Args:    T     - The type of the object being retrieved. -//          vKey  - (R) A non empty unique data key to retrieve the data by. -//          vData - (W) The data. -// Return:  bool  - True = data found, false = data not found or an error -// occurred trying to fetch. -// Throws:  None. -//-- -template <typename T> -bool CMICmnLLDBDebugSessionInfo::SharedDataRetrieve(const CMIUtilString &vKey, -                                                    T &vwData) { -  bool bDataFound = false; - -  if (!m_mapIdToSessionData.Get<T>(vKey, vwData, bDataFound)) { -    SetErrorDescription(m_mapIdToSessionData.GetErrorDescription()); -    return MIstatus::failure; -  } - -  return bDataFound; -} | 
