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 
2750c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABIAArch64)
2850c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABIARM)
29*bcde387fSJonas Devlieghere LLDB_PLUGIN_DECLARE(ABIARC)
30*bcde387fSJonas Devlieghere LLDB_PLUGIN_DECLARE(ABIHexagon)
3150c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABIMips)
3250c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABIPowerPC)
33*bcde387fSJonas Devlieghere LLDB_PLUGIN_DECLARE(ABISystemZ)
3450c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABIX86)
3550c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectFileBreakpad)
3650c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectFileELF)
3750c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectFileMachO)
3850c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectFilePECOFF)
3950c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectFileWasm)
4050c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectContainerBSDArchive)
4150c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectContainerUniversalMachO)
4250c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ScriptInterpreterNone)
4350c9cd95SJonas Devlieghere #if LLDB_ENABLE_PYTHON
4450c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(OperatingSystemPython)
4550c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ScriptInterpreterPython)
4650c9cd95SJonas Devlieghere #endif
4750c9cd95SJonas Devlieghere #if LLDB_ENABLE_LUA
4850c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ScriptInterpreterLua)
4950c9cd95SJonas Devlieghere #endif
5050c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformFreeBSD)
5150c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformLinux)
5250c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformNetBSD)
5350c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformOpenBSD)
5450c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformWindows)
5550c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformAndroid)
5650c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformMacOSX)
5750c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(TypeSystemClang)
5850c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ArchitectureArm)
5950c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ArchitectureMips)
6050c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ArchitecturePPC64)
6150c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(DisassemblerLLVMC)
6250c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(JITLoaderGDB)
6350c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessElfCore)
6450c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessMachCore)
6550c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessMinidump)
6650c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(MemoryHistoryASan)
6750c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(InstrumentationRuntimeASan)
6850c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(InstrumentationRuntimeTSan)
6950c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(InstrumentationRuntimeUBSan)
7050c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(InstrumentationRuntimeMainThreadChecker)
7150c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolVendorELF)
7250c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolFileBreakpad)
7350c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolFileDWARF)
7450c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolFilePDB)
7550c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolFileSymtab)
7650c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolVendorWasm)
7750c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(UnwindAssemblyInstEmulation)
7850c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(UnwindAssembly_x86)
7950c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(EmulateInstructionARM)
8050c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(EmulateInstructionARM64)
8150c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(EmulateInstructionMIPS)
8250c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(EmulateInstructionMIPS64)
8350c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(EmulateInstructionPPC64)
8450c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ItaniumABILanguageRuntime)
8550c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(AppleObjCRuntime)
8650c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(SystemRuntimeMacOSX)
8750c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(RenderScriptRuntime)
8850c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(CPlusPlusLanguage)
8950c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjCLanguage)
9050c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjCPlusPlusLanguage)
9150c9cd95SJonas Devlieghere #if defined(_WIN32)
9250c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessWindows)
9350c9cd95SJonas Devlieghere #endif
9450c9cd95SJonas Devlieghere #if defined(__FreeBSD__)
9550c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessFreeBSD)
9650c9cd95SJonas Devlieghere #endif
9750c9cd95SJonas Devlieghere #if defined(__APPLE__)
9850c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolVendorMacOSX)
9950c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessKDP)
10050c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(DynamicLoaderDarwinKernel)
10150c9cd95SJonas Devlieghere #endif
10250c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(StructuredDataDarwinLog)
10350c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformRemoteGDBServer)
10450c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessGDBRemote)
10550c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(DynamicLoaderMacOSXDYLD)
10650c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(DynamicLoaderPOSIXDYLD)
10750c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(DynamicLoaderStatic)
10850c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(DynamicLoaderWasmDYLD)
10950c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(DynamicLoaderWindowsDYLD)
1103e70a919SJonas Devlieghere 
111e6e2bb38SZachary Turner using namespace lldb_private;
112e6e2bb38SZachary Turner 
113b9c1b51eSKate Stone SystemInitializerFull::SystemInitializerFull() {}
114e6e2bb38SZachary Turner 
115b9c1b51eSKate Stone SystemInitializerFull::~SystemInitializerFull() {}
116e6e2bb38SZachary Turner 
11750c9cd95SJonas Devlieghere #define LLDB_PROCESS_AArch64(op) op(ABIAArch64);
11850c9cd95SJonas Devlieghere #define LLDB_PROCESS_ARM(op) op(ABIARM);
119*bcde387fSJonas Devlieghere #define LLDB_PROCESS_ARC(op) op(ABIARC);
120*bcde387fSJonas Devlieghere #define LLDB_PROCESS_Hexagon(op) op(ABIHexagon);
12150c9cd95SJonas Devlieghere #define LLDB_PROCESS_Mips(op) op(ABIMips);
12250c9cd95SJonas Devlieghere #define LLDB_PROCESS_PowerPC(op) op(ABIPowerPC);
123*bcde387fSJonas Devlieghere #define LLDB_PROCESS_SystemZ(op) op(ABISystemZ);
12450c9cd95SJonas Devlieghere #define LLDB_PROCESS_X86(op) op(ABIX86);
12550c9cd95SJonas Devlieghere 
12650c9cd95SJonas Devlieghere #define LLDB_PROCESS_AMDGPU(op)
12750c9cd95SJonas Devlieghere #define LLDB_PROCESS_AVR(op)
12850c9cd95SJonas Devlieghere #define LLDB_PROCESS_BPF(op)
12950c9cd95SJonas Devlieghere #define LLDB_PROCESS_Lanai(op)
13050c9cd95SJonas Devlieghere #define LLDB_PROCESS_MSP430(op)
13150c9cd95SJonas Devlieghere #define LLDB_PROCESS_NVPTX(op)
13250c9cd95SJonas Devlieghere #define LLDB_PROCESS_RISCV(op)
13350c9cd95SJonas Devlieghere #define LLDB_PROCESS_Sparc(op)
13450c9cd95SJonas Devlieghere #define LLDB_PROCESS_WebAssembly(op)
13550c9cd95SJonas Devlieghere #define LLDB_PROCESS_XCore(op)
13650c9cd95SJonas Devlieghere 
137936c6242SJonas Devlieghere llvm::Error SystemInitializerFull::Initialize() {
138936c6242SJonas Devlieghere   if (auto e = SystemInitializerCommon::Initialize())
13915eacd74SJonas Devlieghere     return e;
140fa3fa5b9SPavel Labath 
14150c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileBreakpad);
14250c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileELF);
14350c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileMachO);
14450c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFilePECOFF);
14550c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileWasm);
14650c9cd95SJonas Devlieghere 
14750c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectContainerBSDArchive);
14850c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectContainerUniversalMachO);
14950c9cd95SJonas Devlieghere 
15050c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ScriptInterpreterNone);
15150c9cd95SJonas Devlieghere 
15250c9cd95SJonas Devlieghere #if LLDB_ENABLE_PYTHON
15350c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(OperatingSystemPython);
15450c9cd95SJonas Devlieghere #endif
15550c9cd95SJonas Devlieghere 
15650c9cd95SJonas Devlieghere #if LLDB_ENABLE_PYTHON
15750c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ScriptInterpreterPython);
15850c9cd95SJonas Devlieghere #endif
15950c9cd95SJonas Devlieghere 
16050c9cd95SJonas Devlieghere #if LLDB_ENABLE_LUA
16150c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ScriptInterpreterLua);
16250c9cd95SJonas Devlieghere #endif
16350c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformFreeBSD);
16450c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformLinux);
16550c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformNetBSD);
16650c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformOpenBSD);
16750c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformWindows);
16850c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformAndroid);
16950c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformMacOSX);
17050c9cd95SJonas Devlieghere 
171e6e2bb38SZachary Turner   // Initialize LLVM and Clang
172e6e2bb38SZachary Turner   llvm::InitializeAllTargets();
173e6e2bb38SZachary Turner   llvm::InitializeAllAsmPrinters();
174e6e2bb38SZachary Turner   llvm::InitializeAllTargetMCs();
175e6e2bb38SZachary Turner   llvm::InitializeAllDisassemblers();
176e6e2bb38SZachary Turner 
17750c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(TypeSystemClang);
17856939cb3SGreg Clayton 
17950c9cd95SJonas Devlieghere #define LLVM_TARGET(t) LLDB_PROCESS_##t(LLDB_PLUGIN_INITIALIZE)
18050c9cd95SJonas Devlieghere #include "llvm/Config/Targets.def"
18150c9cd95SJonas Devlieghere 
18250c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ArchitectureArm);
18350c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ArchitectureMips);
18450c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ArchitecturePPC64);
18550c9cd95SJonas Devlieghere 
18650c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DisassemblerLLVMC);
18750c9cd95SJonas Devlieghere 
18850c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(JITLoaderGDB);
18950c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessElfCore);
19050c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessMachCore);
19150c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessMinidump);
19250c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(MemoryHistoryASan);
19350c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeASan);
19450c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeTSan);
19550c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeUBSan);
19650c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeMainThreadChecker);
19750c9cd95SJonas Devlieghere 
19850c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolVendorELF);
19950c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFileBreakpad);
20050c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFileDWARF);
20150c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFilePDB);
20250c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFileSymtab);
20350c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolVendorWasm);
20450c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(UnwindAssemblyInstEmulation);
20550c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(UnwindAssembly_x86);
20650c9cd95SJonas Devlieghere 
20750c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(EmulateInstructionARM);
20850c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(EmulateInstructionARM64);
20950c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(EmulateInstructionMIPS);
21050c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(EmulateInstructionMIPS64);
21150c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(EmulateInstructionPPC64);
21250c9cd95SJonas Devlieghere 
21350c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ItaniumABILanguageRuntime);
21450c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(AppleObjCRuntime);
21550c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SystemRuntimeMacOSX);
21650c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(RenderScriptRuntime);
21750c9cd95SJonas Devlieghere 
21850c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(CPlusPlusLanguage);
21950c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjCLanguage);
22050c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjCPlusPlusLanguage);
22150c9cd95SJonas Devlieghere 
22250c9cd95SJonas Devlieghere #if defined(_WIN32)
22350c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessWindows);
22450c9cd95SJonas Devlieghere #endif
22550c9cd95SJonas Devlieghere #if defined(__FreeBSD__)
22650c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessFreeBSD);
22750c9cd95SJonas Devlieghere #endif
22850c9cd95SJonas Devlieghere #if defined(__APPLE__)
22950c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolVendorMacOSX);
23050c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessKDP);
23150c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderDarwinKernel);
23250c9cd95SJonas Devlieghere #endif
23350c9cd95SJonas Devlieghere 
23450c9cd95SJonas Devlieghere   // This plugin is valid on any host that talks to a Darwin remote. It
23550c9cd95SJonas Devlieghere   // shouldn't be limited to __APPLE__.
23650c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(StructuredDataDarwinLog);
23750c9cd95SJonas Devlieghere 
23850c9cd95SJonas Devlieghere   // Platform agnostic plugins
23950c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformRemoteGDBServer);
24050c9cd95SJonas Devlieghere 
24150c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessGDBRemote);
24250c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderMacOSXDYLD);
24350c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderPOSIXDYLD);
24450c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderWasmDYLD); // Before DynamicLoaderStatic.
24550c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderStatic);
24650c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderWindowsDYLD);
24750c9cd95SJonas Devlieghere 
24850c9cd95SJonas Devlieghere   // Scan for any system or user LLDB plug-ins
249e6e2bb38SZachary Turner   PluginManager::Initialize();
250e6e2bb38SZachary Turner 
25105097246SAdrian Prantl   // The process settings need to know about installed plug-ins, so the
25250c9cd95SJonas Devlieghere   // Settings must be initialized
25350c9cd95SJonas Devlieghere   // AFTER PluginManager::Initialize is called.
25450c9cd95SJonas Devlieghere 
255e6e2bb38SZachary Turner   Debugger::SettingsInitialize();
25615eacd74SJonas Devlieghere 
25715eacd74SJonas Devlieghere   return llvm::Error::success();
258e6e2bb38SZachary Turner }
259e6e2bb38SZachary Turner 
260b9c1b51eSKate Stone void SystemInitializerFull::Terminate() {
261f9d16476SPavel Labath   static Timer::Category func_cat(LLVM_PRETTY_FUNCTION);
262f9d16476SPavel Labath   Timer scoped_timer(func_cat, LLVM_PRETTY_FUNCTION);
263e6e2bb38SZachary Turner 
264e6e2bb38SZachary Turner   Debugger::SettingsTerminate();
265e6e2bb38SZachary Turner 
26650c9cd95SJonas Devlieghere   // Terminate and unload and loaded system or user LLDB plug-ins
267e6e2bb38SZachary Turner   PluginManager::Terminate();
26856939cb3SGreg Clayton 
26950c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(TypeSystemClang);
27050c9cd95SJonas Devlieghere 
27150c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ArchitectureArm);
27250c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ArchitectureMips);
27350c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ArchitecturePPC64);
27450c9cd95SJonas Devlieghere 
27550c9cd95SJonas Devlieghere #define LLVM_TARGET(t) LLDB_PROCESS_##t(LLDB_PLUGIN_TERMINATE)
27650c9cd95SJonas Devlieghere #include "llvm/Config/Targets.def"
27750c9cd95SJonas Devlieghere 
27850c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DisassemblerLLVMC);
27950c9cd95SJonas Devlieghere 
28050c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(JITLoaderGDB);
28150c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessElfCore);
28250c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessMachCore);
28350c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessMinidump);
28450c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(MemoryHistoryASan);
28550c9cd95SJonas Devlieghere 
28650c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeASan);
28750c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeTSan);
28850c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeUBSan);
28950c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeMainThreadChecker);
29050c9cd95SJonas Devlieghere 
29150c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolVendorWasm);
29250c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolVendorELF);
29350c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFileBreakpad);
29450c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFileDWARF);
29550c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFilePDB);
29650c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFileSymtab);
29750c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(UnwindAssembly_x86);
29850c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(UnwindAssemblyInstEmulation);
29950c9cd95SJonas Devlieghere 
30050c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(EmulateInstructionARM);
30150c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(EmulateInstructionARM64);
30250c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(EmulateInstructionMIPS);
30350c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(EmulateInstructionMIPS64);
30450c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(EmulateInstructionPPC64);
30550c9cd95SJonas Devlieghere 
30650c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ItaniumABILanguageRuntime);
30750c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(AppleObjCRuntime);
30850c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SystemRuntimeMacOSX);
30950c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(RenderScriptRuntime);
31050c9cd95SJonas Devlieghere 
31150c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(CPlusPlusLanguage);
31250c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjCLanguage);
31350c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjCPlusPlusLanguage);
31450c9cd95SJonas Devlieghere 
31550c9cd95SJonas Devlieghere #if defined(__APPLE__)
31650c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderDarwinKernel);
31750c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessKDP);
31850c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolVendorMacOSX);
31950c9cd95SJonas Devlieghere #endif
32050c9cd95SJonas Devlieghere 
32150c9cd95SJonas Devlieghere #if defined(__FreeBSD__)
32250c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessFreeBSD);
32350c9cd95SJonas Devlieghere #endif
32450c9cd95SJonas Devlieghere   Debugger::SettingsTerminate();
32550c9cd95SJonas Devlieghere 
32650c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformRemoteGDBServer);
32750c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessGDBRemote);
32850c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(StructuredDataDarwinLog);
32950c9cd95SJonas Devlieghere 
33050c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderMacOSXDYLD);
33150c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderPOSIXDYLD);
33250c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderWasmDYLD);
33350c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderStatic);
33450c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderWindowsDYLD);
33550c9cd95SJonas Devlieghere 
33650c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformFreeBSD);
33750c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformLinux);
33850c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformNetBSD);
33950c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformOpenBSD);
34050c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformWindows);
34150c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformAndroid);
34250c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformMacOSX);
34350c9cd95SJonas Devlieghere 
34450c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileBreakpad);
34550c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileELF);
34650c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileMachO);
34750c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFilePECOFF);
34850c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileWasm);
34950c9cd95SJonas Devlieghere 
35050c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectContainerBSDArchive);
35150c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectContainerUniversalMachO);
35250c9cd95SJonas Devlieghere 
35350c9cd95SJonas Devlieghere #if LLDB_ENABLE_PYTHON
35450c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(OperatingSystemPython);
35550c9cd95SJonas Devlieghere #endif
35650c9cd95SJonas Devlieghere 
35750c9cd95SJonas Devlieghere #if LLDB_ENABLE_PYTHON
35850c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ScriptInterpreterPython);
35950c9cd95SJonas Devlieghere #endif
36050c9cd95SJonas Devlieghere 
36150c9cd95SJonas Devlieghere #if LLDB_ENABLE_LUA
36250c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ScriptInterpreterLua);
36350c9cd95SJonas Devlieghere #endif
36450c9cd95SJonas Devlieghere 
36550c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ScriptInterpreterNone);
366fbb4d1e4SJonas Devlieghere 
367e6e2bb38SZachary Turner   // Now shutdown the common parts, in reverse order.
368e6e2bb38SZachary Turner   SystemInitializerCommon::Terminate();
369e6e2bb38SZachary Turner }
370