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*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABIMacOSX_arm64);
28*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABISysV_arm64);
29*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABIMacOSX_arm);
30*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABISysV_arm);
31*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABISysV_arc);
32*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABISysV_hexagon);
33*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABISysV_mips);
34*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABISysV_mips64);
35*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABISysV_ppc);
36*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABISysV_ppc64);
37*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABISysV_s390x);
38*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABIMacOSX_i386);
39*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABISysV_i386);
40*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABISysV_x86_64);
41*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABIWindows_x86_64);
42*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectFileBreakpad);
43*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectFileELF);
44*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectFileMachO);
45*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectFilePECOFF);
46*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectFileWasm);
47*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectContainerBSDArchive);
48*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectContainerUniversalMachO);
49*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ScriptInterpreterNone);
50*3e70a919SJonas Devlieghere #if LLDB_ENABLE_PYTHON
51*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(OperatingSystemPython);
52*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ScriptInterpreterPython);
53*3e70a919SJonas Devlieghere #endif
54*3e70a919SJonas Devlieghere #if LLDB_ENABLE_LUA
55*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ScriptInterpreterLua);
56*3e70a919SJonas Devlieghere #endif
57*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformFreeBSD);
58*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformLinux);
59*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformNetBSD);
60*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformOpenBSD);
61*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformWindows);
62*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformAndroid);
63*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformRemoteiOS);
64*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformMacOSX);
65*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(TypeSystemClang);
66*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ArchitectureArm);
67*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ArchitectureMips);
68*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ArchitecturePPC64);
69*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(DisassemblerLLVMC);
70*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(JITLoaderGDB);
71*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessElfCore);
72*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessMachCore);
73*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessMinidump);
74*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(MemoryHistoryASan);
75*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(InstrumentationRuntimeASan);
76*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(InstrumentationRuntimeTSan);
77*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(InstrumentationRuntimeUBSan);
78*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(InstrumentationRuntimeMainThreadChecker);
79*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolVendorELF);
80*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolFileBreakpad);
81*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolFileDWARF);
82*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolFilePDB);
83*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolFileSymtab);
84*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolVendorWasm);
85*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(UnwindAssemblyInstEmulation);
86*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(UnwindAssembly_x86);
87*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(EmulateInstructionARM);
88*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(EmulateInstructionARM64);
89*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(EmulateInstructionMIPS);
90*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(EmulateInstructionMIPS64);
91*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(EmulateInstructionPPC64);
92*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolFileDWARFDebugMap);
93*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ItaniumABILanguageRuntime);
94*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(AppleObjCRuntime);
95*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(SystemRuntimeMacOSX);
96*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(RenderScriptRuntime);
97*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(CPlusPlusLanguage);
98*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjCLanguage);
99*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjCPlusPlusLanguage);
100*3e70a919SJonas Devlieghere #if defined(_WIN32)
101*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessWindows);
102*3e70a919SJonas Devlieghere #endif
103*3e70a919SJonas Devlieghere #if defined(__FreeBSD__)
104*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessFreeBSD);
105*3e70a919SJonas Devlieghere #endif
106*3e70a919SJonas Devlieghere #if defined(__APPLE__)
107*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolVendorMacOSX);
108*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessKDP);
109*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(DynamicLoaderDarwinKernel);
110*3e70a919SJonas Devlieghere #endif
111*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(StructuredDataDarwinLog);
112*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformRemoteGDBServer);
113*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessGDBRemote);
114*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(DynamicLoaderMacOSXDYLD);
115*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(DynamicLoaderMacOS);
116*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(DynamicLoaderPOSIXDYLD);
117*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(DynamicLoaderStatic);
118*3e70a919SJonas Devlieghere LLDB_PLUGIN_DECLARE(DynamicLoaderWindowsDYLD);
119*3e70a919SJonas Devlieghere 
120e6e2bb38SZachary Turner using namespace lldb_private;
121e6e2bb38SZachary Turner 
122b9c1b51eSKate Stone SystemInitializerFull::SystemInitializerFull() {}
123e6e2bb38SZachary Turner 
124b9c1b51eSKate Stone SystemInitializerFull::~SystemInitializerFull() {}
125e6e2bb38SZachary Turner 
1268865ebb5SPavel Labath #define LLDB_PROCESS_AArch64(op)                                               \
127fbb4d1e4SJonas Devlieghere   op(ABIMacOSX_arm64);                                                         \
128fbb4d1e4SJonas Devlieghere   op(ABISysV_arm64);
1298865ebb5SPavel Labath #define LLDB_PROCESS_ARM(op)                                                   \
130fbb4d1e4SJonas Devlieghere   op(ABIMacOSX_arm);                                                           \
131fbb4d1e4SJonas Devlieghere   op(ABISysV_arm);
132fbb4d1e4SJonas Devlieghere #define LLDB_PROCESS_ARC(op) op(ABISysV_arc);
133fbb4d1e4SJonas Devlieghere #define LLDB_PROCESS_Hexagon(op) op(ABISysV_hexagon);
1348865ebb5SPavel Labath #define LLDB_PROCESS_Mips(op)                                                  \
135fbb4d1e4SJonas Devlieghere   op(ABISysV_mips);                                                            \
136fbb4d1e4SJonas Devlieghere   op(ABISysV_mips64);
1378865ebb5SPavel Labath #define LLDB_PROCESS_PowerPC(op)                                               \
138fbb4d1e4SJonas Devlieghere   op(ABISysV_ppc);                                                             \
139fbb4d1e4SJonas Devlieghere   op(ABISysV_ppc64);
140fbb4d1e4SJonas Devlieghere #define LLDB_PROCESS_SystemZ(op) op(ABISysV_s390x);
1418865ebb5SPavel Labath #define LLDB_PROCESS_X86(op)                                                   \
142fbb4d1e4SJonas Devlieghere   op(ABIMacOSX_i386);                                                          \
143fbb4d1e4SJonas Devlieghere   op(ABISysV_i386);                                                            \
144fbb4d1e4SJonas Devlieghere   op(ABISysV_x86_64);                                                          \
145fbb4d1e4SJonas Devlieghere   op(ABIWindows_x86_64);
1468865ebb5SPavel Labath 
1478865ebb5SPavel Labath #define LLDB_PROCESS_AMDGPU(op)
148e8f06131SPavel Labath #define LLDB_PROCESS_AVR(op)
1498865ebb5SPavel Labath #define LLDB_PROCESS_BPF(op)
1508865ebb5SPavel Labath #define LLDB_PROCESS_Lanai(op)
1518865ebb5SPavel Labath #define LLDB_PROCESS_MSP430(op)
1528865ebb5SPavel Labath #define LLDB_PROCESS_NVPTX(op)
1538865ebb5SPavel Labath #define LLDB_PROCESS_RISCV(op)
1548865ebb5SPavel Labath #define LLDB_PROCESS_Sparc(op)
1558865ebb5SPavel Labath #define LLDB_PROCESS_WebAssembly(op)
1568865ebb5SPavel Labath #define LLDB_PROCESS_XCore(op)
1578865ebb5SPavel Labath 
158936c6242SJonas Devlieghere llvm::Error SystemInitializerFull::Initialize() {
159936c6242SJonas Devlieghere   if (auto e = SystemInitializerCommon::Initialize())
16015eacd74SJonas Devlieghere     return e;
161fa3fa5b9SPavel Labath 
162fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileBreakpad);
163fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileELF);
164fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileMachO);
165fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFilePECOFF);
166fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileWasm);
167fa3fa5b9SPavel Labath 
168fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectContainerBSDArchive);
169fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectContainerUniversalMachO);
170c7c3cf68SSaleem Abdulrasool 
171fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ScriptInterpreterNone);
1722c1f46dcSZachary Turner 
1734e26cf2cSJonas Devlieghere #if LLDB_ENABLE_PYTHON
174fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(OperatingSystemPython);
175a7760cb5SPavel Labath #endif
176a7760cb5SPavel Labath 
1774e26cf2cSJonas Devlieghere #if LLDB_ENABLE_PYTHON
178fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ScriptInterpreterPython);
1792c1f46dcSZachary Turner #endif
180e6e2bb38SZachary Turner 
18167de8962SJonas Devlieghere #if LLDB_ENABLE_LUA
182fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ScriptInterpreterLua);
18367de8962SJonas Devlieghere #endif
184fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformFreeBSD);
185fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformLinux);
186fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformNetBSD);
187fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformOpenBSD);
188fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformWindows);
189fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformAndroid);
190fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformRemoteiOS);
191fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformMacOSX);
192f1763537SPavel Labath 
193e6e2bb38SZachary Turner   // Initialize LLVM and Clang
194e6e2bb38SZachary Turner   llvm::InitializeAllTargets();
195e6e2bb38SZachary Turner   llvm::InitializeAllAsmPrinters();
196e6e2bb38SZachary Turner   llvm::InitializeAllTargetMCs();
197e6e2bb38SZachary Turner   llvm::InitializeAllDisassemblers();
198e6e2bb38SZachary Turner 
199fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(TypeSystemClang);
20056939cb3SGreg Clayton 
201fbb4d1e4SJonas Devlieghere #define LLVM_TARGET(t) LLDB_PROCESS_##t(LLDB_PLUGIN_INITIALIZE)
2028865ebb5SPavel Labath #include "llvm/Config/Targets.def"
20313e37d4dSPavel Labath 
204fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ArchitectureArm);
205fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ArchitectureMips);
206fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ArchitecturePPC64);
20713e37d4dSPavel Labath 
208fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DisassemblerLLVMC);
209e6e2bb38SZachary Turner 
210fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(JITLoaderGDB);
211fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessElfCore);
212fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessMachCore);
213fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessMinidump);
214fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(MemoryHistoryASan);
215fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeASan);
216fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeTSan);
217fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeUBSan);
218fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeMainThreadChecker);
219e6e2bb38SZachary Turner 
220fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolVendorELF);
221fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFileBreakpad);
222fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFileDWARF);
223fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFilePDB);
224fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFileSymtab);
225fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolVendorWasm);
226fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(UnwindAssemblyInstEmulation);
227fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(UnwindAssembly_x86);
228e24d8c55SSaleem Abdulrasool 
229fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(EmulateInstructionARM);
230fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(EmulateInstructionARM64);
231fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(EmulateInstructionMIPS);
232fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(EmulateInstructionMIPS64);
233fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(EmulateInstructionPPC64);
234e24d8c55SSaleem Abdulrasool 
235fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFileDWARFDebugMap);
236fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ItaniumABILanguageRuntime);
237fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(AppleObjCRuntime);
238fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SystemRuntimeMacOSX);
239fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(RenderScriptRuntime);
240e6e2bb38SZachary Turner 
241fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(CPlusPlusLanguage);
242fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjCLanguage);
243fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjCPlusPlusLanguage);
244980c0484SEnrico Granata 
245f6ee79c9SHafiz Abid Qadeer #if defined(_WIN32)
246fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessWindows);
247e6e2bb38SZachary Turner #endif
248e6e2bb38SZachary Turner #if defined(__FreeBSD__)
249fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessFreeBSD);
250e6e2bb38SZachary Turner #endif
251e6e2bb38SZachary Turner #if defined(__APPLE__)
252fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolVendorMacOSX);
253fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessKDP);
254fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderDarwinKernel);
255e6e2bb38SZachary Turner #endif
25675930019STodd Fiala 
25705097246SAdrian Prantl   // This plugin is valid on any host that talks to a Darwin remote. It
25805097246SAdrian Prantl   // shouldn't be limited to __APPLE__.
259fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(StructuredDataDarwinLog);
26075930019STodd Fiala 
261e6e2bb38SZachary Turner   // Platform agnostic plugins
262fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformRemoteGDBServer);
263e6e2bb38SZachary Turner 
264fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessGDBRemote);
265fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderMacOSXDYLD);
266fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderMacOS);
267fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderPOSIXDYLD);
268fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderStatic);
269fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderWindowsDYLD);
270e6e2bb38SZachary Turner 
271e6e2bb38SZachary Turner   // Scan for any system or user LLDB plug-ins
272e6e2bb38SZachary Turner   PluginManager::Initialize();
273e6e2bb38SZachary Turner 
27405097246SAdrian Prantl   // The process settings need to know about installed plug-ins, so the
27505097246SAdrian Prantl   // Settings must be initialized
276e6e2bb38SZachary Turner   // AFTER PluginManager::Initialize is called.
277e6e2bb38SZachary Turner 
278e6e2bb38SZachary Turner   Debugger::SettingsInitialize();
27915eacd74SJonas Devlieghere 
28015eacd74SJonas Devlieghere   return llvm::Error::success();
281e6e2bb38SZachary Turner }
282e6e2bb38SZachary Turner 
283b9c1b51eSKate Stone void SystemInitializerFull::Terminate() {
284f9d16476SPavel Labath   static Timer::Category func_cat(LLVM_PRETTY_FUNCTION);
285f9d16476SPavel Labath   Timer scoped_timer(func_cat, LLVM_PRETTY_FUNCTION);
286e6e2bb38SZachary Turner 
287e6e2bb38SZachary Turner   Debugger::SettingsTerminate();
288e6e2bb38SZachary Turner 
289e6e2bb38SZachary Turner   // Terminate and unload and loaded system or user LLDB plug-ins
290e6e2bb38SZachary Turner   PluginManager::Terminate();
29156939cb3SGreg Clayton 
292fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(TypeSystemClang);
29356939cb3SGreg Clayton 
294fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ArchitectureArm);
295fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ArchitectureMips);
296fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ArchitecturePPC64);
29798fc5487STatyana Krasnukha 
298fbb4d1e4SJonas Devlieghere #define LLVM_TARGET(t) LLDB_PROCESS_##t(LLDB_PLUGIN_TERMINATE)
2998865ebb5SPavel Labath #include "llvm/Config/Targets.def"
300d0b44dbeSPavel Labath 
301fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DisassemblerLLVMC);
302e6e2bb38SZachary Turner 
303fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(JITLoaderGDB);
304fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessElfCore);
305fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessMachCore);
306fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessMinidump);
307fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(MemoryHistoryASan);
308fc1e8551SJonas Devlieghere 
309fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeASan);
310fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeTSan);
311fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeUBSan);
312fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeMainThreadChecker);
313e24d8c55SSaleem Abdulrasool 
314fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolVendorWasm);
315fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolVendorELF);
316fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFileBreakpad);
317fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFileDWARF);
318fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFilePDB);
319fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFileSymtab);
320fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(UnwindAssembly_x86);
321fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(UnwindAssemblyInstEmulation);
322e24d8c55SSaleem Abdulrasool 
323fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(EmulateInstructionARM);
324fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(EmulateInstructionARM64);
325fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(EmulateInstructionMIPS);
326fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(EmulateInstructionMIPS64);
327fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(EmulateInstructionPPC64);
328e6e2bb38SZachary Turner 
329fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFileDWARFDebugMap);
330fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ItaniumABILanguageRuntime);
331fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(AppleObjCRuntime);
332fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SystemRuntimeMacOSX);
333fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(RenderScriptRuntime);
334fbb4d1e4SJonas Devlieghere 
335fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(CPlusPlusLanguage);
336fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjCLanguage);
337fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjCPlusPlusLanguage);
338980c0484SEnrico Granata 
339e6e2bb38SZachary Turner #if defined(__APPLE__)
340fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderDarwinKernel);
341fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessKDP);
342fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolVendorMacOSX);
343e6e2bb38SZachary Turner #endif
344e6e2bb38SZachary Turner 
345e6e2bb38SZachary Turner #if defined(__FreeBSD__)
346fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessFreeBSD);
347e6e2bb38SZachary Turner #endif
348e6e2bb38SZachary Turner   Debugger::SettingsTerminate();
349e6e2bb38SZachary Turner 
350fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformRemoteGDBServer);
351fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessGDBRemote);
352fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(StructuredDataDarwinLog);
35375930019STodd Fiala 
354fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderMacOSXDYLD);
355fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderMacOS);
356fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderPOSIXDYLD);
357fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderStatic);
358fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderWindowsDYLD);
359e6e2bb38SZachary Turner 
360fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformFreeBSD);
361fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformLinux);
362fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformNetBSD);
363fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformOpenBSD);
364fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformWindows);
365fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformAndroid);
366fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformRemoteiOS);
367fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformMacOSX);
368f1763537SPavel Labath 
369fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileBreakpad);
370fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileELF);
371fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileMachO);
372fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFilePECOFF);
373fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileWasm);
374fa3fa5b9SPavel Labath 
375fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectContainerBSDArchive);
376fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectContainerUniversalMachO);
377c7c3cf68SSaleem Abdulrasool 
378f2d41ad0SRaphael Isemann #if LLDB_ENABLE_PYTHON
379fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(OperatingSystemPython);
380f2d41ad0SRaphael Isemann #endif
381f2d41ad0SRaphael Isemann 
382f2d41ad0SRaphael Isemann #if LLDB_ENABLE_PYTHON
383fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ScriptInterpreterPython);
384f2d41ad0SRaphael Isemann #endif
385f2d41ad0SRaphael Isemann 
386f2d41ad0SRaphael Isemann #if LLDB_ENABLE_LUA
387fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ScriptInterpreterLua);
388f2d41ad0SRaphael Isemann #endif
389f2d41ad0SRaphael Isemann 
390fbb4d1e4SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ScriptInterpreterNone);
391fbb4d1e4SJonas Devlieghere 
392e6e2bb38SZachary Turner   // Now shutdown the common parts, in reverse order.
393e6e2bb38SZachary Turner   SystemInitializerCommon::Terminate();
394e6e2bb38SZachary Turner }
395