diff options
Diffstat (limited to 'tools/lldb-mi/MIDriverMain.cpp')
-rw-r--r-- | tools/lldb-mi/MIDriverMain.cpp | 194 |
1 files changed, 0 insertions, 194 deletions
diff --git a/tools/lldb-mi/MIDriverMain.cpp b/tools/lldb-mi/MIDriverMain.cpp deleted file mode 100644 index 8bc4571a458d7..0000000000000 --- a/tools/lldb-mi/MIDriverMain.cpp +++ /dev/null @@ -1,194 +0,0 @@ -//===-- MIDriverMain.cpp ----------------------------------------*- 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 -// -//===----------------------------------------------------------------------===// - -// 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. -// 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 -// 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 the command factory. The files of relevance are: -// MICmdCommands.cpp -// MICmdBase.h / .cpp -// MICmdCmd.h / .cpp - -// Third party headers: -#include "lldb/API/SBHostOS.h" -#include "llvm/ADT/StringRef.h" -#include "llvm/Support/PrettyStackTrace.h" -#include "llvm/Support/Signals.h" -#include <atomic> -#include <csignal> -#include <stdio.h> - -// In house headers: -#include "MICmnConfig.h" -#include "MICmnResources.h" -#include "MICmnStreamStdin.h" -#include "MIDriver.h" -#include "MIDriverMgr.h" -#include "MIUtilDebug.h" -#include "Platform.h" - -#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 - -// 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 -// used. -// 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) { -#ifdef _WIN32 // Restore handler as it is not persistent on Windows - signal(SIGINT, sigint_handler); -#endif - static std::atomic_flag g_interrupt_sent = ATOMIC_FLAG_INIT; - CMIDriverMgr &rDriverMgr = CMIDriverMgr::Instance(); - lldb::SBDebugger *pDebugger = rDriverMgr.DriverGetTheDebugger(); - if (pDebugger != nullptr) { - if (!g_interrupt_sent.test_and_set()) { - pDebugger->DispatchInputInterrupt(); - g_interrupt_sent.clear(); - } - } - - // 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 -// both the original LLDB driver and the MI driver. -// Type: Function. -// Args: None. -// Return: MIstatus::success - Functional succeeded. -// 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; -} - -//++ -// 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!). -// 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; -} - -//++ -// 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 -// 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. -// Return: int - 0 = Normal exit, program success. -// >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. -// -1000 = Program failed did not initialize successfully. -// Throws: None. -//-- -int main(int argc, char const *argv[]) { -#if MICONFIG_DEBUG_SHOW_ATTACH_DBG_DLG - CMIUtilDebug::WaitForDbgAttachInfinteLoop(); -#endif // MICONFIG_DEBUG_SHOW_ATTACH_DBG_DLG - - llvm::StringRef ToolName = argv[0]; - llvm::sys::PrintStackTraceOnErrorSignal(ToolName); - llvm::PrettyStackTraceProgram X(argc, argv); - - // *** Order is important here *** - bool bOk = DriverSystemInit(); - if (!bOk) { - DriverSystemShutdown(bOk); - return -1000; - } - - // 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(); - - // Logger and other resources shutdown now - DriverSystemShutdown(bOk); - - const int appResult = bOk ? 0 : -1; - - return appResult; -} |