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