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*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABIAArch64)
28*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABIARM)
29*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABISysV_arc)
30*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABISysV_hexagon)
31*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABIMips)
32*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABIPowerPC)
33*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABISysV_s390x)
34*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABIX86)
35*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectFileBreakpad)
36*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectFileELF)
37*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectFileMachO)
38*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectFilePECOFF)
39*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectFileWasm)
40*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectContainerBSDArchive)
41*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectContainerUniversalMachO)
42*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ScriptInterpreterNone)
43*50c9cd95SJonas Devlieghere #if LLDB_ENABLE_PYTHON
44*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(OperatingSystemPython)
45*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ScriptInterpreterPython)
46*50c9cd95SJonas Devlieghere #endif
47*50c9cd95SJonas Devlieghere #if LLDB_ENABLE_LUA
48*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ScriptInterpreterLua)
49*50c9cd95SJonas Devlieghere #endif
50*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformFreeBSD)
51*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformLinux)
52*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformNetBSD)
53*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformOpenBSD)
54*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformWindows)
55*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformAndroid)
56*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformMacOSX)
57*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(TypeSystemClang)
58*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ArchitectureArm)
59*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ArchitectureMips)
60*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ArchitecturePPC64)
61*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(DisassemblerLLVMC)
62*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(JITLoaderGDB)
63*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessElfCore)
64*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessMachCore)
65*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessMinidump)
66*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(MemoryHistoryASan)
67*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(InstrumentationRuntimeASan)
68*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(InstrumentationRuntimeTSan)
69*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(InstrumentationRuntimeUBSan)
70*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(InstrumentationRuntimeMainThreadChecker)
71*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolVendorELF)
72*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolFileBreakpad)
73*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolFileDWARF)
74*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolFilePDB)
75*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolFileSymtab)
76*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolVendorWasm)
77*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(UnwindAssemblyInstEmulation)
78*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(UnwindAssembly_x86)
79*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(EmulateInstructionARM)
80*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(EmulateInstructionARM64)
81*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(EmulateInstructionMIPS)
82*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(EmulateInstructionMIPS64)
83*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(EmulateInstructionPPC64)
84*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ItaniumABILanguageRuntime)
85*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(AppleObjCRuntime)
86*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(SystemRuntimeMacOSX)
87*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(RenderScriptRuntime)
88*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(CPlusPlusLanguage)
89*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjCLanguage)
90*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjCPlusPlusLanguage)
91*50c9cd95SJonas Devlieghere #if defined(_WIN32)
92*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessWindows)
93*50c9cd95SJonas Devlieghere #endif
94*50c9cd95SJonas Devlieghere #if defined(__FreeBSD__)
95*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessFreeBSD)
96*50c9cd95SJonas Devlieghere #endif
97*50c9cd95SJonas Devlieghere #if defined(__APPLE__)
98*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolVendorMacOSX)
99*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessKDP)
100*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(DynamicLoaderDarwinKernel)
101*50c9cd95SJonas Devlieghere #endif
102*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(StructuredDataDarwinLog)
103*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformRemoteGDBServer)
104*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessGDBRemote)
105*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(DynamicLoaderMacOSXDYLD)
106*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(DynamicLoaderPOSIXDYLD)
107*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(DynamicLoaderStatic)
108*50c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(DynamicLoaderWasmDYLD)
109*50c9cd95SJonas 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 
117*50c9cd95SJonas Devlieghere #define LLDB_PROCESS_AArch64(op) op(ABIAArch64);
118*50c9cd95SJonas Devlieghere #define LLDB_PROCESS_ARM(op) op(ABIARM);
119*50c9cd95SJonas Devlieghere #define LLDB_PROCESS_ARC(op) op(ABISysV_arc);
120*50c9cd95SJonas Devlieghere #define LLDB_PROCESS_Hexagon(op) op(ABISysV_hexagon);
121*50c9cd95SJonas Devlieghere #define LLDB_PROCESS_Mips(op) op(ABIMips);
122*50c9cd95SJonas Devlieghere #define LLDB_PROCESS_PowerPC(op) op(ABIPowerPC);
123*50c9cd95SJonas Devlieghere #define LLDB_PROCESS_SystemZ(op) op(ABISysV_s390x);
124*50c9cd95SJonas Devlieghere #define LLDB_PROCESS_X86(op) op(ABIX86);
125*50c9cd95SJonas Devlieghere 
126*50c9cd95SJonas Devlieghere #define LLDB_PROCESS_AMDGPU(op)
127*50c9cd95SJonas Devlieghere #define LLDB_PROCESS_AVR(op)
128*50c9cd95SJonas Devlieghere #define LLDB_PROCESS_BPF(op)
129*50c9cd95SJonas Devlieghere #define LLDB_PROCESS_Lanai(op)
130*50c9cd95SJonas Devlieghere #define LLDB_PROCESS_MSP430(op)
131*50c9cd95SJonas Devlieghere #define LLDB_PROCESS_NVPTX(op)
132*50c9cd95SJonas Devlieghere #define LLDB_PROCESS_RISCV(op)
133*50c9cd95SJonas Devlieghere #define LLDB_PROCESS_Sparc(op)
134*50c9cd95SJonas Devlieghere #define LLDB_PROCESS_WebAssembly(op)
135*50c9cd95SJonas Devlieghere #define LLDB_PROCESS_XCore(op)
136*50c9cd95SJonas Devlieghere 
137936c6242SJonas Devlieghere llvm::Error SystemInitializerFull::Initialize() {
138936c6242SJonas Devlieghere   if (auto e = SystemInitializerCommon::Initialize())
13915eacd74SJonas Devlieghere     return e;
140fa3fa5b9SPavel Labath 
141*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileBreakpad);
142*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileELF);
143*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileMachO);
144*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFilePECOFF);
145*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileWasm);
146*50c9cd95SJonas Devlieghere 
147*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectContainerBSDArchive);
148*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectContainerUniversalMachO);
149*50c9cd95SJonas Devlieghere 
150*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ScriptInterpreterNone);
151*50c9cd95SJonas Devlieghere 
152*50c9cd95SJonas Devlieghere #if LLDB_ENABLE_PYTHON
153*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(OperatingSystemPython);
154*50c9cd95SJonas Devlieghere #endif
155*50c9cd95SJonas Devlieghere 
156*50c9cd95SJonas Devlieghere #if LLDB_ENABLE_PYTHON
157*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ScriptInterpreterPython);
158*50c9cd95SJonas Devlieghere #endif
159*50c9cd95SJonas Devlieghere 
160*50c9cd95SJonas Devlieghere #if LLDB_ENABLE_LUA
161*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ScriptInterpreterLua);
162*50c9cd95SJonas Devlieghere #endif
163*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformFreeBSD);
164*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformLinux);
165*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformNetBSD);
166*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformOpenBSD);
167*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformWindows);
168*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformAndroid);
169*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformMacOSX);
170*50c9cd95SJonas 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 
177*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(TypeSystemClang);
17856939cb3SGreg Clayton 
179*50c9cd95SJonas Devlieghere #define LLVM_TARGET(t) LLDB_PROCESS_##t(LLDB_PLUGIN_INITIALIZE)
180*50c9cd95SJonas Devlieghere #include "llvm/Config/Targets.def"
181*50c9cd95SJonas Devlieghere 
182*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ArchitectureArm);
183*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ArchitectureMips);
184*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ArchitecturePPC64);
185*50c9cd95SJonas Devlieghere 
186*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DisassemblerLLVMC);
187*50c9cd95SJonas Devlieghere 
188*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(JITLoaderGDB);
189*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessElfCore);
190*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessMachCore);
191*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessMinidump);
192*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(MemoryHistoryASan);
193*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeASan);
194*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeTSan);
195*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeUBSan);
196*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeMainThreadChecker);
197*50c9cd95SJonas Devlieghere 
198*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolVendorELF);
199*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFileBreakpad);
200*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFileDWARF);
201*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFilePDB);
202*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFileSymtab);
203*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolVendorWasm);
204*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(UnwindAssemblyInstEmulation);
205*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(UnwindAssembly_x86);
206*50c9cd95SJonas Devlieghere 
207*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(EmulateInstructionARM);
208*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(EmulateInstructionARM64);
209*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(EmulateInstructionMIPS);
210*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(EmulateInstructionMIPS64);
211*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(EmulateInstructionPPC64);
212*50c9cd95SJonas Devlieghere 
213*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ItaniumABILanguageRuntime);
214*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(AppleObjCRuntime);
215*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SystemRuntimeMacOSX);
216*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(RenderScriptRuntime);
217*50c9cd95SJonas Devlieghere 
218*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(CPlusPlusLanguage);
219*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjCLanguage);
220*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjCPlusPlusLanguage);
221*50c9cd95SJonas Devlieghere 
222*50c9cd95SJonas Devlieghere #if defined(_WIN32)
223*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessWindows);
224*50c9cd95SJonas Devlieghere #endif
225*50c9cd95SJonas Devlieghere #if defined(__FreeBSD__)
226*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessFreeBSD);
227*50c9cd95SJonas Devlieghere #endif
228*50c9cd95SJonas Devlieghere #if defined(__APPLE__)
229*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolVendorMacOSX);
230*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessKDP);
231*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderDarwinKernel);
232*50c9cd95SJonas Devlieghere #endif
233*50c9cd95SJonas Devlieghere 
234*50c9cd95SJonas Devlieghere   // This plugin is valid on any host that talks to a Darwin remote. It
235*50c9cd95SJonas Devlieghere   // shouldn't be limited to __APPLE__.
236*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(StructuredDataDarwinLog);
237*50c9cd95SJonas Devlieghere 
238*50c9cd95SJonas Devlieghere   // Platform agnostic plugins
239*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformRemoteGDBServer);
240*50c9cd95SJonas Devlieghere 
241*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessGDBRemote);
242*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderMacOSXDYLD);
243*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderPOSIXDYLD);
244*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderWasmDYLD); // Before DynamicLoaderStatic.
245*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderStatic);
246*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderWindowsDYLD);
247*50c9cd95SJonas Devlieghere 
248*50c9cd95SJonas 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
252*50c9cd95SJonas Devlieghere   // Settings must be initialized
253*50c9cd95SJonas Devlieghere   // AFTER PluginManager::Initialize is called.
254*50c9cd95SJonas 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 
266*50c9cd95SJonas Devlieghere   // Terminate and unload and loaded system or user LLDB plug-ins
267e6e2bb38SZachary Turner   PluginManager::Terminate();
26856939cb3SGreg Clayton 
269*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(TypeSystemClang);
270*50c9cd95SJonas Devlieghere 
271*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ArchitectureArm);
272*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ArchitectureMips);
273*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ArchitecturePPC64);
274*50c9cd95SJonas Devlieghere 
275*50c9cd95SJonas Devlieghere #define LLVM_TARGET(t) LLDB_PROCESS_##t(LLDB_PLUGIN_TERMINATE)
276*50c9cd95SJonas Devlieghere #include "llvm/Config/Targets.def"
277*50c9cd95SJonas Devlieghere 
278*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DisassemblerLLVMC);
279*50c9cd95SJonas Devlieghere 
280*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(JITLoaderGDB);
281*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessElfCore);
282*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessMachCore);
283*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessMinidump);
284*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(MemoryHistoryASan);
285*50c9cd95SJonas Devlieghere 
286*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeASan);
287*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeTSan);
288*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeUBSan);
289*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeMainThreadChecker);
290*50c9cd95SJonas Devlieghere 
291*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolVendorWasm);
292*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolVendorELF);
293*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFileBreakpad);
294*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFileDWARF);
295*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFilePDB);
296*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFileSymtab);
297*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(UnwindAssembly_x86);
298*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(UnwindAssemblyInstEmulation);
299*50c9cd95SJonas Devlieghere 
300*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(EmulateInstructionARM);
301*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(EmulateInstructionARM64);
302*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(EmulateInstructionMIPS);
303*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(EmulateInstructionMIPS64);
304*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(EmulateInstructionPPC64);
305*50c9cd95SJonas Devlieghere 
306*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ItaniumABILanguageRuntime);
307*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(AppleObjCRuntime);
308*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SystemRuntimeMacOSX);
309*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(RenderScriptRuntime);
310*50c9cd95SJonas Devlieghere 
311*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(CPlusPlusLanguage);
312*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjCLanguage);
313*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjCPlusPlusLanguage);
314*50c9cd95SJonas Devlieghere 
315*50c9cd95SJonas Devlieghere #if defined(__APPLE__)
316*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderDarwinKernel);
317*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessKDP);
318*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolVendorMacOSX);
319*50c9cd95SJonas Devlieghere #endif
320*50c9cd95SJonas Devlieghere 
321*50c9cd95SJonas Devlieghere #if defined(__FreeBSD__)
322*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessFreeBSD);
323*50c9cd95SJonas Devlieghere #endif
324*50c9cd95SJonas Devlieghere   Debugger::SettingsTerminate();
325*50c9cd95SJonas Devlieghere 
326*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformRemoteGDBServer);
327*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessGDBRemote);
328*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(StructuredDataDarwinLog);
329*50c9cd95SJonas Devlieghere 
330*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderMacOSXDYLD);
331*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderPOSIXDYLD);
332*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderWasmDYLD);
333*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderStatic);
334*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderWindowsDYLD);
335*50c9cd95SJonas Devlieghere 
336*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformFreeBSD);
337*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformLinux);
338*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformNetBSD);
339*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformOpenBSD);
340*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformWindows);
341*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformAndroid);
342*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformMacOSX);
343*50c9cd95SJonas Devlieghere 
344*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileBreakpad);
345*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileELF);
346*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileMachO);
347*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFilePECOFF);
348*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileWasm);
349*50c9cd95SJonas Devlieghere 
350*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectContainerBSDArchive);
351*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectContainerUniversalMachO);
352*50c9cd95SJonas Devlieghere 
353*50c9cd95SJonas Devlieghere #if LLDB_ENABLE_PYTHON
354*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(OperatingSystemPython);
355*50c9cd95SJonas Devlieghere #endif
356*50c9cd95SJonas Devlieghere 
357*50c9cd95SJonas Devlieghere #if LLDB_ENABLE_PYTHON
358*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ScriptInterpreterPython);
359*50c9cd95SJonas Devlieghere #endif
360*50c9cd95SJonas Devlieghere 
361*50c9cd95SJonas Devlieghere #if LLDB_ENABLE_LUA
362*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ScriptInterpreterLua);
363*50c9cd95SJonas Devlieghere #endif
364*50c9cd95SJonas Devlieghere 
365*50c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ScriptInterpreterNone);
366fbb4d1e4SJonas Devlieghere 
367e6e2bb38SZachary Turner   // Now shutdown the common parts, in reverse order.
368e6e2bb38SZachary Turner   SystemInitializerCommon::Terminate();
369e6e2bb38SZachary Turner }
370