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 
27*2d146aa2SJonas Devlieghere #define LLDB_PLUGIN(p) LLDB_PLUGIN_DECLARE(p)
28*2d146aa2SJonas Devlieghere #include "Plugins/Plugins.def"
293e70a919SJonas Devlieghere 
30e6e2bb38SZachary Turner using namespace lldb_private;
31e6e2bb38SZachary Turner 
32866b7a65SJonas Devlieghere SystemInitializerFull::SystemInitializerFull() = default;
33e6e2bb38SZachary Turner 
34866b7a65SJonas Devlieghere SystemInitializerFull::~SystemInitializerFull() = default;
35e6e2bb38SZachary Turner 
3650c9cd95SJonas Devlieghere #define LLDB_PROCESS_AArch64(op) op(ABIAArch64);
3750c9cd95SJonas Devlieghere #define LLDB_PROCESS_ARM(op) op(ABIARM);
38bcde387fSJonas Devlieghere #define LLDB_PROCESS_ARC(op) op(ABIARC);
39bcde387fSJonas Devlieghere #define LLDB_PROCESS_Hexagon(op) op(ABIHexagon);
4050c9cd95SJonas Devlieghere #define LLDB_PROCESS_Mips(op) op(ABIMips);
4150c9cd95SJonas Devlieghere #define LLDB_PROCESS_PowerPC(op) op(ABIPowerPC);
42bcde387fSJonas Devlieghere #define LLDB_PROCESS_SystemZ(op) op(ABISystemZ);
4350c9cd95SJonas Devlieghere #define LLDB_PROCESS_X86(op) op(ABIX86);
4450c9cd95SJonas Devlieghere 
4550c9cd95SJonas Devlieghere #define LLDB_PROCESS_AMDGPU(op)
4650c9cd95SJonas Devlieghere #define LLDB_PROCESS_AVR(op)
4750c9cd95SJonas Devlieghere #define LLDB_PROCESS_BPF(op)
4850c9cd95SJonas Devlieghere #define LLDB_PROCESS_Lanai(op)
4950c9cd95SJonas Devlieghere #define LLDB_PROCESS_MSP430(op)
5050c9cd95SJonas Devlieghere #define LLDB_PROCESS_NVPTX(op)
5150c9cd95SJonas Devlieghere #define LLDB_PROCESS_RISCV(op)
5250c9cd95SJonas Devlieghere #define LLDB_PROCESS_Sparc(op)
5350c9cd95SJonas Devlieghere #define LLDB_PROCESS_WebAssembly(op)
5450c9cd95SJonas Devlieghere #define LLDB_PROCESS_XCore(op)
5550c9cd95SJonas Devlieghere 
56936c6242SJonas Devlieghere llvm::Error SystemInitializerFull::Initialize() {
57936c6242SJonas Devlieghere   if (auto e = SystemInitializerCommon::Initialize())
5815eacd74SJonas Devlieghere     return e;
59fa3fa5b9SPavel Labath 
6050c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileBreakpad);
6150c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileELF);
62aa2ae6afSJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileJIT);
6350c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileMachO);
6450c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFilePECOFF);
6550c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileWasm);
6650c9cd95SJonas Devlieghere 
6750c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectContainerBSDArchive);
68ccad1948SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectContainerMachOArchive);
6950c9cd95SJonas Devlieghere 
7050c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ScriptInterpreterNone);
7150c9cd95SJonas Devlieghere 
7250c9cd95SJonas Devlieghere #if LLDB_ENABLE_PYTHON
7350c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(OperatingSystemPython);
7450c9cd95SJonas Devlieghere #endif
7550c9cd95SJonas Devlieghere 
7650c9cd95SJonas Devlieghere #if LLDB_ENABLE_PYTHON
7750c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ScriptInterpreterPython);
7850c9cd95SJonas Devlieghere #endif
7950c9cd95SJonas Devlieghere 
8050c9cd95SJonas Devlieghere #if LLDB_ENABLE_LUA
8150c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ScriptInterpreterLua);
8250c9cd95SJonas Devlieghere #endif
8350c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformFreeBSD);
8450c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformLinux);
8550c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformNetBSD);
8650c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformOpenBSD);
8750c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformWindows);
8850c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformAndroid);
8950c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformMacOSX);
9050c9cd95SJonas Devlieghere 
91e6e2bb38SZachary Turner   // Initialize LLVM and Clang
92e6e2bb38SZachary Turner   llvm::InitializeAllTargets();
93e6e2bb38SZachary Turner   llvm::InitializeAllAsmPrinters();
94e6e2bb38SZachary Turner   llvm::InitializeAllTargetMCs();
95e6e2bb38SZachary Turner   llvm::InitializeAllDisassemblers();
96e6e2bb38SZachary Turner 
9750c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(TypeSystemClang);
9856939cb3SGreg Clayton 
9950c9cd95SJonas Devlieghere #define LLVM_TARGET(t) LLDB_PROCESS_##t(LLDB_PLUGIN_INITIALIZE)
10050c9cd95SJonas Devlieghere #include "llvm/Config/Targets.def"
10150c9cd95SJonas Devlieghere 
10250c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ArchitectureArm);
10350c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ArchitectureMips);
10450c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ArchitecturePPC64);
10550c9cd95SJonas Devlieghere 
10650c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DisassemblerLLVMC);
10750c9cd95SJonas Devlieghere 
10850c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(JITLoaderGDB);
10950c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessElfCore);
11050c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessMachCore);
11150c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessMinidump);
11250c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(MemoryHistoryASan);
11350c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeASan);
11450c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeTSan);
11550c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeUBSan);
11650c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeMainThreadChecker);
11750c9cd95SJonas Devlieghere 
11850c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolVendorELF);
11950c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFileBreakpad);
12050c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFileDWARF);
12150c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFilePDB);
12250c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFileSymtab);
12350c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolVendorWasm);
12450c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(UnwindAssemblyInstEmulation);
125ccad1948SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(UnwindAssemblyX86);
12650c9cd95SJonas Devlieghere 
127ccad1948SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstructionARM);
128ccad1948SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstructionARM64);
129ccad1948SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstructionMIPS);
130ccad1948SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstructionMIPS64);
131ccad1948SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstructionPPC64);
13250c9cd95SJonas Devlieghere 
133ccad1948SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(CXXItaniumABI);
13450c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(AppleObjCRuntime);
13550c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SystemRuntimeMacOSX);
13650c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(RenderScriptRuntime);
13750c9cd95SJonas Devlieghere 
13850c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(CPlusPlusLanguage);
13950c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjCLanguage);
14050c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjCPlusPlusLanguage);
14150c9cd95SJonas Devlieghere 
14250c9cd95SJonas Devlieghere #if defined(_WIN32)
143ccad1948SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessWindowsCommon);
14450c9cd95SJonas Devlieghere #endif
14550c9cd95SJonas Devlieghere #if defined(__FreeBSD__)
14650c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessFreeBSD);
14750c9cd95SJonas Devlieghere #endif
14850c9cd95SJonas Devlieghere #if defined(__APPLE__)
14950c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolVendorMacOSX);
150ccad1948SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessMacOSXKernel);
15150c9cd95SJonas Devlieghere #endif
15250c9cd95SJonas Devlieghere 
15350c9cd95SJonas Devlieghere   // This plugin is valid on any host that talks to a Darwin remote. It
15450c9cd95SJonas Devlieghere   // shouldn't be limited to __APPLE__.
15550c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(StructuredDataDarwinLog);
15650c9cd95SJonas Devlieghere 
15750c9cd95SJonas Devlieghere   // Platform agnostic plugins
158ccad1948SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformGDB);
15950c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessGDBRemote);
160884a5894SJonas Devlieghere 
161884a5894SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderDarwinKernel);
162aa2ae6afSJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderHexagonDYLD);
16350c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderMacOSXDYLD);
164ccad1948SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderPosixDYLD);
16550c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderWasmDYLD); // Before DynamicLoaderStatic.
16650c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderWindowsDYLD);
167884a5894SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderStatic);
16850c9cd95SJonas Devlieghere 
16950c9cd95SJonas Devlieghere   // Scan for any system or user LLDB plug-ins
170e6e2bb38SZachary Turner   PluginManager::Initialize();
171e6e2bb38SZachary Turner 
17205097246SAdrian Prantl   // The process settings need to know about installed plug-ins, so the
17350c9cd95SJonas Devlieghere   // Settings must be initialized
17450c9cd95SJonas Devlieghere   // AFTER PluginManager::Initialize is called.
17550c9cd95SJonas Devlieghere 
176e6e2bb38SZachary Turner   Debugger::SettingsInitialize();
17715eacd74SJonas Devlieghere 
17815eacd74SJonas Devlieghere   return llvm::Error::success();
179e6e2bb38SZachary Turner }
180e6e2bb38SZachary Turner 
181b9c1b51eSKate Stone void SystemInitializerFull::Terminate() {
182f9d16476SPavel Labath   static Timer::Category func_cat(LLVM_PRETTY_FUNCTION);
183f9d16476SPavel Labath   Timer scoped_timer(func_cat, LLVM_PRETTY_FUNCTION);
184e6e2bb38SZachary Turner 
185e6e2bb38SZachary Turner   Debugger::SettingsTerminate();
186e6e2bb38SZachary Turner 
18750c9cd95SJonas Devlieghere   // Terminate and unload and loaded system or user LLDB plug-ins
188e6e2bb38SZachary Turner   PluginManager::Terminate();
18956939cb3SGreg Clayton 
19050c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(TypeSystemClang);
19150c9cd95SJonas Devlieghere 
19250c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ArchitectureArm);
19350c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ArchitectureMips);
19450c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ArchitecturePPC64);
19550c9cd95SJonas Devlieghere 
19650c9cd95SJonas Devlieghere #define LLVM_TARGET(t) LLDB_PROCESS_##t(LLDB_PLUGIN_TERMINATE)
19750c9cd95SJonas Devlieghere #include "llvm/Config/Targets.def"
19850c9cd95SJonas Devlieghere 
19950c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DisassemblerLLVMC);
20050c9cd95SJonas Devlieghere 
20150c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(JITLoaderGDB);
20250c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessElfCore);
20350c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessMachCore);
20450c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessMinidump);
20550c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(MemoryHistoryASan);
20650c9cd95SJonas Devlieghere 
20750c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeASan);
20850c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeTSan);
20950c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeUBSan);
21050c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeMainThreadChecker);
21150c9cd95SJonas Devlieghere 
21250c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolVendorWasm);
21350c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolVendorELF);
21450c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFileBreakpad);
21550c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFileDWARF);
21650c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFilePDB);
21750c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFileSymtab);
218ccad1948SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(UnwindAssemblyX86);
21950c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(UnwindAssemblyInstEmulation);
22050c9cd95SJonas Devlieghere 
221ccad1948SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstructionARM);
222ccad1948SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstructionARM64);
223ccad1948SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstructionMIPS);
224ccad1948SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstructionMIPS64);
225ccad1948SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstructionPPC64);
22650c9cd95SJonas Devlieghere 
227ccad1948SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(CXXItaniumABI);
22850c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(AppleObjCRuntime);
22950c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SystemRuntimeMacOSX);
23050c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(RenderScriptRuntime);
23150c9cd95SJonas Devlieghere 
23250c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(CPlusPlusLanguage);
23350c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjCLanguage);
23450c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjCPlusPlusLanguage);
23550c9cd95SJonas Devlieghere 
23650c9cd95SJonas Devlieghere #if defined(__APPLE__)
237ccad1948SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessMacOSXKernel);
23850c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolVendorMacOSX);
23950c9cd95SJonas Devlieghere #endif
24050c9cd95SJonas Devlieghere 
24150c9cd95SJonas Devlieghere #if defined(__FreeBSD__)
24250c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessFreeBSD);
24350c9cd95SJonas Devlieghere #endif
24450c9cd95SJonas Devlieghere   Debugger::SettingsTerminate();
24550c9cd95SJonas Devlieghere 
246ccad1948SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformGDB);
24750c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessGDBRemote);
24850c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(StructuredDataDarwinLog);
24950c9cd95SJonas Devlieghere 
250884a5894SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderDarwinKernel);
251aa2ae6afSJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderHexagonDYLD);
25250c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderMacOSXDYLD);
253ccad1948SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderPosixDYLD);
25450c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderWasmDYLD);
25550c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderWindowsDYLD);
256884a5894SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderStatic);
25750c9cd95SJonas Devlieghere 
25850c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformFreeBSD);
25950c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformLinux);
26050c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformNetBSD);
26150c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformOpenBSD);
26250c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformWindows);
26350c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformAndroid);
26450c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformMacOSX);
26550c9cd95SJonas Devlieghere 
26650c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileBreakpad);
26750c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileELF);
268aa2ae6afSJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileJIT);
26950c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileMachO);
27050c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFilePECOFF);
27150c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileWasm);
27250c9cd95SJonas Devlieghere 
27350c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectContainerBSDArchive);
274ccad1948SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectContainerMachOArchive);
27550c9cd95SJonas Devlieghere 
27650c9cd95SJonas Devlieghere #if LLDB_ENABLE_PYTHON
27750c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(OperatingSystemPython);
27850c9cd95SJonas Devlieghere #endif
27950c9cd95SJonas Devlieghere 
28050c9cd95SJonas Devlieghere #if LLDB_ENABLE_PYTHON
28150c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ScriptInterpreterPython);
28250c9cd95SJonas Devlieghere #endif
28350c9cd95SJonas Devlieghere 
28450c9cd95SJonas Devlieghere #if LLDB_ENABLE_LUA
28550c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ScriptInterpreterLua);
28650c9cd95SJonas Devlieghere #endif
28750c9cd95SJonas Devlieghere 
28850c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ScriptInterpreterNone);
289fbb4d1e4SJonas Devlieghere 
290e6e2bb38SZachary Turner   // Now shutdown the common parts, in reverse order.
291e6e2bb38SZachary Turner   SystemInitializerCommon::Terminate();
292e6e2bb38SZachary Turner }
293