SystemInitializerFull.cpp revision 360784
190075Sobrien//===-- SystemInitializerFull.cpp -------------------------------*- C++ -*-===// 290075Sobrien// 390075Sobrien// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 490075Sobrien// See https://llvm.org/LICENSE.txt for license information. 590075Sobrien// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 690075Sobrien// 790075Sobrien//===----------------------------------------------------------------------===// 890075Sobrien 990075Sobrien#include "SystemInitializerFull.h" 1090075Sobrien#include "lldb/API/SBCommandInterpreter.h" 1190075Sobrien#include "lldb/Host/Config.h" 1290075Sobrien 1390075Sobrien#if LLDB_ENABLE_PYTHON 1490075Sobrien#include "Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h" 1590075Sobrien#endif 1690075Sobrien 1790075Sobrien#if LLDB_ENABLE_LUA 1890075Sobrien#include "Plugins/ScriptInterpreter/Lua/ScriptInterpreterLua.h" 1990075Sobrien#endif 2090075Sobrien 2190075Sobrien#include "lldb/Core/Debugger.h" 2290075Sobrien#include "lldb/Host/Host.h" 2390075Sobrien#include "lldb/Initialization/SystemInitializerCommon.h" 2490075Sobrien#include "lldb/Interpreter/CommandInterpreter.h" 2590075Sobrien#include "lldb/Symbol/ClangASTContext.h" 2690075Sobrien#include "lldb/Utility/Timer.h" 2790075Sobrien 2890075Sobrien#ifdef LLDB_ENABLE_ALL 2990075Sobrien#include "Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.h" 3090075Sobrien#include "Plugins/ABI/MacOSX-arm64/ABIMacOSX_arm64.h" 3190075Sobrien#include "Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.h" 3290075Sobrien#include "Plugins/ABI/SysV-arc/ABISysV_arc.h" 3390075Sobrien#endif // LLDB_ENABLE_ALL 3490075Sobrien#include "Plugins/ABI/SysV-arm/ABISysV_arm.h" 3590075Sobrien#include "Plugins/ABI/SysV-arm64/ABISysV_arm64.h" 3690075Sobrien#ifdef LLDB_ENABLE_ALL 3790075Sobrien#include "Plugins/ABI/SysV-hexagon/ABISysV_hexagon.h" 3890075Sobrien#endif // LLDB_ENABLE_ALL 3990075Sobrien#include "Plugins/ABI/SysV-i386/ABISysV_i386.h" 4090075Sobrien#include "Plugins/ABI/SysV-mips/ABISysV_mips.h" 4190075Sobrien#include "Plugins/ABI/SysV-mips64/ABISysV_mips64.h" 4290075Sobrien#include "Plugins/ABI/SysV-ppc/ABISysV_ppc.h" 4390075Sobrien#include "Plugins/ABI/SysV-ppc64/ABISysV_ppc64.h" 4490075Sobrien#ifdef LLDB_ENABLE_ALL 4590075Sobrien#include "Plugins/ABI/SysV-s390x/ABISysV_s390x.h" 4696263Sobrien#endif // LLDB_ENABLE_ALL 4790075Sobrien#include "Plugins/ABI/SysV-x86_64/ABISysV_x86_64.h" 4890075Sobrien#ifdef LLDB_ENABLE_ALL 4990075Sobrien#include "Plugins/ABI/Windows-x86_64/ABIWindows_x86_64.h" 5090075Sobrien#endif // LLDB_ENABLE_ALL 5190075Sobrien#include "Plugins/Architecture/Arm/ArchitectureArm.h" 5290075Sobrien#include "Plugins/Architecture/Mips/ArchitectureMips.h" 5390075Sobrien#include "Plugins/Architecture/PPC64/ArchitecturePPC64.h" 5490075Sobrien#include "Plugins/Disassembler/llvm/DisassemblerLLVMC.h" 5590075Sobrien#ifdef LLDB_ENABLE_ALL 5690075Sobrien#include "Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOS.h" 5790075Sobrien#include "Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.h" 5890075Sobrien#endif // LLDB_ENABLE_ALL 5990075Sobrien#include "Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.h" 6090075Sobrien#include "Plugins/DynamicLoader/Static/DynamicLoaderStatic.h" 6190075Sobrien#ifdef LLDB_ENABLE_ALL 6290075Sobrien#include "Plugins/DynamicLoader/Windows-DYLD/DynamicLoaderWindowsDYLD.h" 6390075Sobrien#endif // LLDB_ENABLE_ALL 6490075Sobrien#include "Plugins/Instruction/ARM/EmulateInstructionARM.h" 6590075Sobrien#include "Plugins/Instruction/ARM64/EmulateInstructionARM64.h" 6690075Sobrien#include "Plugins/Instruction/MIPS/EmulateInstructionMIPS.h" 6790075Sobrien#include "Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.h" 6890075Sobrien#include "Plugins/Instruction/PPC64/EmulateInstructionPPC64.h" 6990075Sobrien#include "Plugins/InstrumentationRuntime/ASan/ASanRuntime.h" 7090075Sobrien#include "Plugins/InstrumentationRuntime/MainThreadChecker/MainThreadCheckerRuntime.h" 7190075Sobrien#ifdef LLDB_ENABLE_ALL 7290075Sobrien#include "Plugins/InstrumentationRuntime/TSan/TSanRuntime.h" 7390075Sobrien#endif // LLDB_ENABLE_ALL 7490075Sobrien#include "Plugins/InstrumentationRuntime/UBSan/UBSanRuntime.h" 7590075Sobrien#include "Plugins/JITLoader/GDB/JITLoaderGDB.h" 7690075Sobrien#include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h" 7790075Sobrien#ifdef LLDB_ENABLE_ALL 7890075Sobrien#include "Plugins/Language/ObjC/ObjCLanguage.h" 7990075Sobrien#include "Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.h" 8090075Sobrien#endif // LLDB_ENABLE_ALL 8190075Sobrien#include "Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.h" 8290075Sobrien#ifdef LLDB_ENABLE_ALL 8390075Sobrien#include "Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h" 8490075Sobrien#include "Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h" 8590075Sobrien#include "Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.h" 8690075Sobrien#endif // LLDB_ENABLE_ALL 8790075Sobrien#include "Plugins/MemoryHistory/asan/MemoryHistoryASan.h" 8890075Sobrien#include "Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.h" 8990075Sobrien#ifdef LLDB_ENABLE_ALL 9090075Sobrien#include "Plugins/ObjectContainer/Universal-Mach-O/ObjectContainerUniversalMachO.h" 9190075Sobrien#endif // LLDB_ENABLE_ALL 9290075Sobrien#include "Plugins/ObjectFile/Breakpad/ObjectFileBreakpad.h" 9390075Sobrien#include "Plugins/ObjectFile/ELF/ObjectFileELF.h" 9490075Sobrien#ifdef LLDB_ENABLE_ALL 9590075Sobrien#include "Plugins/ObjectFile/Mach-O/ObjectFileMachO.h" 9690075Sobrien#include "Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h" 9790075Sobrien#include "Plugins/OperatingSystem/Python/OperatingSystemPython.h" 9890075Sobrien#include "Plugins/Platform/Android/PlatformAndroid.h" 9990075Sobrien#endif // LLDB_ENABLE_ALL 10090075Sobrien#include "Plugins/Platform/FreeBSD/PlatformFreeBSD.h" 10190075Sobrien#ifdef LLDB_ENABLE_ALL 10290075Sobrien#include "Plugins/Platform/Linux/PlatformLinux.h" 10390075Sobrien#include "Plugins/Platform/MacOSX/PlatformMacOSX.h" 10490075Sobrien#include "Plugins/Platform/MacOSX/PlatformRemoteiOS.h" 10590075Sobrien#include "Plugins/Platform/NetBSD/PlatformNetBSD.h" 10690075Sobrien#include "Plugins/Platform/OpenBSD/PlatformOpenBSD.h" 10790075Sobrien#include "Plugins/Platform/Windows/PlatformWindows.h" 10890075Sobrien#endif // LLDB_ENABLE_ALL 10990075Sobrien#include "Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h" 11090075Sobrien#include "Plugins/Process/elf-core/ProcessElfCore.h" 11190075Sobrien#include "Plugins/Process/gdb-remote/ProcessGDBRemote.h" 11290075Sobrien#ifdef LLDB_ENABLE_ALL 11390075Sobrien#include "Plugins/Process/mach-core/ProcessMachCore.h" 11490075Sobrien#include "Plugins/Process/minidump/ProcessMinidump.h" 11590075Sobrien#endif // LLDB_ENABLE_ALL 11690075Sobrien#include "Plugins/ScriptInterpreter/None/ScriptInterpreterNone.h" 11790075Sobrien#include "Plugins/SymbolFile/Breakpad/SymbolFileBreakpad.h" 11890075Sobrien#include "Plugins/SymbolFile/DWARF/SymbolFileDWARF.h" 11990075Sobrien#include "Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h" 12090075Sobrien#ifdef LLDB_ENABLE_ALL 12190075Sobrien#include "Plugins/SymbolFile/PDB/SymbolFilePDB.h" 12290075Sobrien#endif // LLDB_ENABLE_ALL 12390075Sobrien#include "Plugins/SymbolFile/Symtab/SymbolFileSymtab.h" 12490075Sobrien#include "Plugins/SymbolVendor/ELF/SymbolVendorELF.h" 12590075Sobrien#ifdef LLDB_ENABLE_ALL 12690075Sobrien#include "Plugins/SystemRuntime/MacOSX/SystemRuntimeMacOSX.h" 12790075Sobrien#endif // LLDB_ENABLE_ALL 12890075Sobrien#include "Plugins/UnwindAssembly/InstEmulation/UnwindAssemblyInstEmulation.h" 12990075Sobrien#include "Plugins/UnwindAssembly/x86/UnwindAssembly-x86.h" 13090075Sobrien 13190075Sobrien#if defined(__APPLE__) 13290075Sobrien#include "Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.h" 13390075Sobrien#include "Plugins/Platform/MacOSX/PlatformAppleTVSimulator.h" 13490075Sobrien#include "Plugins/Platform/MacOSX/PlatformAppleWatchSimulator.h" 13590075Sobrien#include "Plugins/Platform/MacOSX/PlatformDarwinKernel.h" 13690075Sobrien#include "Plugins/Platform/MacOSX/PlatformRemoteAppleBridge.h" 13790075Sobrien#include "Plugins/Platform/MacOSX/PlatformRemoteAppleTV.h" 13890075Sobrien#include "Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.h" 13990075Sobrien#include "Plugins/Platform/MacOSX/PlatformiOSSimulator.h" 14090075Sobrien#include "Plugins/Process/MacOSX-Kernel/ProcessKDP.h" 14190075Sobrien#include "Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.h" 14290075Sobrien#endif 14390075Sobrien#ifdef LLDB_ENABLE_ALL 14490075Sobrien#include "Plugins/StructuredData/DarwinLog/StructuredDataDarwinLog.h" 14590075Sobrien#endif // LLDB_ENABLE_ALL 14690075Sobrien 14790075Sobrien#if defined(__FreeBSD__) 14890075Sobrien#include "Plugins/Process/FreeBSD/ProcessFreeBSD.h" 14990075Sobrien#endif 15090075Sobrien 15190075Sobrien#if defined(_WIN32) 15290075Sobrien#include "Plugins/Process/Windows/Common/ProcessWindows.h" 15390075Sobrien#include "lldb/Host/windows/windows.h" 15490075Sobrien#endif 15590075Sobrien 15690075Sobrien#include "llvm/Support/TargetSelect.h" 15790075Sobrien 15890075Sobrien#pragma clang diagnostic push 15990075Sobrien#pragma clang diagnostic ignored "-Wglobal-constructors" 16090075Sobrien#include "llvm/ExecutionEngine/MCJIT.h" 16190075Sobrien#pragma clang diagnostic pop 16290075Sobrien 16390075Sobrien#include <string> 16490075Sobrien 16590075Sobrienusing namespace lldb_private; 16690075Sobrien 16790075SobrienSystemInitializerFull::SystemInitializerFull() {} 16890075Sobrien 16990075SobrienSystemInitializerFull::~SystemInitializerFull() {} 17090075Sobrien 17190075Sobrien#ifdef LLDB_ENABLE_ALL 17290075Sobrien#define LLDB_PROCESS_AArch64(op) \ 17390075Sobrien ABIMacOSX_arm64::op(); \ 17490075Sobrien ABISysV_arm64::op(); 17590075Sobrien#else // LLDB_ENABLE_ALL 17690075Sobrien#define LLDB_PROCESS_AArch64(op) \ 17790075Sobrien ABISysV_arm64::op(); 17890075Sobrien#endif // LLDB_ENABLE_ALL 17990075Sobrien#ifdef LLDB_ENABLE_ALL 18090075Sobrien#define LLDB_PROCESS_ARM(op) \ 18190075Sobrien ABIMacOSX_arm::op(); \ 18290075Sobrien ABISysV_arm::op(); 18390075Sobrien#else // LLDB_ENABLE_ALL 18490075Sobrien#define LLDB_PROCESS_ARM(op) \ 18590075Sobrien ABISysV_arm::op(); 18690075Sobrien#endif // LLDB_ENABLE_ALL 18790075Sobrien#define LLDB_PROCESS_ARC(op) \ 18890075Sobrien ABISysV_arc::op(); 18990075Sobrien#define LLDB_PROCESS_Hexagon(op) ABISysV_hexagon::op(); 19090075Sobrien#define LLDB_PROCESS_Mips(op) \ 19190075Sobrien ABISysV_mips::op(); \ 19290075Sobrien ABISysV_mips64::op(); 19390075Sobrien#define LLDB_PROCESS_PowerPC(op) \ 19490075Sobrien ABISysV_ppc::op(); \ 19590075Sobrien ABISysV_ppc64::op(); 19690075Sobrien#define LLDB_PROCESS_SystemZ(op) ABISysV_s390x::op(); 19790075Sobrien#ifdef LLDB_ENABLE_ALL 19890075Sobrien#define LLDB_PROCESS_X86(op) \ 19990075Sobrien ABIMacOSX_i386::op(); \ 20090075Sobrien ABISysV_i386::op(); \ 20190075Sobrien ABISysV_x86_64::op(); \ 20290075Sobrien ABIWindows_x86_64::op(); 20390075Sobrien#else // LLDB_ENABLE_ALL 20490075Sobrien#define LLDB_PROCESS_X86(op) \ 20590075Sobrien ABISysV_i386::op(); \ 20690075Sobrien ABISysV_x86_64::op(); 20790075Sobrien#endif // LLDB_ENABLE_ALL 20890075Sobrien 20990075Sobrien#define LLDB_PROCESS_AMDGPU(op) 21090075Sobrien#define LLDB_PROCESS_AVR(op) 21190075Sobrien#define LLDB_PROCESS_BPF(op) 21290075Sobrien#define LLDB_PROCESS_Lanai(op) 21390075Sobrien#define LLDB_PROCESS_MSP430(op) 21490075Sobrien#define LLDB_PROCESS_NVPTX(op) 21590075Sobrien#define LLDB_PROCESS_RISCV(op) 21690075Sobrien#define LLDB_PROCESS_Sparc(op) 21790075Sobrien#define LLDB_PROCESS_WebAssembly(op) 21890075Sobrien#define LLDB_PROCESS_XCore(op) 21990075Sobrien 22090075Sobrienllvm::Error SystemInitializerFull::Initialize() { 22190075Sobrien if (auto e = SystemInitializerCommon::Initialize()) 22290075Sobrien return e; 22390075Sobrien 22490075Sobrien breakpad::ObjectFileBreakpad::Initialize(); 22590075Sobrien ObjectFileELF::Initialize(); 22690075Sobrien#ifdef LLDB_ENABLE_ALL 22790075Sobrien ObjectFileMachO::Initialize(); 22890075Sobrien ObjectFilePECOFF::Initialize(); 22990075Sobrien#endif // LLDB_ENABLE_ALL 23090075Sobrien 23190075Sobrien ObjectContainerBSDArchive::Initialize(); 23290075Sobrien#ifdef LLDB_ENABLE_ALL 23390075Sobrien ObjectContainerUniversalMachO::Initialize(); 23490075Sobrien#endif // LLDB_ENABLE_ALL 23590075Sobrien 23690075Sobrien ScriptInterpreterNone::Initialize(); 23790075Sobrien 23890075Sobrien#if LLDB_ENABLE_PYTHON 23990075Sobrien OperatingSystemPython::Initialize(); 24090075Sobrien#endif 24190075Sobrien 24290075Sobrien#if LLDB_ENABLE_PYTHON 24390075Sobrien ScriptInterpreterPython::Initialize(); 24490075Sobrien#endif 24590075Sobrien 24690075Sobrien#if LLDB_ENABLE_LUA 24790075Sobrien ScriptInterpreterLua::Initialize(); 24890075Sobrien#endif 24990075Sobrien 25090075Sobrien platform_freebsd::PlatformFreeBSD::Initialize(); 25190075Sobrien#ifdef LLDB_ENABLE_ALL 25290075Sobrien platform_linux::PlatformLinux::Initialize(); 25390075Sobrien platform_netbsd::PlatformNetBSD::Initialize(); 25490075Sobrien platform_openbsd::PlatformOpenBSD::Initialize(); 25590075Sobrien PlatformWindows::Initialize(); 25690075Sobrien platform_android::PlatformAndroid::Initialize(); 25790075Sobrien PlatformRemoteiOS::Initialize(); 25890075Sobrien PlatformMacOSX::Initialize(); 25990075Sobrien#endif // LLDB_ENABLE_ALL 26090075Sobrien#if defined(__APPLE__) 26190075Sobrien PlatformiOSSimulator::Initialize(); 26290075Sobrien PlatformDarwinKernel::Initialize(); 26390075Sobrien#endif 26490075Sobrien 26590075Sobrien // Initialize LLVM and Clang 26690075Sobrien llvm::InitializeAllTargets(); 26790075Sobrien llvm::InitializeAllAsmPrinters(); 26890075Sobrien llvm::InitializeAllTargetMCs(); 26990075Sobrien llvm::InitializeAllDisassemblers(); 27090075Sobrien 27190075Sobrien ClangASTContext::Initialize(); 27290075Sobrien 27390075Sobrien#define LLVM_TARGET(t) LLDB_PROCESS_ ## t(Initialize) 27490075Sobrien#include "llvm/Config/Targets.def" 27590075Sobrien 27690075Sobrien ArchitectureArm::Initialize(); 27790075Sobrien ArchitectureMips::Initialize(); 27890075Sobrien ArchitecturePPC64::Initialize(); 27990075Sobrien 28090075Sobrien DisassemblerLLVMC::Initialize(); 28196263Sobrien 28296263Sobrien JITLoaderGDB::Initialize(); 28396263Sobrien ProcessElfCore::Initialize(); 28496263Sobrien#ifdef LLDB_ENABLE_ALL 28596263Sobrien ProcessMachCore::Initialize(); 28696263Sobrien minidump::ProcessMinidump::Initialize(); 28796263Sobrien#endif // LLDB_ENABLE_ALL 28896263Sobrien MemoryHistoryASan::Initialize(); 28996263Sobrien AddressSanitizerRuntime::Initialize(); 29096263Sobrien#ifdef LLDB_ENABLE_ALL 29196263Sobrien ThreadSanitizerRuntime::Initialize(); 29296263Sobrien#endif // LLDB_ENABLE_ALL 29396263Sobrien UndefinedBehaviorSanitizerRuntime::Initialize(); 29496263Sobrien MainThreadCheckerRuntime::Initialize(); 29596263Sobrien 29696263Sobrien SymbolVendorELF::Initialize(); 29796263Sobrien breakpad::SymbolFileBreakpad::Initialize(); 29896263Sobrien SymbolFileDWARF::Initialize(); 29996263Sobrien#ifdef LLDB_ENABLE_ALL 30096263Sobrien SymbolFilePDB::Initialize(); 30196263Sobrien#endif // LLDB_ENABLE_ALL 30296263Sobrien SymbolFileSymtab::Initialize(); 30396263Sobrien UnwindAssemblyInstEmulation::Initialize(); 30496263Sobrien UnwindAssembly_x86::Initialize(); 30596263Sobrien 30696263Sobrien EmulateInstructionARM::Initialize(); 30796263Sobrien EmulateInstructionARM64::Initialize(); 30896263Sobrien EmulateInstructionMIPS::Initialize(); 30996263Sobrien EmulateInstructionMIPS64::Initialize(); 31096263Sobrien EmulateInstructionPPC64::Initialize(); 31196263Sobrien 31296263Sobrien SymbolFileDWARFDebugMap::Initialize(); 31396263Sobrien ItaniumABILanguageRuntime::Initialize(); 31496263Sobrien#ifdef LLDB_ENABLE_ALL 31596263Sobrien AppleObjCRuntimeV2::Initialize(); 31696263Sobrien AppleObjCRuntimeV1::Initialize(); 31796263Sobrien SystemRuntimeMacOSX::Initialize(); 31890075Sobrien RenderScriptRuntime::Initialize(); 31990075Sobrien#endif // LLDB_ENABLE_ALL 32090075Sobrien 32190075Sobrien CPlusPlusLanguage::Initialize(); 32290075Sobrien#ifdef LLDB_ENABLE_ALL 32390075Sobrien ObjCLanguage::Initialize(); 32490075Sobrien ObjCPlusPlusLanguage::Initialize(); 32590075Sobrien#endif // LLDB_ENABLE_ALL 32690075Sobrien 32790075Sobrien#if defined(_WIN32) 32890075Sobrien ProcessWindows::Initialize(); 32990075Sobrien#endif 33090075Sobrien#if defined(__FreeBSD__) 33190075Sobrien ProcessFreeBSD::Initialize(); 33290075Sobrien#endif 33390075Sobrien#if defined(__APPLE__) 33490075Sobrien SymbolVendorMacOSX::Initialize(); 33590075Sobrien ProcessKDP::Initialize(); 33690075Sobrien PlatformAppleTVSimulator::Initialize(); 33790075Sobrien PlatformAppleWatchSimulator::Initialize(); 33890075Sobrien PlatformRemoteAppleTV::Initialize(); 33990075Sobrien PlatformRemoteAppleWatch::Initialize(); 34090075Sobrien PlatformRemoteAppleBridge::Initialize(); 34190075Sobrien DynamicLoaderDarwinKernel::Initialize(); 34290075Sobrien#endif 34390075Sobrien 34490075Sobrien // This plugin is valid on any host that talks to a Darwin remote. It 34590075Sobrien // shouldn't be limited to __APPLE__. 34690075Sobrien#ifdef LLDB_ENABLE_ALL 34790075Sobrien StructuredDataDarwinLog::Initialize(); 34890075Sobrien#endif // LLDB_ENABLE_ALL 34990075Sobrien 35090075Sobrien // Platform agnostic plugins 35190075Sobrien platform_gdb_server::PlatformRemoteGDBServer::Initialize(); 35290075Sobrien 35390075Sobrien process_gdb_remote::ProcessGDBRemote::Initialize(); 35490075Sobrien#ifdef LLDB_ENABLE_ALL 35590075Sobrien DynamicLoaderMacOSXDYLD::Initialize(); 35690075Sobrien DynamicLoaderMacOS::Initialize(); 35790075Sobrien#endif // LLDB_ENABLE_ALL 35890075Sobrien DynamicLoaderPOSIXDYLD::Initialize(); 35990075Sobrien DynamicLoaderStatic::Initialize(); 36090075Sobrien#ifdef LLDB_ENABLE_ALL 36190075Sobrien DynamicLoaderWindowsDYLD::Initialize(); 36290075Sobrien#endif // LLDB_ENABLE_ALL 36390075Sobrien 36490075Sobrien // Scan for any system or user LLDB plug-ins 36590075Sobrien PluginManager::Initialize(); 36690075Sobrien 36790075Sobrien // The process settings need to know about installed plug-ins, so the 36890075Sobrien // Settings must be initialized 36990075Sobrien // AFTER PluginManager::Initialize is called. 37090075Sobrien 37190075Sobrien Debugger::SettingsInitialize(); 37290075Sobrien 37390075Sobrien return llvm::Error::success(); 37490075Sobrien} 37590075Sobrien 37690075Sobrienvoid SystemInitializerFull::Terminate() { 37790075Sobrien static Timer::Category func_cat(LLVM_PRETTY_FUNCTION); 37890075Sobrien Timer scoped_timer(func_cat, LLVM_PRETTY_FUNCTION); 37990075Sobrien 38090075Sobrien Debugger::SettingsTerminate(); 38190075Sobrien 38290075Sobrien // Terminate and unload and loaded system or user LLDB plug-ins 38390075Sobrien PluginManager::Terminate(); 38490075Sobrien 38590075Sobrien ClangASTContext::Terminate(); 38690075Sobrien 38790075Sobrien ArchitectureArm::Terminate(); 38890075Sobrien ArchitectureMips::Terminate(); 38990075Sobrien ArchitecturePPC64::Terminate(); 39090075Sobrien 39190075Sobrien#define LLVM_TARGET(t) LLDB_PROCESS_ ## t(Terminate) 39290075Sobrien#include "llvm/Config/Targets.def" 39390075Sobrien 39490075Sobrien DisassemblerLLVMC::Terminate(); 39590075Sobrien 39690075Sobrien JITLoaderGDB::Terminate(); 39790075Sobrien ProcessElfCore::Terminate(); 39890075Sobrien#ifdef LLDB_ENABLE_ALL 39990075Sobrien ProcessMachCore::Terminate(); 40090075Sobrien minidump::ProcessMinidump::Terminate(); 40190075Sobrien#endif // LLDB_ENABLE_ALL 40290075Sobrien MemoryHistoryASan::Terminate(); 40390075Sobrien AddressSanitizerRuntime::Terminate(); 40490075Sobrien#ifdef LLDB_ENABLE_ALL 40590075Sobrien ThreadSanitizerRuntime::Terminate(); 40690075Sobrien#endif // LLDB_ENABLE_ALL 40790075Sobrien UndefinedBehaviorSanitizerRuntime::Terminate(); 40890075Sobrien MainThreadCheckerRuntime::Terminate(); 40990075Sobrien SymbolVendorELF::Terminate(); 41090075Sobrien breakpad::SymbolFileBreakpad::Terminate(); 41190075Sobrien SymbolFileDWARF::Terminate(); 41290075Sobrien#ifdef LLDB_ENABLE_ALL 41390075Sobrien SymbolFilePDB::Terminate(); 41490075Sobrien#endif // LLDB_ENABLE_ALL 41590075Sobrien SymbolFileSymtab::Terminate(); 41690075Sobrien UnwindAssembly_x86::Terminate(); 41790075Sobrien UnwindAssemblyInstEmulation::Terminate(); 41890075Sobrien 41990075Sobrien EmulateInstructionARM::Terminate(); 42090075Sobrien EmulateInstructionARM64::Terminate(); 42190075Sobrien EmulateInstructionMIPS::Terminate(); 42290075Sobrien EmulateInstructionMIPS64::Terminate(); 42390075Sobrien EmulateInstructionPPC64::Terminate(); 42490075Sobrien 42590075Sobrien SymbolFileDWARFDebugMap::Terminate(); 42690075Sobrien ItaniumABILanguageRuntime::Terminate(); 42790075Sobrien#ifdef LLDB_ENABLE_ALL 42890075Sobrien AppleObjCRuntimeV2::Terminate(); 42990075Sobrien AppleObjCRuntimeV1::Terminate(); 43090075Sobrien SystemRuntimeMacOSX::Terminate(); 43190075Sobrien RenderScriptRuntime::Terminate(); 43290075Sobrien#endif // LLDB_ENABLE_ALL 43390075Sobrien 43490075Sobrien CPlusPlusLanguage::Terminate(); 43590075Sobrien#ifdef LLDB_ENABLE_ALL 43690075Sobrien ObjCLanguage::Terminate(); 43790075Sobrien ObjCPlusPlusLanguage::Terminate(); 43890075Sobrien#endif // LLDB_ENABLE_ALL 43990075Sobrien 44090075Sobrien#if defined(__APPLE__) 44190075Sobrien DynamicLoaderDarwinKernel::Terminate(); 44290075Sobrien ProcessKDP::Terminate(); 44390075Sobrien SymbolVendorMacOSX::Terminate(); 44490075Sobrien PlatformAppleTVSimulator::Terminate(); 44590075Sobrien PlatformAppleWatchSimulator::Terminate(); 44690075Sobrien PlatformRemoteAppleTV::Terminate(); 44790075Sobrien PlatformRemoteAppleWatch::Terminate(); 44890075Sobrien PlatformRemoteAppleBridge::Terminate(); 44990075Sobrien#endif 45090075Sobrien 45190075Sobrien#if defined(__FreeBSD__) 45290075Sobrien ProcessFreeBSD::Terminate(); 45390075Sobrien#endif 45490075Sobrien Debugger::SettingsTerminate(); 45590075Sobrien 45690075Sobrien platform_gdb_server::PlatformRemoteGDBServer::Terminate(); 45790075Sobrien process_gdb_remote::ProcessGDBRemote::Terminate(); 45890075Sobrien#ifdef LLDB_ENABLE_ALL 45990075Sobrien StructuredDataDarwinLog::Terminate(); 46090075Sobrien 46190075Sobrien DynamicLoaderMacOSXDYLD::Terminate(); 46290075Sobrien DynamicLoaderMacOS::Terminate(); 46390075Sobrien#endif // LLDB_ENABLE_ALL 46490075Sobrien DynamicLoaderPOSIXDYLD::Terminate(); 46590075Sobrien DynamicLoaderStatic::Terminate(); 46690075Sobrien#ifdef LLDB_ENABLE_ALL 46790075Sobrien DynamicLoaderWindowsDYLD::Terminate(); 46890075Sobrien#endif // LLDB_ENABLE_ALL 46990075Sobrien 47090075Sobrien#if LLDB_ENABLE_PYTHON 47190075Sobrien OperatingSystemPython::Terminate(); 47290075Sobrien#endif 47390075Sobrien 47490075Sobrien platform_freebsd::PlatformFreeBSD::Terminate(); 47590075Sobrien#ifdef LLDB_ENABLE_ALL 47690075Sobrien platform_linux::PlatformLinux::Terminate(); 47790075Sobrien platform_netbsd::PlatformNetBSD::Terminate(); 47890075Sobrien platform_openbsd::PlatformOpenBSD::Terminate(); 47990075Sobrien PlatformWindows::Terminate(); 48090075Sobrien platform_android::PlatformAndroid::Terminate(); 48190075Sobrien PlatformMacOSX::Terminate(); 48290075Sobrien PlatformRemoteiOS::Terminate(); 48390075Sobrien#endif // LLDB_ENABLE_ALL 48490075Sobrien#if defined(__APPLE__) 48590075Sobrien PlatformiOSSimulator::Terminate(); 48690075Sobrien PlatformDarwinKernel::Terminate(); 48790075Sobrien#endif 48890075Sobrien 48990075Sobrien breakpad::ObjectFileBreakpad::Terminate(); 49090075Sobrien ObjectFileELF::Terminate(); 49190075Sobrien#ifdef LLDB_ENABLE_ALL 49290075Sobrien ObjectFileMachO::Terminate(); 49390075Sobrien ObjectFilePECOFF::Terminate(); 49490075Sobrien#endif // LLDB_ENABLE_ALL 49590075Sobrien 49690075Sobrien ObjectContainerBSDArchive::Terminate(); 49790075Sobrien#ifdef LLDB_ENABLE_ALL 49890075Sobrien ObjectContainerUniversalMachO::Terminate(); 49990075Sobrien#endif // LLDB_ENABLE_ALL 50090075Sobrien 50190075Sobrien // Now shutdown the common parts, in reverse order. 50290075Sobrien SystemInitializerCommon::Terminate(); 50390075Sobrien} 50490075Sobrien