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"
12*fbb4d1e4SJonas Devlieghere #include "lldb/Core/PluginManager.h"
13*fbb4d1e4SJonas 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 
27e6e2bb38SZachary Turner using namespace lldb_private;
28e6e2bb38SZachary Turner 
29b9c1b51eSKate Stone SystemInitializerFull::SystemInitializerFull() {}
30e6e2bb38SZachary Turner 
31b9c1b51eSKate Stone SystemInitializerFull::~SystemInitializerFull() {}
32e6e2bb38SZachary Turner 
338865ebb5SPavel Labath #define LLDB_PROCESS_AArch64(op)                                               \
34*fbb4d1e4SJonas Devlieghere   op(ABIMacOSX_arm64);                                                         \
35*fbb4d1e4SJonas Devlieghere   op(ABISysV_arm64);
368865ebb5SPavel Labath #define LLDB_PROCESS_ARM(op)                                                   \
37*fbb4d1e4SJonas Devlieghere   op(ABIMacOSX_arm);                                                           \
38*fbb4d1e4SJonas Devlieghere   op(ABISysV_arm);
39*fbb4d1e4SJonas Devlieghere #define LLDB_PROCESS_ARC(op) op(ABISysV_arc);
40*fbb4d1e4SJonas Devlieghere #define LLDB_PROCESS_Hexagon(op) op(ABISysV_hexagon);
418865ebb5SPavel Labath #define LLDB_PROCESS_Mips(op)                                                  \
42*fbb4d1e4SJonas Devlieghere   op(ABISysV_mips);                                                            \
43*fbb4d1e4SJonas Devlieghere   op(ABISysV_mips64);
448865ebb5SPavel Labath #define LLDB_PROCESS_PowerPC(op)                                               \
45*fbb4d1e4SJonas Devlieghere   op(ABISysV_ppc);                                                             \
46*fbb4d1e4SJonas Devlieghere   op(ABISysV_ppc64);
47*fbb4d1e4SJonas Devlieghere #define LLDB_PROCESS_SystemZ(op) op(ABISysV_s390x);
488865ebb5SPavel Labath #define LLDB_PROCESS_X86(op)                                                   \
49*fbb4d1e4SJonas Devlieghere   op(ABIMacOSX_i386);                                                          \
50*fbb4d1e4SJonas Devlieghere   op(ABISysV_i386);                                                            \
51*fbb4d1e4SJonas Devlieghere   op(ABISysV_x86_64);                                                          \
52*fbb4d1e4SJonas Devlieghere   op(ABIWindows_x86_64);
538865ebb5SPavel Labath 
548865ebb5SPavel Labath #define LLDB_PROCESS_AMDGPU(op)
55e8f06131SPavel Labath #define LLDB_PROCESS_AVR(op)
568865ebb5SPavel Labath #define LLDB_PROCESS_BPF(op)
578865ebb5SPavel Labath #define LLDB_PROCESS_Lanai(op)
588865ebb5SPavel Labath #define LLDB_PROCESS_MSP430(op)
598865ebb5SPavel Labath #define LLDB_PROCESS_NVPTX(op)
608865ebb5SPavel Labath #define LLDB_PROCESS_RISCV(op)
618865ebb5SPavel Labath #define LLDB_PROCESS_Sparc(op)
628865ebb5SPavel Labath #define LLDB_PROCESS_WebAssembly(op)
638865ebb5SPavel Labath #define LLDB_PROCESS_XCore(op)
648865ebb5SPavel Labath 
65936c6242SJonas Devlieghere llvm::Error SystemInitializerFull::Initialize() {
66936c6242SJonas Devlieghere   if (auto e = SystemInitializerCommon::Initialize())
6715eacd74SJonas Devlieghere     return e;
68fa3fa5b9SPavel Labath 
69*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileBreakpad);
70*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileELF);
71*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileMachO);
72*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFilePECOFF);
73*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileWasm);
74fa3fa5b9SPavel Labath 
75*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectContainerBSDArchive);
76*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectContainerUniversalMachO);
77c7c3cf68SSaleem Abdulrasool 
78*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ScriptInterpreterNone);
792c1f46dcSZachary Turner 
804e26cf2cSJonas Devlieghere #if LLDB_ENABLE_PYTHON
81*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(OperatingSystemPython);
82a7760cb5SPavel Labath #endif
83a7760cb5SPavel Labath 
844e26cf2cSJonas Devlieghere #if LLDB_ENABLE_PYTHON
85*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ScriptInterpreterPython);
862c1f46dcSZachary Turner #endif
87e6e2bb38SZachary Turner 
8867de8962SJonas Devlieghere #if LLDB_ENABLE_LUA
89*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ScriptInterpreterLua);
9067de8962SJonas Devlieghere #endif
91*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformFreeBSD);
92*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformLinux);
93*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformNetBSD);
94*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformOpenBSD);
95*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformWindows);
96*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformAndroid);
97*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformRemoteiOS);
98*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformMacOSX);
99f1763537SPavel Labath 
100e6e2bb38SZachary Turner   // Initialize LLVM and Clang
101e6e2bb38SZachary Turner   llvm::InitializeAllTargets();
102e6e2bb38SZachary Turner   llvm::InitializeAllAsmPrinters();
103e6e2bb38SZachary Turner   llvm::InitializeAllTargetMCs();
104e6e2bb38SZachary Turner   llvm::InitializeAllDisassemblers();
105e6e2bb38SZachary Turner 
106*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(TypeSystemClang);
10756939cb3SGreg Clayton 
108*fbb4d1e4SJonas Devlieghere #define LLVM_TARGET(t) LLDB_PROCESS_##t(LLDB_PLUGIN_INITIALIZE)
1098865ebb5SPavel Labath #include "llvm/Config/Targets.def"
11013e37d4dSPavel Labath 
111*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ArchitectureArm);
112*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ArchitectureMips);
113*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ArchitecturePPC64);
11413e37d4dSPavel Labath 
115*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DisassemblerLLVMC);
116e6e2bb38SZachary Turner 
117*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(JITLoaderGDB);
118*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessElfCore);
119*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessMachCore);
120*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessMinidump);
121*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(MemoryHistoryASan);
122*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeASan);
123*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeTSan);
124*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeUBSan);
125*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeMainThreadChecker);
126e6e2bb38SZachary Turner 
127*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolVendorELF);
128*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFileBreakpad);
129*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFileDWARF);
130*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFilePDB);
131*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFileSymtab);
132*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolVendorWasm);
133*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(UnwindAssemblyInstEmulation);
134*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(UnwindAssembly_x86);
135e24d8c55SSaleem Abdulrasool 
136*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(EmulateInstructionARM);
137*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(EmulateInstructionARM64);
138*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(EmulateInstructionMIPS);
139*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(EmulateInstructionMIPS64);
140*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(EmulateInstructionPPC64);
141e24d8c55SSaleem Abdulrasool 
142*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFileDWARFDebugMap);
143*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ItaniumABILanguageRuntime);
144*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(AppleObjCRuntime);
145*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SystemRuntimeMacOSX);
146*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(RenderScriptRuntime);
147e6e2bb38SZachary Turner 
148*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(CPlusPlusLanguage);
149*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjCLanguage);
150*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjCPlusPlusLanguage);
151980c0484SEnrico Granata 
152f6ee79c9SHafiz Abid Qadeer #if defined(_WIN32)
153*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessWindows);
154e6e2bb38SZachary Turner #endif
155e6e2bb38SZachary Turner #if defined(__FreeBSD__)
156*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessFreeBSD);
157e6e2bb38SZachary Turner #endif
158e6e2bb38SZachary Turner #if defined(__APPLE__)
159*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolVendorMacOSX);
160*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessKDP);
161*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderDarwinKernel);
162e6e2bb38SZachary Turner #endif
16375930019STodd Fiala 
16405097246SAdrian Prantl   // This plugin is valid on any host that talks to a Darwin remote. It
16505097246SAdrian Prantl   // shouldn't be limited to __APPLE__.
166*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(StructuredDataDarwinLog);
16775930019STodd Fiala 
168e6e2bb38SZachary Turner   // Platform agnostic plugins
169*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformRemoteGDBServer);
170e6e2bb38SZachary Turner 
171*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessGDBRemote);
172*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderMacOSXDYLD);
173*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderMacOS);
174*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderPOSIXDYLD);
175*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderStatic);
176*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderWindowsDYLD);
177e6e2bb38SZachary Turner 
178e6e2bb38SZachary Turner   // Scan for any system or user LLDB plug-ins
179e6e2bb38SZachary Turner   PluginManager::Initialize();
180e6e2bb38SZachary Turner 
18105097246SAdrian Prantl   // The process settings need to know about installed plug-ins, so the
18205097246SAdrian Prantl   // Settings must be initialized
183e6e2bb38SZachary Turner   // AFTER PluginManager::Initialize is called.
184e6e2bb38SZachary Turner 
185e6e2bb38SZachary Turner   Debugger::SettingsInitialize();
18615eacd74SJonas Devlieghere 
18715eacd74SJonas Devlieghere   return llvm::Error::success();
188e6e2bb38SZachary Turner }
189e6e2bb38SZachary Turner 
190b9c1b51eSKate Stone void SystemInitializerFull::Terminate() {
191f9d16476SPavel Labath   static Timer::Category func_cat(LLVM_PRETTY_FUNCTION);
192f9d16476SPavel Labath   Timer scoped_timer(func_cat, LLVM_PRETTY_FUNCTION);
193e6e2bb38SZachary Turner 
194e6e2bb38SZachary Turner   Debugger::SettingsTerminate();
195e6e2bb38SZachary Turner 
196e6e2bb38SZachary Turner   // Terminate and unload and loaded system or user LLDB plug-ins
197e6e2bb38SZachary Turner   PluginManager::Terminate();
19856939cb3SGreg Clayton 
199*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(TypeSystemClang);
20056939cb3SGreg Clayton 
201*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ArchitectureArm);
202*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ArchitectureMips);
203*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ArchitecturePPC64);
20498fc5487STatyana Krasnukha 
205*fbb4d1e4SJonas Devlieghere #define LLVM_TARGET(t) LLDB_PROCESS_##t(LLDB_PLUGIN_TERMINATE)
2068865ebb5SPavel Labath #include "llvm/Config/Targets.def"
207d0b44dbeSPavel Labath 
208*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DisassemblerLLVMC);
209e6e2bb38SZachary Turner 
210*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(JITLoaderGDB);
211*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessElfCore);
212*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessMachCore);
213*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessMinidump);
214*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(MemoryHistoryASan);
215fc1e8551SJonas Devlieghere 
216*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeASan);
217*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeTSan);
218*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeUBSan);
219*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeMainThreadChecker);
220e24d8c55SSaleem Abdulrasool 
221*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolVendorWasm);
222*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolVendorELF);
223*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFileBreakpad);
224*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFileDWARF);
225*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFilePDB);
226*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFileSymtab);
227*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(UnwindAssembly_x86);
228*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(UnwindAssemblyInstEmulation);
229e24d8c55SSaleem Abdulrasool 
230*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(EmulateInstructionARM);
231*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(EmulateInstructionARM64);
232*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(EmulateInstructionMIPS);
233*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(EmulateInstructionMIPS64);
234*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(EmulateInstructionPPC64);
235e6e2bb38SZachary Turner 
236*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFileDWARFDebugMap);
237*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ItaniumABILanguageRuntime);
238*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(AppleObjCRuntime);
239*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SystemRuntimeMacOSX);
240*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(RenderScriptRuntime);
241*fbb4d1e4SJonas Devlieghere 
242*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(CPlusPlusLanguage);
243*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjCLanguage);
244*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjCPlusPlusLanguage);
245980c0484SEnrico Granata 
246e6e2bb38SZachary Turner #if defined(__APPLE__)
247*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderDarwinKernel);
248*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessKDP);
249*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolVendorMacOSX);
250e6e2bb38SZachary Turner #endif
251e6e2bb38SZachary Turner 
252e6e2bb38SZachary Turner #if defined(__FreeBSD__)
253*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessFreeBSD);
254e6e2bb38SZachary Turner #endif
255e6e2bb38SZachary Turner   Debugger::SettingsTerminate();
256e6e2bb38SZachary Turner 
257*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformRemoteGDBServer);
258*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessGDBRemote);
259*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(StructuredDataDarwinLog);
26075930019STodd Fiala 
261*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderMacOSXDYLD);
262*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderMacOS);
263*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderPOSIXDYLD);
264*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderStatic);
265*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderWindowsDYLD);
266e6e2bb38SZachary Turner 
267*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformFreeBSD);
268*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformLinux);
269*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformNetBSD);
270*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformOpenBSD);
271*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformWindows);
272*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformAndroid);
273*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformRemoteiOS);
274*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformMacOSX);
275f1763537SPavel Labath 
276*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileBreakpad);
277*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileELF);
278*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileMachO);
279*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFilePECOFF);
280*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileWasm);
281fa3fa5b9SPavel Labath 
282*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectContainerBSDArchive);
283*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectContainerUniversalMachO);
284c7c3cf68SSaleem Abdulrasool 
285f2d41ad0SRaphael Isemann #if LLDB_ENABLE_PYTHON
286*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(OperatingSystemPython);
287f2d41ad0SRaphael Isemann #endif
288f2d41ad0SRaphael Isemann 
289f2d41ad0SRaphael Isemann #if LLDB_ENABLE_PYTHON
290*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ScriptInterpreterPython);
291f2d41ad0SRaphael Isemann #endif
292f2d41ad0SRaphael Isemann 
293f2d41ad0SRaphael Isemann #if LLDB_ENABLE_LUA
294*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ScriptInterpreterLua);
295f2d41ad0SRaphael Isemann #endif
296f2d41ad0SRaphael Isemann 
297*fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ScriptInterpreterNone);
298*fbb4d1e4SJonas Devlieghere 
299e6e2bb38SZachary Turner   // Now shutdown the common parts, in reverse order.
300e6e2bb38SZachary Turner   SystemInitializerCommon::Terminate();
301e6e2bb38SZachary Turner }
302