summaryrefslogtreecommitdiffstats
path: root/lldb/tools/lldb-mi/MIDriverMain.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/tools/lldb-mi/MIDriverMain.cpp')
-rw-r--r--lldb/tools/lldb-mi/MIDriverMain.cpp218
1 files changed, 118 insertions, 100 deletions
diff --git a/lldb/tools/lldb-mi/MIDriverMain.cpp b/lldb/tools/lldb-mi/MIDriverMain.cpp
index ccbaf77f09e..fdced8dd4ea 100644
--- a/lldb/tools/lldb-mi/MIDriverMain.cpp
+++ b/lldb/tools/lldb-mi/MIDriverMain.cpp
@@ -9,78 +9,87 @@
// Overview: Defines the entry point for the console application.
// The MI application (project name MI) runs in two modes:
-// An LLDB native driver mode where it acts no different from the LLDB driver.
+// An LLDB native driver mode where it acts no different from the
+// LLDB driver.
// The other mode is the MI when it finds on the command line
-// the --interpreter option. Command line argument --help on its own will give
-// help for the LLDB driver. If entered with --interpreter then MI help will
+// the --interpreter option. Command line argument --help on its
+// own will give
+// help for the LLDB driver. If entered with --interpreter then MI
+// help will
// provided.
-// 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 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
-
#if defined(_MSC_VER)
-#define _INC_SIGNAL // Stop window's signal.h being included - CODETAG_IOR_SIGNALS
+#define _INC_SIGNAL // Stop window's signal.h being included -
+ // CODETAG_IOR_SIGNALS
#endif // _MSC_VER
// Third party headers:
-#include <stdio.h>
#include "lldb/API/SBHostOS.h"
+#include <stdio.h>
// In house headers:
#include "MICmnConfig.h"
-#include "Platform.h" // Define signals - CODETAG_IOR_SIGNALS
-#include "MIDriverMgr.h"
-#include "MIDriver.h"
#include "MICmnResources.h"
#include "MICmnStreamStdin.h"
+#include "MIDriver.h"
+#include "MIDriverMgr.h"
#include "MIUtilDebug.h"
-
+#include "Platform.h" // Define signals - CODETAG_IOR_SIGNALS
#if defined(_MSC_VER)
-#pragma warning(once : 4530) // Warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc
-#endif // _MSC_VER
+#pragma warning( \
+ once : 4530) // Warning C4530: C++ exception handler used, but unwind
+ // semantics are not enabled. Specify /EHsc
+#endif // _MSC_VER
// CODETAG_IOR_SIGNALS
-//++ ------------------------------------------------------------------------------------
-// Details: The SIGINT signal is sent to a process by its controlling terminal when a
-// user wishes to interrupt the process. This is typically initiated by pressing
-// Control-C, but on some systems, the "delete" character or "break" key can be
+//++
+//------------------------------------------------------------------------------------
+// Details: The SIGINT signal is sent to a process by its controlling terminal
+// when a
+// user wishes to interrupt the process. This is typically initiated by
+// pressing
+// Control-C, but on some systems, the "delete" character or "break"
+// key can be
// used.
-// Be aware this function may be called on another thread besides the main thread.
+// Be aware this function may be called on another thread besides the
+// main thread.
// Type: Function.
// Args: vSigno - (R) Signal number.
// Return: None.
// Throws: None.
//--
-void
-sigint_handler(int vSigno)
-{
+void sigint_handler(int vSigno) {
#ifdef _WIN32 // Restore handler as it is not persistent on Windows
- signal(SIGINT, sigint_handler);
+ signal(SIGINT, sigint_handler);
#endif
- static bool g_interrupt_sent = false;
- CMIDriverMgr &rDriverMgr = CMIDriverMgr::Instance();
- lldb::SBDebugger *pDebugger = rDriverMgr.DriverGetTheDebugger();
- if (pDebugger != nullptr)
- {
- if (!g_interrupt_sent)
- {
- g_interrupt_sent = true;
- pDebugger->DispatchInputInterrupt();
- g_interrupt_sent = false;
- }
+ static bool g_interrupt_sent = false;
+ CMIDriverMgr &rDriverMgr = CMIDriverMgr::Instance();
+ lldb::SBDebugger *pDebugger = rDriverMgr.DriverGetTheDebugger();
+ if (pDebugger != nullptr) {
+ if (!g_interrupt_sent) {
+ g_interrupt_sent = true;
+ pDebugger->DispatchInputInterrupt();
+ g_interrupt_sent = false;
}
+ }
- // Send signal to driver so that it can take suitable action
- rDriverMgr.DeliverSignal (vSigno);
+ // Send signal to driver so that it can take suitable action
+ rDriverMgr.DeliverSignal(vSigno);
}
-//++ ------------------------------------------------------------------------------------
-// Details: Init the MI driver system. Initialize the whole driver system which includes
+//++
+//------------------------------------------------------------------------------------
+// Details: Init the MI driver system. Initialize the whole driver system which
+// includes
// both the original LLDB driver and the MI driver.
// Type: Function.
// Args: None.
@@ -88,95 +97,104 @@ sigint_handler(int vSigno)
// MIstatus::failure - Functional failed.
// Throws: None.
//--
-bool
-DriverSystemInit()
-{
- bool bOk = MIstatus::success;
- CMIDriver &rMIDriver = CMIDriver::Instance();
- CMIDriverMgr &rDriverMgr = CMIDriverMgr::Instance();
- bOk = rDriverMgr.Initialize();
-
- // Register MIDriver first as it needs to initialize and be ready
- // for the Driver to get information from MIDriver when it initializes
- // (LLDB Driver is registered with the Driver Manager in MI's Initialize())
- bOk = bOk && rDriverMgr.RegisterDriver(rMIDriver, "MIDriver"); // Will be main driver
-
- return bOk;
+bool DriverSystemInit() {
+ bool bOk = MIstatus::success;
+ CMIDriver &rMIDriver = CMIDriver::Instance();
+ CMIDriverMgr &rDriverMgr = CMIDriverMgr::Instance();
+ bOk = rDriverMgr.Initialize();
+
+ // Register MIDriver first as it needs to initialize and be ready
+ // for the Driver to get information from MIDriver when it initializes
+ // (LLDB Driver is registered with the Driver Manager in MI's Initialize())
+ bOk = bOk &&
+ rDriverMgr.RegisterDriver(rMIDriver, "MIDriver"); // Will be main driver
+
+ return bOk;
}
-//++ ------------------------------------------------------------------------------------
-// Details: Shutdown the debugger system. Release / terminate resources external to
+//++
+//------------------------------------------------------------------------------------
+// Details: Shutdown the debugger system. Release / terminate resources external
+// to
// specifically the MI driver.
// Type: Function.
-// Args: vbAppExitOk - (R) True = No problems, false = App exiting with problems (investigate!).
+// Args: vbAppExitOk - (R) True = No problems, false = App exiting with
+// problems (investigate!).
// Return: MIstatus::success - Functional succeeded.
// MIstatus::failure - Functional failed.
// Throws: None.
//--
-bool
-DriverSystemShutdown(const bool vbAppExitOk)
-{
- bool bOk = MIstatus::success;
-
- // *** Order is important here ***
- CMIDriverMgr::Instance().Shutdown();
- return bOk;
+bool DriverSystemShutdown(const bool vbAppExitOk) {
+ bool bOk = MIstatus::success;
+
+ // *** Order is important here ***
+ CMIDriverMgr::Instance().Shutdown();
+ return bOk;
}
-//++ ------------------------------------------------------------------------------------
-// Details: MI's application start point of execution. The application runs in two modes.
-// An LLDB native driver mode where it acts no different from the LLDB driver.
+//++
+//------------------------------------------------------------------------------------
+// Details: MI's application start point of execution. The application runs in
+// two modes.
+// An LLDB native driver mode where it acts no different from the LLDB
+// driver.
// The other mode is the MI when it finds on the command line
-// the --interpreter option. Command line argument --help on its own will give
-// help for the LLDB driver. If entered with --interpreter then application
+// the --interpreter option. Command line argument --help on its own
+// will give
+// help for the LLDB driver. If entered with --interpreter then
+// application
// help will provided.
// Type: Method.
-// Args: argc - (R) An integer that contains the count of arguments that follow in
-// argv. The argc parameter is always greater than or equal to 1.
-// argv - (R) An array of null-terminated strings representing command-line
-// arguments entered by the user of the program. By convention,
-// argv[0] is the command with which the program is invoked.
+// Args: argc - (R) An integer that contains the count of arguments that
+// follow in
+// argv. The argc parameter is always greater than or
+// equal to 1.
+// argv - (R) An array of null-terminated strings representing
+// command-line
+// arguments entered by the user of the program. By
+// convention,
+// argv[0] is the command with which the program is
+// invoked.
// Return: int - 0 = Normal exit, program success.
-// >0 = Program success with status i.e. Control-C signal status
+// >0 = Program success with status i.e. Control-C signal
+// status
// <0 = Program failed.
-// -1 = Program failed reason not specified here, see MI log file.
+// -1 = Program failed reason not specified here, see MI log
+// file.
// -1000 = Program failed did not initialize successfully.
// Throws: None.
//--
-int
-main(int argc, char const *argv[])
-{
+int main(int argc, char const *argv[]) {
#if MICONFIG_DEBUG_SHOW_ATTACH_DBG_DLG
#ifdef _WIN32
- CMIUtilDebug::ShowDlgWaitForDbgAttach();
+ CMIUtilDebug::ShowDlgWaitForDbgAttach();
#else
- CMIUtilDebug::WaitForDbgAttachInfinteLoop();
+ CMIUtilDebug::WaitForDbgAttachInfinteLoop();
#endif // _WIN32
#endif // MICONFIG_DEBUG_SHOW_ATTACH_DBG_DLG
- // *** Order is important here ***
- bool bOk = DriverSystemInit();
- if (!bOk)
- {
- DriverSystemShutdown(bOk);
- return -1000;
- }
+ // *** Order is important here ***
+ bool bOk = DriverSystemInit();
+ if (!bOk) {
+ DriverSystemShutdown(bOk);
+ return -1000;
+ }
- // CODETAG_IOR_SIGNALS
- signal(SIGINT, sigint_handler);
+ // CODETAG_IOR_SIGNALS
+ signal(SIGINT, sigint_handler);
- bool bExiting = false;
- CMIDriverMgr &rDriverMgr = CMIDriverMgr::Instance();
- bOk = bOk && rDriverMgr.ParseArgs(argc, argv, bExiting);
- if (bOk && !bExiting)
- bOk = rDriverMgr.DriverParseArgs(argc, argv, stdout, bExiting);
- if (bOk && !bExiting)
- bOk = rDriverMgr.DriverMainLoop();
+ bool bExiting = false;
+ CMIDriverMgr &rDriverMgr = CMIDriverMgr::Instance();
+ bOk = bOk && rDriverMgr.ParseArgs(argc, argv, bExiting);
+ if (bOk && !bExiting)
+ bOk = rDriverMgr.DriverParseArgs(argc, argv, stdout, bExiting);
+ if (bOk && !bExiting)
+ bOk = rDriverMgr.DriverMainLoop();
- // Logger and other resources shutdown now
- DriverSystemShutdown(bOk);
+ // Logger and other resources shutdown now
+ DriverSystemShutdown(bOk);
- const int appResult = bOk ? 0 : -1;
+ const int appResult = bOk ? 0 : -1;
- return appResult;
+ return appResult;
}
OpenPOWER on IntegriCloud