1061da546Spatrick //===-- SystemInitializerTest.cpp -------------------------------*- C++ -*-===// 2061da546Spatrick // 3061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4061da546Spatrick // See https://llvm.org/LICENSE.txt for license information. 5061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6061da546Spatrick // 7061da546Spatrick //===----------------------------------------------------------------------===// 8061da546Spatrick 9061da546Spatrick #include "SystemInitializerTest.h" 10061da546Spatrick #include "lldb/Core/Debugger.h" 11dda28197Spatrick #include "lldb/Core/PluginManager.h" 12061da546Spatrick #include "lldb/Host/Host.h" 13061da546Spatrick #include "lldb/Initialization/SystemInitializerCommon.h" 14061da546Spatrick #include "lldb/Interpreter/CommandInterpreter.h" 15061da546Spatrick #include "lldb/Utility/Timer.h" 16061da546Spatrick #include "llvm/Support/TargetSelect.h" 17061da546Spatrick 18061da546Spatrick #include <string> 19061da546Spatrick 20dda28197Spatrick #define LLDB_PLUGIN(p) LLDB_PLUGIN_DECLARE(p) 21dda28197Spatrick #include "Plugins/Plugins.def" 22dda28197Spatrick 23061da546Spatrick using namespace lldb_private; 24061da546Spatrick SystemInitializerTest()25*be691f3bSpatrickSystemInitializerTest::SystemInitializerTest() 26*be691f3bSpatrick : SystemInitializerCommon(nullptr) {} 27dda28197Spatrick SystemInitializerTest::~SystemInitializerTest() = default; 28061da546Spatrick Initialize()29061da546Spatrickllvm::Error SystemInitializerTest::Initialize() { 30061da546Spatrick if (auto e = SystemInitializerCommon::Initialize()) 31061da546Spatrick return e; 32061da546Spatrick 33061da546Spatrick // Initialize LLVM and Clang 34061da546Spatrick llvm::InitializeAllTargets(); 35061da546Spatrick llvm::InitializeAllAsmPrinters(); 36061da546Spatrick llvm::InitializeAllTargetMCs(); 37061da546Spatrick llvm::InitializeAllDisassemblers(); 38061da546Spatrick 39dda28197Spatrick #define LLDB_SCRIPT_PLUGIN(p) 40dda28197Spatrick #define LLDB_PLUGIN(p) LLDB_PLUGIN_INITIALIZE(p); 41dda28197Spatrick #include "Plugins/Plugins.def" 42061da546Spatrick 43dda28197Spatrick // We ignored all the script interpreter earlier, so initialize 44dda28197Spatrick // ScriptInterpreterNone explicitly. 45dda28197Spatrick LLDB_PLUGIN_INITIALIZE(ScriptInterpreterNone); 46061da546Spatrick 47061da546Spatrick // Scan for any system or user LLDB plug-ins 48061da546Spatrick PluginManager::Initialize(); 49061da546Spatrick 50dda28197Spatrick // The process settings need to know about installed plug-ins, so the 51dda28197Spatrick // Settings must be initialized AFTER PluginManager::Initialize is called. 52061da546Spatrick Debugger::SettingsInitialize(); 53061da546Spatrick 54061da546Spatrick return llvm::Error::success(); 55061da546Spatrick } 56061da546Spatrick Terminate()57061da546Spatrickvoid SystemInitializerTest::Terminate() { 58061da546Spatrick Debugger::SettingsTerminate(); 59061da546Spatrick 60061da546Spatrick // Terminate and unload and loaded system or user LLDB plug-ins 61061da546Spatrick PluginManager::Terminate(); 62061da546Spatrick 63dda28197Spatrick #define LLDB_SCRIPT_PLUGIN(p) 64dda28197Spatrick #define LLDB_PLUGIN(p) LLDB_PLUGIN_TERMINATE(p); 65dda28197Spatrick #include "Plugins/Plugins.def" 66061da546Spatrick 67dda28197Spatrick // We ignored all the script interpreter earlier, so terminate 68dda28197Spatrick // ScriptInterpreterNone explicitly. 69dda28197Spatrick LLDB_PLUGIN_INITIALIZE(ScriptInterpreterNone); 70061da546Spatrick 71061da546Spatrick // Now shutdown the common parts, in reverse order. 72061da546Spatrick SystemInitializerCommon::Terminate(); 73061da546Spatrick } 74