]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.h
Merge clang 7.0.1 and several follow-up changes
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / tools / lldb-mi / MICmnLLDBDebuggerHandleEvents.h
1 //===-- MICmnLLDBDebuggerHandleEvents.h -------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 #pragma once
11
12 // In-house headers:
13 #include "MICmnBase.h"
14 #include "MICmnMIValueList.h"
15 #include "MICmnMIValueTuple.h"
16 #include "MIUtilSingletonBase.h"
17 #include "lldb/API/SBEvent.h"
18
19 // Declarations:
20 class CMICmnLLDBDebugSessionInfo;
21 class CMICmnMIResultRecord;
22 class CMICmnStreamStdout;
23 class CMICmnMIOutOfBandRecord;
24
25 //++
26 //============================================================================
27 // Details: MI class to take LLDB SBEvent objects, filter them and form
28 //          MI Out-of-band records from the information inside the event object.
29 //          These records are then pushed to stdout.
30 //          A singleton class.
31 //--
32 class CMICmnLLDBDebuggerHandleEvents
33     : public CMICmnBase,
34       public MI::ISingleton<CMICmnLLDBDebuggerHandleEvents> {
35   friend class MI::ISingleton<CMICmnLLDBDebuggerHandleEvents>;
36
37   // Methods:
38 public:
39   bool Initialize() override;
40   bool Shutdown() override;
41   //
42   bool HandleEvent(const lldb::SBEvent &vEvent, bool &vrbHandledEvent);
43
44   // Methods:
45 private:
46   /* ctor */ CMICmnLLDBDebuggerHandleEvents();
47   /* ctor */ CMICmnLLDBDebuggerHandleEvents(
48       const CMICmnLLDBDebuggerHandleEvents &);
49   void operator=(const CMICmnLLDBDebuggerHandleEvents &);
50   //
51   bool ChkForStateChanges();
52   bool GetProcessStdout();
53   bool GetProcessStderr();
54   bool HandleEventSBBreakPoint(const lldb::SBEvent &vEvent);
55   bool HandleEventSBBreakpointCmn(const lldb::SBEvent &vEvent);
56   bool HandleEventSBBreakpointAdded(const lldb::SBEvent &vEvent);
57   bool HandleEventSBBreakpointLocationsAdded(const lldb::SBEvent &vEvent);
58   bool HandleEventSBProcess(const lldb::SBEvent &vEvent);
59   bool HandleEventSBTarget(const lldb::SBEvent &vEvent);
60   bool HandleEventSBThread(const lldb::SBEvent &vEvent);
61   bool HandleEventSBThreadBitStackChanged(const lldb::SBEvent &vEvent);
62   bool HandleEventSBThreadSuspended(const lldb::SBEvent &vEvent);
63   bool HandleEventSBCommandInterpreter(const lldb::SBEvent &vEvent);
64   bool HandleProcessEventBroadcastBitStateChanged(const lldb::SBEvent &vEvent);
65   bool HandleProcessEventStateRunning();
66   bool HandleProcessEventStateExited();
67   bool HandleProcessEventStateStopped(const lldb::SBEvent &vrEvent,
68                                       bool &vwrbShouldBrk);
69   bool HandleProcessEventStopReasonTrace();
70   bool HandleProcessEventStopReasonBreakpoint();
71   bool HandleProcessEventStopSignal(const lldb::SBEvent &vrEvent);
72   bool HandleProcessEventStopException();
73   bool HandleProcessEventStateSuspended(const lldb::SBEvent &vEvent);
74   bool HandleTargetEventBroadcastBitModulesLoaded(const lldb::SBEvent &vEvent);
75   bool
76   HandleTargetEventBroadcastBitModulesUnloaded(const lldb::SBEvent &vEvent);
77   bool MiHelpGetModuleInfo(const lldb::SBModule &vModule,
78                            const bool vbWithExtraFields,
79                            CMICmnMIOutOfBandRecord &vwrMiOutOfBandRecord);
80   bool MiHelpGetCurrentThreadFrame(CMICmnMIValueTuple &vwrMiValueTuple);
81   bool MiResultRecordToStdout(const CMICmnMIResultRecord &vrMiResultRecord);
82   bool
83   MiOutOfBandRecordToStdout(const CMICmnMIOutOfBandRecord &vrMiResultRecord);
84   bool MiStoppedAtBreakPoint(const MIuint64 vBrkPtId,
85                              const lldb::SBBreakpoint &vBrkPt);
86   bool TextToStdout(const CMIUtilString &vrTxt);
87   bool TextToStderr(const CMIUtilString &vrTxt);
88   bool UpdateSelectedThread();
89
90   // Overridden:
91 private:
92   // From CMICmnBase
93   /* dtor */ ~CMICmnLLDBDebuggerHandleEvents() override;
94   void InitializeSignals();
95   bool m_bSignalsInitialized;
96   MIuint64 m_SIGINT;
97   MIuint64 m_SIGSTOP;
98   MIuint64 m_SIGSEGV;
99   MIuint64 m_SIGTRAP;
100 };