1888a4282SZachary Turner //===-- SystemInitializerTest.cpp -------------------------------*- C++ -*-===// 2888a4282SZachary Turner // 32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6888a4282SZachary Turner // 7888a4282SZachary Turner //===----------------------------------------------------------------------===// 8888a4282SZachary Turner 9888a4282SZachary Turner #include "SystemInitializerTest.h" 10888a4282SZachary Turner #include "lldb/Core/Debugger.h" 11fbb4d1e4SJonas Devlieghere #include "lldb/Core/PluginManager.h" 12888a4282SZachary Turner #include "lldb/Host/Host.h" 13888a4282SZachary Turner #include "lldb/Initialization/SystemInitializerCommon.h" 14888a4282SZachary Turner #include "lldb/Interpreter/CommandInterpreter.h" 15888a4282SZachary Turner #include "lldb/Utility/Timer.h" 16888a4282SZachary Turner #include "llvm/Support/TargetSelect.h" 17888a4282SZachary Turner 18888a4282SZachary Turner #include <string> 19888a4282SZachary Turner 202d146aa2SJonas Devlieghere #define LLDB_PLUGIN(p) LLDB_PLUGIN_DECLARE(p) 212d146aa2SJonas Devlieghere #include "Plugins/Plugins.def" 223e70a919SJonas Devlieghere 23888a4282SZachary Turner using namespace lldb_private; 24888a4282SZachary Turner SystemInitializerTest()25*004a264fSPavel LabathSystemInitializerTest::SystemInitializerTest() 26*004a264fSPavel Labath : SystemInitializerCommon(nullptr) {} 2780c3ea4eSJonas Devlieghere SystemInitializerTest::~SystemInitializerTest() = default; 2850c9cd95SJonas Devlieghere Initialize()29936c6242SJonas Devliegherellvm::Error SystemInitializerTest::Initialize() { 30936c6242SJonas Devlieghere if (auto e = SystemInitializerCommon::Initialize()) 3115eacd74SJonas Devlieghere return e; 32fa3fa5b9SPavel Labath 33888a4282SZachary Turner // Initialize LLVM and Clang 34888a4282SZachary Turner llvm::InitializeAllTargets(); 35888a4282SZachary Turner llvm::InitializeAllAsmPrinters(); 36888a4282SZachary Turner llvm::InitializeAllTargetMCs(); 37888a4282SZachary Turner llvm::InitializeAllDisassemblers(); 38888a4282SZachary Turner 3980c3ea4eSJonas Devlieghere #define LLDB_SCRIPT_PLUGIN(p) 4080c3ea4eSJonas Devlieghere #define LLDB_PLUGIN(p) LLDB_PLUGIN_INITIALIZE(p); 4180c3ea4eSJonas Devlieghere #include "Plugins/Plugins.def" 42888a4282SZachary Turner 4380c3ea4eSJonas Devlieghere // We ignored all the script interpreter earlier, so initialize 4480c3ea4eSJonas Devlieghere // ScriptInterpreterNone explicitly. 4580c3ea4eSJonas Devlieghere LLDB_PLUGIN_INITIALIZE(ScriptInterpreterNone); 4650c9cd95SJonas Devlieghere 4750c9cd95SJonas Devlieghere // Scan for any system or user LLDB plug-ins 48888a4282SZachary Turner PluginManager::Initialize(); 49888a4282SZachary Turner 50fbb4d1e4SJonas Devlieghere // The process settings need to know about installed plug-ins, so the 5180c3ea4eSJonas Devlieghere // Settings must be initialized AFTER PluginManager::Initialize is called. 52888a4282SZachary Turner Debugger::SettingsInitialize(); 5315eacd74SJonas Devlieghere 5415eacd74SJonas Devlieghere return llvm::Error::success(); 55888a4282SZachary Turner } 56888a4282SZachary Turner Terminate()57888a4282SZachary Turnervoid SystemInitializerTest::Terminate() { 58888a4282SZachary Turner Debugger::SettingsTerminate(); 59888a4282SZachary Turner 6050c9cd95SJonas Devlieghere // Terminate and unload and loaded system or user LLDB plug-ins 61888a4282SZachary Turner PluginManager::Terminate(); 62888a4282SZachary Turner 6380c3ea4eSJonas Devlieghere #define LLDB_SCRIPT_PLUGIN(p) 6480c3ea4eSJonas Devlieghere #define LLDB_PLUGIN(p) LLDB_PLUGIN_TERMINATE(p); 6580c3ea4eSJonas Devlieghere #include "Plugins/Plugins.def" 66c3ab790cSRaphael Isemann 6780c3ea4eSJonas Devlieghere // We ignored all the script interpreter earlier, so terminate 6880c3ea4eSJonas Devlieghere // ScriptInterpreterNone explicitly. 6980c3ea4eSJonas Devlieghere LLDB_PLUGIN_INITIALIZE(ScriptInterpreterNone); 709b12dc98SJonas Devlieghere 71888a4282SZachary Turner // Now shutdown the common parts, in reverse order. 72888a4282SZachary Turner SystemInitializerCommon::Terminate(); 73888a4282SZachary Turner } 74