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)
29bcde387fSJonas Devlieghere LLDB_PLUGIN_DECLARE(ABIARC)
30bcde387fSJonas Devlieghere LLDB_PLUGIN_DECLARE(ABIHexagon)
3150c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABIMips)
3250c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABIPowerPC)
33bcde387fSJonas Devlieghere LLDB_PLUGIN_DECLARE(ABISystemZ)
3450c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ABIX86)
3550c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectFileBreakpad)
3650c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectFileELF)
37*aa2ae6afSJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectFileJIT)
3850c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectFileMachO)
3950c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectFilePECOFF)
4050c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectFileWasm)
4150c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectContainerBSDArchive)
42ccad1948SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjectContainerMachOArchive)
4350c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ScriptInterpreterNone)
4450c9cd95SJonas Devlieghere #if LLDB_ENABLE_PYTHON
4550c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(OperatingSystemPython)
4650c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ScriptInterpreterPython)
4750c9cd95SJonas Devlieghere #endif
4850c9cd95SJonas Devlieghere #if LLDB_ENABLE_LUA
4950c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ScriptInterpreterLua)
5050c9cd95SJonas Devlieghere #endif
5150c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformFreeBSD)
5250c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformLinux)
5350c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformNetBSD)
5450c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformOpenBSD)
5550c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformWindows)
5650c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformAndroid)
5750c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformMacOSX)
5850c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(TypeSystemClang)
5950c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ArchitectureArm)
6050c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ArchitectureMips)
6150c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ArchitecturePPC64)
6250c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(DisassemblerLLVMC)
6350c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(JITLoaderGDB)
6450c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessElfCore)
6550c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessMachCore)
6650c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessMinidump)
6750c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(MemoryHistoryASan)
6850c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(InstrumentationRuntimeASan)
6950c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(InstrumentationRuntimeTSan)
7050c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(InstrumentationRuntimeUBSan)
7150c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(InstrumentationRuntimeMainThreadChecker)
7250c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolVendorELF)
7350c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolFileBreakpad)
7450c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolFileDWARF)
7550c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolFilePDB)
7650c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolFileSymtab)
7750c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolVendorWasm)
7850c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(UnwindAssemblyInstEmulation)
79ccad1948SJonas Devlieghere LLDB_PLUGIN_DECLARE(UnwindAssemblyX86)
80ccad1948SJonas Devlieghere LLDB_PLUGIN_DECLARE(InstructionARM)
81ccad1948SJonas Devlieghere LLDB_PLUGIN_DECLARE(InstructionARM64)
82ccad1948SJonas Devlieghere LLDB_PLUGIN_DECLARE(InstructionMIPS)
83ccad1948SJonas Devlieghere LLDB_PLUGIN_DECLARE(InstructionMIPS64)
84ccad1948SJonas Devlieghere LLDB_PLUGIN_DECLARE(InstructionPPC64)
85ccad1948SJonas Devlieghere LLDB_PLUGIN_DECLARE(CXXItaniumABI)
8650c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(AppleObjCRuntime)
8750c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(SystemRuntimeMacOSX)
8850c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(RenderScriptRuntime)
8950c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(CPlusPlusLanguage)
9050c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjCLanguage)
9150c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ObjCPlusPlusLanguage)
9250c9cd95SJonas Devlieghere #if defined(_WIN32)
93ccad1948SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessWindowsCommon)
9450c9cd95SJonas Devlieghere #endif
9550c9cd95SJonas Devlieghere #if defined(__FreeBSD__)
9650c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessFreeBSD)
9750c9cd95SJonas Devlieghere #endif
9850c9cd95SJonas Devlieghere #if defined(__APPLE__)
9950c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(SymbolVendorMacOSX)
100ccad1948SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessMacOSXKernel)
10150c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(DynamicLoaderDarwinKernel)
10250c9cd95SJonas Devlieghere #endif
10350c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(StructuredDataDarwinLog)
104ccad1948SJonas Devlieghere LLDB_PLUGIN_DECLARE(PlatformGDB)
10550c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(ProcessGDBRemote)
106*aa2ae6afSJonas Devlieghere LLDB_PLUGIN_DECLARE(DynamicLoaderHexagonDYLD)
10750c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(DynamicLoaderMacOSXDYLD)
108ccad1948SJonas Devlieghere LLDB_PLUGIN_DECLARE(DynamicLoaderPosixDYLD)
10950c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(DynamicLoaderStatic)
11050c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(DynamicLoaderWasmDYLD)
11150c9cd95SJonas Devlieghere LLDB_PLUGIN_DECLARE(DynamicLoaderWindowsDYLD)
1123e70a919SJonas Devlieghere 
113e6e2bb38SZachary Turner using namespace lldb_private;
114e6e2bb38SZachary Turner 
115b9c1b51eSKate Stone SystemInitializerFull::SystemInitializerFull() {}
116e6e2bb38SZachary Turner 
117b9c1b51eSKate Stone SystemInitializerFull::~SystemInitializerFull() {}
118e6e2bb38SZachary Turner 
11950c9cd95SJonas Devlieghere #define LLDB_PROCESS_AArch64(op) op(ABIAArch64);
12050c9cd95SJonas Devlieghere #define LLDB_PROCESS_ARM(op) op(ABIARM);
121bcde387fSJonas Devlieghere #define LLDB_PROCESS_ARC(op) op(ABIARC);
122bcde387fSJonas Devlieghere #define LLDB_PROCESS_Hexagon(op) op(ABIHexagon);
12350c9cd95SJonas Devlieghere #define LLDB_PROCESS_Mips(op) op(ABIMips);
12450c9cd95SJonas Devlieghere #define LLDB_PROCESS_PowerPC(op) op(ABIPowerPC);
125bcde387fSJonas Devlieghere #define LLDB_PROCESS_SystemZ(op) op(ABISystemZ);
12650c9cd95SJonas Devlieghere #define LLDB_PROCESS_X86(op) op(ABIX86);
12750c9cd95SJonas Devlieghere 
12850c9cd95SJonas Devlieghere #define LLDB_PROCESS_AMDGPU(op)
12950c9cd95SJonas Devlieghere #define LLDB_PROCESS_AVR(op)
13050c9cd95SJonas Devlieghere #define LLDB_PROCESS_BPF(op)
13150c9cd95SJonas Devlieghere #define LLDB_PROCESS_Lanai(op)
13250c9cd95SJonas Devlieghere #define LLDB_PROCESS_MSP430(op)
13350c9cd95SJonas Devlieghere #define LLDB_PROCESS_NVPTX(op)
13450c9cd95SJonas Devlieghere #define LLDB_PROCESS_RISCV(op)
13550c9cd95SJonas Devlieghere #define LLDB_PROCESS_Sparc(op)
13650c9cd95SJonas Devlieghere #define LLDB_PROCESS_WebAssembly(op)
13750c9cd95SJonas Devlieghere #define LLDB_PROCESS_XCore(op)
13850c9cd95SJonas Devlieghere 
139936c6242SJonas Devlieghere llvm::Error SystemInitializerFull::Initialize() {
140936c6242SJonas Devlieghere   if (auto e = SystemInitializerCommon::Initialize())
14115eacd74SJonas Devlieghere     return e;
142fa3fa5b9SPavel Labath 
14350c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileBreakpad);
14450c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileELF);
145*aa2ae6afSJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileJIT);
14650c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileMachO);
14750c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFilePECOFF);
14850c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectFileWasm);
14950c9cd95SJonas Devlieghere 
15050c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectContainerBSDArchive);
151ccad1948SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjectContainerMachOArchive);
15250c9cd95SJonas Devlieghere 
15350c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ScriptInterpreterNone);
15450c9cd95SJonas Devlieghere 
15550c9cd95SJonas Devlieghere #if LLDB_ENABLE_PYTHON
15650c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(OperatingSystemPython);
15750c9cd95SJonas Devlieghere #endif
15850c9cd95SJonas Devlieghere 
15950c9cd95SJonas Devlieghere #if LLDB_ENABLE_PYTHON
16050c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ScriptInterpreterPython);
16150c9cd95SJonas Devlieghere #endif
16250c9cd95SJonas Devlieghere 
16350c9cd95SJonas Devlieghere #if LLDB_ENABLE_LUA
16450c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ScriptInterpreterLua);
16550c9cd95SJonas Devlieghere #endif
16650c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformFreeBSD);
16750c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformLinux);
16850c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformNetBSD);
16950c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformOpenBSD);
17050c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformWindows);
17150c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformAndroid);
17250c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformMacOSX);
17350c9cd95SJonas Devlieghere 
174e6e2bb38SZachary Turner   // Initialize LLVM and Clang
175e6e2bb38SZachary Turner   llvm::InitializeAllTargets();
176e6e2bb38SZachary Turner   llvm::InitializeAllAsmPrinters();
177e6e2bb38SZachary Turner   llvm::InitializeAllTargetMCs();
178e6e2bb38SZachary Turner   llvm::InitializeAllDisassemblers();
179e6e2bb38SZachary Turner 
18050c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(TypeSystemClang);
18156939cb3SGreg Clayton 
18250c9cd95SJonas Devlieghere #define LLVM_TARGET(t) LLDB_PROCESS_##t(LLDB_PLUGIN_INITIALIZE)
18350c9cd95SJonas Devlieghere #include "llvm/Config/Targets.def"
18450c9cd95SJonas Devlieghere 
18550c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ArchitectureArm);
18650c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ArchitectureMips);
18750c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ArchitecturePPC64);
18850c9cd95SJonas Devlieghere 
18950c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DisassemblerLLVMC);
19050c9cd95SJonas Devlieghere 
19150c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(JITLoaderGDB);
19250c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessElfCore);
19350c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessMachCore);
19450c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessMinidump);
19550c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(MemoryHistoryASan);
19650c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeASan);
19750c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeTSan);
19850c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeUBSan);
19950c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeMainThreadChecker);
20050c9cd95SJonas Devlieghere 
20150c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolVendorELF);
20250c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFileBreakpad);
20350c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFileDWARF);
20450c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFilePDB);
20550c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolFileSymtab);
20650c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolVendorWasm);
20750c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(UnwindAssemblyInstEmulation);
208ccad1948SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(UnwindAssemblyX86);
20950c9cd95SJonas Devlieghere 
210ccad1948SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstructionARM);
211ccad1948SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstructionARM64);
212ccad1948SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstructionMIPS);
213ccad1948SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstructionMIPS64);
214ccad1948SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(InstructionPPC64);
21550c9cd95SJonas Devlieghere 
216ccad1948SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(CXXItaniumABI);
21750c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(AppleObjCRuntime);
21850c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SystemRuntimeMacOSX);
21950c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(RenderScriptRuntime);
22050c9cd95SJonas Devlieghere 
22150c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(CPlusPlusLanguage);
22250c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjCLanguage);
22350c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ObjCPlusPlusLanguage);
22450c9cd95SJonas Devlieghere 
22550c9cd95SJonas Devlieghere #if defined(_WIN32)
226ccad1948SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessWindowsCommon);
22750c9cd95SJonas Devlieghere #endif
22850c9cd95SJonas Devlieghere #if defined(__FreeBSD__)
22950c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessFreeBSD);
23050c9cd95SJonas Devlieghere #endif
23150c9cd95SJonas Devlieghere #if defined(__APPLE__)
23250c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(SymbolVendorMacOSX);
233ccad1948SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessMacOSXKernel);
23450c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderDarwinKernel);
23550c9cd95SJonas Devlieghere #endif
23650c9cd95SJonas Devlieghere 
23750c9cd95SJonas Devlieghere   // This plugin is valid on any host that talks to a Darwin remote. It
23850c9cd95SJonas Devlieghere   // shouldn't be limited to __APPLE__.
23950c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(StructuredDataDarwinLog);
24050c9cd95SJonas Devlieghere 
24150c9cd95SJonas Devlieghere   // Platform agnostic plugins
242ccad1948SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(PlatformGDB);
24350c9cd95SJonas Devlieghere 
24450c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(ProcessGDBRemote);
245*aa2ae6afSJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderHexagonDYLD);
24650c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderMacOSXDYLD);
247ccad1948SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderPosixDYLD);
24850c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderWasmDYLD); // Before DynamicLoaderStatic.
24950c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderStatic);
25050c9cd95SJonas Devlieghere   LLDB_PLUGIN_INITIALIZE(DynamicLoaderWindowsDYLD);
25150c9cd95SJonas Devlieghere 
25250c9cd95SJonas Devlieghere   // Scan for any system or user LLDB plug-ins
253e6e2bb38SZachary Turner   PluginManager::Initialize();
254e6e2bb38SZachary Turner 
25505097246SAdrian Prantl   // The process settings need to know about installed plug-ins, so the
25650c9cd95SJonas Devlieghere   // Settings must be initialized
25750c9cd95SJonas Devlieghere   // AFTER PluginManager::Initialize is called.
25850c9cd95SJonas Devlieghere 
259e6e2bb38SZachary Turner   Debugger::SettingsInitialize();
26015eacd74SJonas Devlieghere 
26115eacd74SJonas Devlieghere   return llvm::Error::success();
262e6e2bb38SZachary Turner }
263e6e2bb38SZachary Turner 
264b9c1b51eSKate Stone void SystemInitializerFull::Terminate() {
265f9d16476SPavel Labath   static Timer::Category func_cat(LLVM_PRETTY_FUNCTION);
266f9d16476SPavel Labath   Timer scoped_timer(func_cat, LLVM_PRETTY_FUNCTION);
267e6e2bb38SZachary Turner 
268e6e2bb38SZachary Turner   Debugger::SettingsTerminate();
269e6e2bb38SZachary Turner 
27050c9cd95SJonas Devlieghere   // Terminate and unload and loaded system or user LLDB plug-ins
271e6e2bb38SZachary Turner   PluginManager::Terminate();
27256939cb3SGreg Clayton 
27350c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(TypeSystemClang);
27450c9cd95SJonas Devlieghere 
27550c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ArchitectureArm);
27650c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ArchitectureMips);
27750c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ArchitecturePPC64);
27850c9cd95SJonas Devlieghere 
27950c9cd95SJonas Devlieghere #define LLVM_TARGET(t) LLDB_PROCESS_##t(LLDB_PLUGIN_TERMINATE)
28050c9cd95SJonas Devlieghere #include "llvm/Config/Targets.def"
28150c9cd95SJonas Devlieghere 
28250c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DisassemblerLLVMC);
28350c9cd95SJonas Devlieghere 
28450c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(JITLoaderGDB);
28550c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessElfCore);
28650c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessMachCore);
28750c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessMinidump);
28850c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(MemoryHistoryASan);
28950c9cd95SJonas Devlieghere 
29050c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeASan);
29150c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeTSan);
29250c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeUBSan);
29350c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeMainThreadChecker);
29450c9cd95SJonas Devlieghere 
29550c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolVendorWasm);
29650c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolVendorELF);
29750c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFileBreakpad);
29850c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFileDWARF);
29950c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFilePDB);
30050c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolFileSymtab);
301ccad1948SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(UnwindAssemblyX86);
30250c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(UnwindAssemblyInstEmulation);
30350c9cd95SJonas Devlieghere 
304ccad1948SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstructionARM);
305ccad1948SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstructionARM64);
306ccad1948SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstructionMIPS);
307ccad1948SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstructionMIPS64);
308ccad1948SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(InstructionPPC64);
30950c9cd95SJonas Devlieghere 
310ccad1948SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(CXXItaniumABI);
31150c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(AppleObjCRuntime);
31250c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SystemRuntimeMacOSX);
31350c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(RenderScriptRuntime);
31450c9cd95SJonas Devlieghere 
31550c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(CPlusPlusLanguage);
31650c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjCLanguage);
31750c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjCPlusPlusLanguage);
31850c9cd95SJonas Devlieghere 
31950c9cd95SJonas Devlieghere #if defined(__APPLE__)
32050c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderDarwinKernel);
321ccad1948SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessMacOSXKernel);
32250c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(SymbolVendorMacOSX);
32350c9cd95SJonas Devlieghere #endif
32450c9cd95SJonas Devlieghere 
32550c9cd95SJonas Devlieghere #if defined(__FreeBSD__)
32650c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessFreeBSD);
32750c9cd95SJonas Devlieghere #endif
32850c9cd95SJonas Devlieghere   Debugger::SettingsTerminate();
32950c9cd95SJonas Devlieghere 
330ccad1948SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformGDB);
33150c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ProcessGDBRemote);
33250c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(StructuredDataDarwinLog);
33350c9cd95SJonas Devlieghere 
334*aa2ae6afSJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderHexagonDYLD);
33550c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderMacOSXDYLD);
336ccad1948SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderPosixDYLD);
33750c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderWasmDYLD);
33850c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderStatic);
33950c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(DynamicLoaderWindowsDYLD);
34050c9cd95SJonas Devlieghere 
34150c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformFreeBSD);
34250c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformLinux);
34350c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformNetBSD);
34450c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformOpenBSD);
34550c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformWindows);
34650c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformAndroid);
34750c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(PlatformMacOSX);
34850c9cd95SJonas Devlieghere 
34950c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileBreakpad);
35050c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileELF);
351*aa2ae6afSJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileJIT);
35250c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileMachO);
35350c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFilePECOFF);
35450c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectFileWasm);
35550c9cd95SJonas Devlieghere 
35650c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectContainerBSDArchive);
357ccad1948SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ObjectContainerMachOArchive);
35850c9cd95SJonas Devlieghere 
35950c9cd95SJonas Devlieghere #if LLDB_ENABLE_PYTHON
36050c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(OperatingSystemPython);
36150c9cd95SJonas Devlieghere #endif
36250c9cd95SJonas Devlieghere 
36350c9cd95SJonas Devlieghere #if LLDB_ENABLE_PYTHON
36450c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ScriptInterpreterPython);
36550c9cd95SJonas Devlieghere #endif
36650c9cd95SJonas Devlieghere 
36750c9cd95SJonas Devlieghere #if LLDB_ENABLE_LUA
36850c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ScriptInterpreterLua);
36950c9cd95SJonas Devlieghere #endif
37050c9cd95SJonas Devlieghere 
37150c9cd95SJonas Devlieghere   LLDB_PLUGIN_TERMINATE(ScriptInterpreterNone);
372fbb4d1e4SJonas Devlieghere 
373e6e2bb38SZachary Turner   // Now shutdown the common parts, in reverse order.
374e6e2bb38SZachary Turner   SystemInitializerCommon::Terminate();
375e6e2bb38SZachary Turner }
376