180814287SRaphael Isemann //===-- SystemInitializerFull.cpp -----------------------------------------===// 2e6e2bb38SZachary 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 6e6e2bb38SZachary Turner // 7e6e2bb38SZachary Turner //===----------------------------------------------------------------------===// 8e6e2bb38SZachary Turner 9d17cd902SAlex Langford #include "SystemInitializerFull.h" 102c1f46dcSZachary Turner #include "lldb/API/SBCommandInterpreter.h" 11e6e2bb38SZachary Turner #include "lldb/Core/Debugger.h" 12fbb4d1e4SJonas Devlieghere #include "lldb/Core/PluginManager.h" 13fbb4d1e4SJonas Devlieghere #include "lldb/Host/Config.h" 14e6e2bb38SZachary Turner #include "lldb/Host/Host.h" 15e6e2bb38SZachary Turner #include "lldb/Initialization/SystemInitializerCommon.h" 162c1f46dcSZachary Turner #include "lldb/Interpreter/CommandInterpreter.h" 1738d0632eSPavel Labath #include "lldb/Utility/Timer.h" 18e6e2bb38SZachary Turner #include "llvm/Support/TargetSelect.h" 19e6e2bb38SZachary Turner 205a36558cSSaleem Abdulrasool #pragma clang diagnostic push 215a36558cSSaleem Abdulrasool #pragma clang diagnostic ignored "-Wglobal-constructors" 225a36558cSSaleem Abdulrasool #include "llvm/ExecutionEngine/MCJIT.h" 235a36558cSSaleem Abdulrasool #pragma clang diagnostic pop 245a36558cSSaleem Abdulrasool 25e6e2bb38SZachary Turner #include <string> 26e6e2bb38SZachary Turner 272d146aa2SJonas Devlieghere #define LLDB_PLUGIN(p) LLDB_PLUGIN_DECLARE(p) 282d146aa2SJonas Devlieghere #include "Plugins/Plugins.def" 293e70a919SJonas Devlieghere 30e6e2bb38SZachary Turner using namespace lldb_private; 31e6e2bb38SZachary Turner 32866b7a65SJonas Devlieghere SystemInitializerFull::SystemInitializerFull() = default; 33866b7a65SJonas Devlieghere SystemInitializerFull::~SystemInitializerFull() = default; 34e6e2bb38SZachary Turner 35936c6242SJonas Devlieghere llvm::Error SystemInitializerFull::Initialize() { 36936c6242SJonas Devlieghere if (auto e = SystemInitializerCommon::Initialize()) 3715eacd74SJonas Devlieghere return e; 38fa3fa5b9SPavel Labath 39e6e2bb38SZachary Turner // Initialize LLVM and Clang 40e6e2bb38SZachary Turner llvm::InitializeAllTargets(); 41e6e2bb38SZachary Turner llvm::InitializeAllAsmPrinters(); 42e6e2bb38SZachary Turner llvm::InitializeAllTargetMCs(); 43e6e2bb38SZachary Turner llvm::InitializeAllDisassemblers(); 44e6e2bb38SZachary Turner 45*80c3ea4eSJonas Devlieghere #define LLDB_PLUGIN(p) LLDB_PLUGIN_INITIALIZE(p); 46*80c3ea4eSJonas Devlieghere #include "Plugins/Plugins.def" 4750c9cd95SJonas Devlieghere 4850c9cd95SJonas Devlieghere // Scan for any system or user LLDB plug-ins 49e6e2bb38SZachary Turner PluginManager::Initialize(); 50e6e2bb38SZachary Turner 5105097246SAdrian Prantl // The process settings need to know about installed plug-ins, so the 52*80c3ea4eSJonas Devlieghere // Settings must be initialized AFTER PluginManager::Initialize is called. 53e6e2bb38SZachary Turner Debugger::SettingsInitialize(); 5415eacd74SJonas Devlieghere 5515eacd74SJonas Devlieghere return llvm::Error::success(); 56e6e2bb38SZachary Turner } 57e6e2bb38SZachary Turner 58b9c1b51eSKate Stone void SystemInitializerFull::Terminate() { 59f9d16476SPavel Labath static Timer::Category func_cat(LLVM_PRETTY_FUNCTION); 60f9d16476SPavel Labath Timer scoped_timer(func_cat, LLVM_PRETTY_FUNCTION); 61e6e2bb38SZachary Turner 62e6e2bb38SZachary Turner Debugger::SettingsTerminate(); 63e6e2bb38SZachary Turner 6450c9cd95SJonas Devlieghere // Terminate and unload and loaded system or user LLDB plug-ins 65e6e2bb38SZachary Turner PluginManager::Terminate(); 6656939cb3SGreg Clayton 67*80c3ea4eSJonas Devlieghere #define LLDB_PLUGIN(p) LLDB_PLUGIN_TERMINATE(p); 68*80c3ea4eSJonas Devlieghere #include "Plugins/Plugins.def" 69fbb4d1e4SJonas Devlieghere 70e6e2bb38SZachary Turner // Now shutdown the common parts, in reverse order. 71e6e2bb38SZachary Turner SystemInitializerCommon::Terminate(); 72e6e2bb38SZachary Turner } 73