blob: f71dd51db1e587eec2ee5045a0d9538999de8b39 [file] [log] [blame]
Zachary Turnere6e2bb32015-03-31 21:03:22 +00001//===-- SystemInitializerFull.cpp -------------------------------*- C++ -*-===//
2//
Chandler Carruth2946cd72019-01-19 08:50:56 +00003// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
Zachary Turnere6e2bb32015-03-31 21:03:22 +00006//
7//===----------------------------------------------------------------------===//
8
Alex Langfordd17cd902018-05-25 20:28:16 +00009#include "SystemInitializerFull.h"
Zachary Turnere6e2bb32015-03-31 21:03:22 +000010
Zachary Turner2c1f46d2015-07-30 20:28:07 +000011#include "lldb/API/SBCommandInterpreter.h"
12
13#if !defined(LLDB_DISABLE_PYTHON)
14#include "Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h"
15#endif
16
Zachary Turnere6e2bb32015-03-31 21:03:22 +000017#include "lldb/Core/Debugger.h"
Zachary Turnere6e2bb32015-03-31 21:03:22 +000018#include "lldb/Host/Host.h"
19#include "lldb/Initialization/SystemInitializerCommon.h"
Zachary Turner2c1f46d2015-07-30 20:28:07 +000020#include "lldb/Interpreter/CommandInterpreter.h"
Greg Clayton56939cb2015-09-17 22:23:34 +000021#include "lldb/Symbol/ClangASTContext.h"
Pavel Labath38d06322017-06-29 14:32:17 +000022#include "lldb/Utility/Timer.h"
Zachary Turnere6e2bb32015-03-31 21:03:22 +000023
Zachary Turnere6e2bb32015-03-31 21:03:22 +000024#include "Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.h"
25#include "Plugins/ABI/MacOSX-arm64/ABIMacOSX_arm64.h"
Zachary Turner74e08ca2016-03-02 22:05:52 +000026#include "Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.h"
Omair Javaid52f825b2015-04-29 10:49:45 +000027#include "Plugins/ABI/SysV-arm/ABISysV_arm.h"
Omair Javaidb78e05f2015-04-29 11:52:35 +000028#include "Plugins/ABI/SysV-arm64/ABISysV_arm64.h"
Ted Woodwardbff0a212015-12-10 17:53:07 +000029#include "Plugins/ABI/SysV-hexagon/ABISysV_hexagon.h"
Greg Claytonb289cba2015-06-25 17:50:15 +000030#include "Plugins/ABI/SysV-i386/ABISysV_i386.h"
Bhushan D. Attardea8219f22015-06-18 07:02:10 +000031#include "Plugins/ABI/SysV-mips/ABISysV_mips.h"
Bhushan D. Attarde13f54252015-06-19 04:25:07 +000032#include "Plugins/ABI/SysV-mips64/ABISysV_mips64.h"
Zachary Turner74e08ca2016-03-02 22:05:52 +000033#include "Plugins/ABI/SysV-ppc/ABISysV_ppc.h"
34#include "Plugins/ABI/SysV-ppc64/ABISysV_ppc64.h"
Ulrich Weigandbb00d0b2016-04-14 14:28:34 +000035#include "Plugins/ABI/SysV-s390x/ABISysV_s390x.h"
Zachary Turner74e08ca2016-03-02 22:05:52 +000036#include "Plugins/ABI/SysV-x86_64/ABISysV_x86_64.h"
Alex Langford09ede9d2019-06-24 18:21:05 +000037#include "Plugins/ABI/Windows-x86_64/ABIWindows_x86_64.h"
Pavel Labath13e37d42017-10-25 21:05:31 +000038#include "Plugins/Architecture/Arm/ArchitectureArm.h"
Tatyana Krasnukha98fc5482018-12-13 14:28:25 +000039#include "Plugins/Architecture/Mips/ArchitectureMips.h"
Jim Ingham08581262018-03-12 21:17:04 +000040#include "Plugins/Architecture/PPC64/ArchitecturePPC64.h"
Zachary Turnere6e2bb32015-03-31 21:03:22 +000041#include "Plugins/Disassembler/llvm/DisassemblerLLVMC.h"
Jason Molenda9ab5dc22016-07-21 08:30:55 +000042#include "Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOS.h"
Kate Stoneb9c1b512016-09-06 20:57:50 +000043#include "Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.h"
Pavel Labath773c3b02016-03-29 15:00:26 +000044#include "Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.h"
Pavel Labathf1763532016-06-29 13:58:27 +000045#include "Plugins/DynamicLoader/Static/DynamicLoaderStatic.h"
Pavel Labath773c3b02016-03-29 15:00:26 +000046#include "Plugins/DynamicLoader/Windows-DYLD/DynamicLoaderWindowsDYLD.h"
Saleem Abdulrasoole24d8c52019-05-06 19:38:24 +000047#include "Plugins/Instruction/ARM/EmulateInstructionARM.h"
Zachary Turnere6e2bb32015-03-31 21:03:22 +000048#include "Plugins/Instruction/ARM64/EmulateInstructionARM64.h"
Saleem Abdulrasoole24d8c52019-05-06 19:38:24 +000049#include "Plugins/Instruction/MIPS/EmulateInstructionMIPS.h"
50#include "Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.h"
Pavel Labatha535a7a2018-02-27 18:42:46 +000051#include "Plugins/Instruction/PPC64/EmulateInstructionPPC64.h"
Pavel Labath2a1c09f2017-06-26 08:13:22 +000052#include "Plugins/InstrumentationRuntime/ASan/ASanRuntime.h"
Pavel Labath13e37d42017-10-25 21:05:31 +000053#include "Plugins/InstrumentationRuntime/MainThreadChecker/MainThreadCheckerRuntime.h"
Pavel Labath2a1c09f2017-06-26 08:13:22 +000054#include "Plugins/InstrumentationRuntime/TSan/TSanRuntime.h"
55#include "Plugins/InstrumentationRuntime/UBSan/UBSanRuntime.h"
Zachary Turnere6e2bb32015-03-31 21:03:22 +000056#include "Plugins/JITLoader/GDB/JITLoaderGDB.h"
Enrico Granata980c0482015-09-01 18:22:39 +000057#include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h"
58#include "Plugins/Language/ObjC/ObjCLanguage.h"
59#include "Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.h"
Zachary Turnere6e2bb32015-03-31 21:03:22 +000060#include "Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.h"
Zachary Turner74e08ca2016-03-02 22:05:52 +000061#include "Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h"
62#include "Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h"
Colin Riley5ec532a2015-04-09 16:49:25 +000063#include "Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.h"
Zachary Turnere6e2bb32015-03-31 21:03:22 +000064#include "Plugins/MemoryHistory/asan/MemoryHistoryASan.h"
Saleem Abdulrasoolc7c3cf62019-05-02 18:11:44 +000065#include "Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.h"
66#include "Plugins/ObjectContainer/Universal-Mach-O/ObjectContainerUniversalMachO.h"
Pavel Labath1f6b2472018-12-10 17:16:38 +000067#include "Plugins/ObjectFile/Breakpad/ObjectFileBreakpad.h"
Pavel Labathfa3fa5b2018-05-24 12:44:18 +000068#include "Plugins/ObjectFile/ELF/ObjectFileELF.h"
69#include "Plugins/ObjectFile/Mach-O/ObjectFileMachO.h"
70#include "Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h"
Pavel Labathf1763532016-06-29 13:58:27 +000071#include "Plugins/OperatingSystem/Python/OperatingSystemPython.h"
72#include "Plugins/Platform/Android/PlatformAndroid.h"
73#include "Plugins/Platform/FreeBSD/PlatformFreeBSD.h"
Pavel Labathf1763532016-06-29 13:58:27 +000074#include "Plugins/Platform/Linux/PlatformLinux.h"
75#include "Plugins/Platform/MacOSX/PlatformMacOSX.h"
76#include "Plugins/Platform/MacOSX/PlatformRemoteiOS.h"
77#include "Plugins/Platform/NetBSD/PlatformNetBSD.h"
Kamil Rytarowski12801f12017-03-26 15:34:57 +000078#include "Plugins/Platform/OpenBSD/PlatformOpenBSD.h"
Pavel Labathf1763532016-06-29 13:58:27 +000079#include "Plugins/Platform/Windows/PlatformWindows.h"
Zachary Turnere6e2bb32015-03-31 21:03:22 +000080#include "Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h"
81#include "Plugins/Process/elf-core/ProcessElfCore.h"
82#include "Plugins/Process/gdb-remote/ProcessGDBRemote.h"
Pavel Labath4c7763e2018-05-22 16:33:43 +000083#include "Plugins/Process/mach-core/ProcessMachCore.h"
Dimitar Vlahovski7b18dd42016-10-31 15:35:18 +000084#include "Plugins/Process/minidump/ProcessMinidump.h"
Zachary Turner2c1f46d2015-07-30 20:28:07 +000085#include "Plugins/ScriptInterpreter/None/ScriptInterpreterNone.h"
Pavel Labath1cf23e12019-01-11 11:17:51 +000086#include "Plugins/SymbolFile/Breakpad/SymbolFileBreakpad.h"
Zachary Turnere6e2bb32015-03-31 21:03:22 +000087#include "Plugins/SymbolFile/DWARF/SymbolFileDWARF.h"
88#include "Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h"
Zachary Turner74e08ca2016-03-02 22:05:52 +000089#include "Plugins/SymbolFile/PDB/SymbolFilePDB.h"
Zachary Turnere6e2bb32015-03-31 21:03:22 +000090#include "Plugins/SymbolFile/Symtab/SymbolFileSymtab.h"
91#include "Plugins/SymbolVendor/ELF/SymbolVendorELF.h"
92#include "Plugins/SystemRuntime/MacOSX/SystemRuntimeMacOSX.h"
Zachary Turnere6e2bb32015-03-31 21:03:22 +000093#include "Plugins/UnwindAssembly/InstEmulation/UnwindAssemblyInstEmulation.h"
Zachary Turner74e08ca2016-03-02 22:05:52 +000094#include "Plugins/UnwindAssembly/x86/UnwindAssembly-x86.h"
Zachary Turnere6e2bb32015-03-31 21:03:22 +000095
96#if defined(__APPLE__)
Pavel Labathf1763532016-06-29 13:58:27 +000097#include "Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.h"
Jason Molenda5e88be92015-11-06 00:22:53 +000098#include "Plugins/Platform/MacOSX/PlatformAppleTVSimulator.h"
99#include "Plugins/Platform/MacOSX/PlatformAppleWatchSimulator.h"
Pavel Labathf1763532016-06-29 13:58:27 +0000100#include "Plugins/Platform/MacOSX/PlatformDarwinKernel.h"
Jonas Devliegherec95c08b2019-04-24 21:23:08 +0000101#include "Plugins/Platform/MacOSX/PlatformRemoteAppleBridge.h"
Jason Molenda5e88be92015-11-06 00:22:53 +0000102#include "Plugins/Platform/MacOSX/PlatformRemoteAppleTV.h"
103#include "Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.h"
Pavel Labathf1763532016-06-29 13:58:27 +0000104#include "Plugins/Platform/MacOSX/PlatformiOSSimulator.h"
105#include "Plugins/Process/MacOSX-Kernel/ProcessKDP.h"
Pavel Labathf1763532016-06-29 13:58:27 +0000106#include "Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.h"
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000107#endif
Todd Fiala75930012016-08-19 04:21:48 +0000108#include "Plugins/StructuredData/DarwinLog/StructuredDataDarwinLog.h"
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000109
110#if defined(__FreeBSD__)
111#include "Plugins/Process/FreeBSD/ProcessFreeBSD.h"
112#endif
113
Hafiz Abid Qadeerf6ee79c2016-12-15 15:00:41 +0000114#if defined(_WIN32)
Adrian McCarthy4ad5def2016-11-23 16:26:37 +0000115#include "Plugins/Process/Windows/Common/ProcessWindows.h"
Kate Stoneb9c1b512016-09-06 20:57:50 +0000116#include "lldb/Host/windows/windows.h"
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000117#endif
118
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000119#include "llvm/Support/TargetSelect.h"
120
Saleem Abdulrasool5a365582019-05-03 23:19:27 +0000121#pragma clang diagnostic push
122#pragma clang diagnostic ignored "-Wglobal-constructors"
123#include "llvm/ExecutionEngine/MCJIT.h"
124#pragma clang diagnostic pop
125
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000126#include <string>
127
128using namespace lldb_private;
129
Kate Stoneb9c1b512016-09-06 20:57:50 +0000130SystemInitializerFull::SystemInitializerFull() {}
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000131
Kate Stoneb9c1b512016-09-06 20:57:50 +0000132SystemInitializerFull::~SystemInitializerFull() {}
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000133
Jonas Devlieghere936c6242019-02-21 22:26:16 +0000134llvm::Error SystemInitializerFull::Initialize() {
135 if (auto e = SystemInitializerCommon::Initialize())
Jonas Devlieghere15eacd72018-12-03 17:28:29 +0000136 return e;
Pavel Labathfa3fa5b2018-05-24 12:44:18 +0000137
Pavel Labath1f6b2472018-12-10 17:16:38 +0000138 breakpad::ObjectFileBreakpad::Initialize();
Pavel Labathfa3fa5b2018-05-24 12:44:18 +0000139 ObjectFileELF::Initialize();
140 ObjectFileMachO::Initialize();
141 ObjectFilePECOFF::Initialize();
142
Saleem Abdulrasoolc7c3cf62019-05-02 18:11:44 +0000143 ObjectContainerBSDArchive::Initialize();
144 ObjectContainerUniversalMachO::Initialize();
145
Kate Stoneb9c1b512016-09-06 20:57:50 +0000146 ScriptInterpreterNone::Initialize();
Zachary Turner2c1f46d2015-07-30 20:28:07 +0000147
Pavel Labatha7760cb2016-03-16 08:48:56 +0000148#ifndef LLDB_DISABLE_PYTHON
Kate Stoneb9c1b512016-09-06 20:57:50 +0000149 OperatingSystemPython::Initialize();
Pavel Labatha7760cb2016-03-16 08:48:56 +0000150#endif
Pavel Labatha7760cb2016-03-16 08:48:56 +0000151
Zachary Turner2c1f46d2015-07-30 20:28:07 +0000152#if !defined(LLDB_DISABLE_PYTHON)
Kate Stoneb9c1b512016-09-06 20:57:50 +0000153 ScriptInterpreterPython::Initialize();
Zachary Turner2c1f46d2015-07-30 20:28:07 +0000154#endif
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000155
Kate Stoneb9c1b512016-09-06 20:57:50 +0000156 platform_freebsd::PlatformFreeBSD::Initialize();
157 platform_linux::PlatformLinux::Initialize();
158 platform_netbsd::PlatformNetBSD::Initialize();
Kamil Rytarowski12801f12017-03-26 15:34:57 +0000159 platform_openbsd::PlatformOpenBSD::Initialize();
Kate Stoneb9c1b512016-09-06 20:57:50 +0000160 PlatformWindows::Initialize();
Kate Stoneb9c1b512016-09-06 20:57:50 +0000161 platform_android::PlatformAndroid::Initialize();
162 PlatformRemoteiOS::Initialize();
163 PlatformMacOSX::Initialize();
Pavel Labathf1763532016-06-29 13:58:27 +0000164#if defined(__APPLE__)
Kate Stoneb9c1b512016-09-06 20:57:50 +0000165 PlatformiOSSimulator::Initialize();
166 PlatformDarwinKernel::Initialize();
Pavel Labathf1763532016-06-29 13:58:27 +0000167#endif
168
Kate Stoneb9c1b512016-09-06 20:57:50 +0000169 // Initialize LLVM and Clang
170 llvm::InitializeAllTargets();
171 llvm::InitializeAllAsmPrinters();
172 llvm::InitializeAllTargetMCs();
173 llvm::InitializeAllDisassemblers();
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000174
Kate Stoneb9c1b512016-09-06 20:57:50 +0000175 ClangASTContext::Initialize();
Greg Clayton56939cb2015-09-17 22:23:34 +0000176
Pavel Labathd0b44db2019-09-25 13:03:04 +0000177#ifdef LLVM_TARGET_AArch64_BUILT
Kate Stoneb9c1b512016-09-06 20:57:50 +0000178 ABIMacOSX_arm64::Initialize();
Kate Stoneb9c1b512016-09-06 20:57:50 +0000179 ABISysV_arm64::Initialize();
Pavel Labathd0b44db2019-09-25 13:03:04 +0000180#endif
181#ifdef LLVM_TARGET_ARM_BUILT
182 ABIMacOSX_arm::Initialize();
183 ABISysV_arm::Initialize();
184#endif
185#ifdef LLVM_TARGET_Hexagon_BUILT
Kate Stoneb9c1b512016-09-06 20:57:50 +0000186 ABISysV_hexagon::Initialize();
Pavel Labathd0b44db2019-09-25 13:03:04 +0000187#endif
188#ifdef LLVM_TARGET_Mips_BUILT
Kate Stoneb9c1b512016-09-06 20:57:50 +0000189 ABISysV_mips::Initialize();
190 ABISysV_mips64::Initialize();
Pavel Labathd0b44db2019-09-25 13:03:04 +0000191#endif
192#ifdef LLVM_TARGET_PowerPC_BUILT
193 ABISysV_ppc::Initialize();
194 ABISysV_ppc64::Initialize();
195#endif
196#ifdef LLVM_TARGET_SystemZ_BUILT
Kate Stoneb9c1b512016-09-06 20:57:50 +0000197 ABISysV_s390x::Initialize();
Pavel Labathd0b44db2019-09-25 13:03:04 +0000198#endif
199#ifdef LLVM_TARGET_X86_BUILT
200 ABIMacOSX_i386::Initialize();
201 ABISysV_i386::Initialize();
202 ABISysV_x86_64::Initialize();
Alex Langford09ede9d2019-06-24 18:21:05 +0000203 ABIWindows_x86_64::Initialize();
Pavel Labathd0b44db2019-09-25 13:03:04 +0000204#endif
Pavel Labath13e37d42017-10-25 21:05:31 +0000205
206 ArchitectureArm::Initialize();
Tatyana Krasnukha98fc5482018-12-13 14:28:25 +0000207 ArchitectureMips::Initialize();
Jim Ingham08581262018-03-12 21:17:04 +0000208 ArchitecturePPC64::Initialize();
Pavel Labath13e37d42017-10-25 21:05:31 +0000209
Kate Stoneb9c1b512016-09-06 20:57:50 +0000210 DisassemblerLLVMC::Initialize();
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000211
Kate Stoneb9c1b512016-09-06 20:57:50 +0000212 JITLoaderGDB::Initialize();
213 ProcessElfCore::Initialize();
Pavel Labath4c7763e2018-05-22 16:33:43 +0000214 ProcessMachCore::Initialize();
Dimitar Vlahovski7b18dd42016-10-31 15:35:18 +0000215 minidump::ProcessMinidump::Initialize();
Kate Stoneb9c1b512016-09-06 20:57:50 +0000216 MemoryHistoryASan::Initialize();
217 AddressSanitizerRuntime::Initialize();
218 ThreadSanitizerRuntime::Initialize();
Kuba Mracekef45d8b2017-06-16 20:59:08 +0000219 UndefinedBehaviorSanitizerRuntime::Initialize();
220 MainThreadCheckerRuntime::Initialize();
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000221
Kate Stoneb9c1b512016-09-06 20:57:50 +0000222 SymbolVendorELF::Initialize();
Pavel Labath1cf23e12019-01-11 11:17:51 +0000223 breakpad::SymbolFileBreakpad::Initialize();
Kate Stoneb9c1b512016-09-06 20:57:50 +0000224 SymbolFileDWARF::Initialize();
225 SymbolFilePDB::Initialize();
226 SymbolFileSymtab::Initialize();
227 UnwindAssemblyInstEmulation::Initialize();
228 UnwindAssembly_x86::Initialize();
Saleem Abdulrasoole24d8c52019-05-06 19:38:24 +0000229
230 EmulateInstructionARM::Initialize();
Kate Stoneb9c1b512016-09-06 20:57:50 +0000231 EmulateInstructionARM64::Initialize();
Saleem Abdulrasoole24d8c52019-05-06 19:38:24 +0000232 EmulateInstructionMIPS::Initialize();
233 EmulateInstructionMIPS64::Initialize();
Pavel Labatha535a7a2018-02-27 18:42:46 +0000234 EmulateInstructionPPC64::Initialize();
Saleem Abdulrasoole24d8c52019-05-06 19:38:24 +0000235
Kate Stoneb9c1b512016-09-06 20:57:50 +0000236 SymbolFileDWARFDebugMap::Initialize();
237 ItaniumABILanguageRuntime::Initialize();
238 AppleObjCRuntimeV2::Initialize();
239 AppleObjCRuntimeV1::Initialize();
240 SystemRuntimeMacOSX::Initialize();
241 RenderScriptRuntime::Initialize();
Ed Maste81b4c5f2016-01-04 01:43:47 +0000242
Kate Stoneb9c1b512016-09-06 20:57:50 +0000243 CPlusPlusLanguage::Initialize();
Kate Stoneb9c1b512016-09-06 20:57:50 +0000244 ObjCLanguage::Initialize();
245 ObjCPlusPlusLanguage::Initialize();
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000246
Hafiz Abid Qadeerf6ee79c2016-12-15 15:00:41 +0000247#if defined(_WIN32)
Adrian McCarthy4ad5def2016-11-23 16:26:37 +0000248 ProcessWindows::Initialize();
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000249#endif
250#if defined(__FreeBSD__)
Kate Stoneb9c1b512016-09-06 20:57:50 +0000251 ProcessFreeBSD::Initialize();
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000252#endif
253#if defined(__APPLE__)
Kate Stoneb9c1b512016-09-06 20:57:50 +0000254 SymbolVendorMacOSX::Initialize();
255 ProcessKDP::Initialize();
Kate Stoneb9c1b512016-09-06 20:57:50 +0000256 PlatformAppleTVSimulator::Initialize();
257 PlatformAppleWatchSimulator::Initialize();
258 PlatformRemoteAppleTV::Initialize();
259 PlatformRemoteAppleWatch::Initialize();
Jason Molenda32762fd2018-10-11 00:28:35 +0000260 PlatformRemoteAppleBridge::Initialize();
Kate Stoneb9c1b512016-09-06 20:57:50 +0000261 DynamicLoaderDarwinKernel::Initialize();
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000262#endif
Todd Fiala75930012016-08-19 04:21:48 +0000263
Adrian Prantl05097242018-04-30 16:49:04 +0000264 // This plugin is valid on any host that talks to a Darwin remote. It
265 // shouldn't be limited to __APPLE__.
Kate Stoneb9c1b512016-09-06 20:57:50 +0000266 StructuredDataDarwinLog::Initialize();
Todd Fiala75930012016-08-19 04:21:48 +0000267
Kate Stoneb9c1b512016-09-06 20:57:50 +0000268 // Platform agnostic plugins
Kate Stoneb9c1b512016-09-06 20:57:50 +0000269 platform_gdb_server::PlatformRemoteGDBServer::Initialize();
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000270
Kate Stoneb9c1b512016-09-06 20:57:50 +0000271 process_gdb_remote::ProcessGDBRemote::Initialize();
272 DynamicLoaderMacOSXDYLD::Initialize();
273 DynamicLoaderMacOS::Initialize();
274 DynamicLoaderPOSIXDYLD::Initialize();
275 DynamicLoaderStatic::Initialize();
276 DynamicLoaderWindowsDYLD::Initialize();
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000277
Kate Stoneb9c1b512016-09-06 20:57:50 +0000278 // Scan for any system or user LLDB plug-ins
279 PluginManager::Initialize();
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000280
Adrian Prantl05097242018-04-30 16:49:04 +0000281 // The process settings need to know about installed plug-ins, so the
282 // Settings must be initialized
Kate Stoneb9c1b512016-09-06 20:57:50 +0000283 // AFTER PluginManager::Initialize is called.
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000284
Kate Stoneb9c1b512016-09-06 20:57:50 +0000285 Debugger::SettingsInitialize();
Jonas Devlieghere15eacd72018-12-03 17:28:29 +0000286
287 return llvm::Error::success();
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000288}
289
Kate Stoneb9c1b512016-09-06 20:57:50 +0000290void SystemInitializerFull::Terminate() {
Pavel Labathf9d16472017-05-15 13:02:37 +0000291 static Timer::Category func_cat(LLVM_PRETTY_FUNCTION);
292 Timer scoped_timer(func_cat, LLVM_PRETTY_FUNCTION);
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000293
Kate Stoneb9c1b512016-09-06 20:57:50 +0000294 Debugger::SettingsTerminate();
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000295
Kate Stoneb9c1b512016-09-06 20:57:50 +0000296 // Terminate and unload and loaded system or user LLDB plug-ins
297 PluginManager::Terminate();
Greg Clayton56939cb2015-09-17 22:23:34 +0000298
Kate Stoneb9c1b512016-09-06 20:57:50 +0000299 ClangASTContext::Terminate();
Greg Clayton56939cb2015-09-17 22:23:34 +0000300
Tatyana Krasnukha98fc5482018-12-13 14:28:25 +0000301 ArchitectureArm::Terminate();
302 ArchitectureMips::Terminate();
303 ArchitecturePPC64::Terminate();
304
Pavel Labathd0b44db2019-09-25 13:03:04 +0000305#ifdef LLVM_TARGET_AArch64_BUILT
Kate Stoneb9c1b512016-09-06 20:57:50 +0000306 ABIMacOSX_arm64::Terminate();
Kate Stoneb9c1b512016-09-06 20:57:50 +0000307 ABISysV_arm64::Terminate();
Pavel Labathd0b44db2019-09-25 13:03:04 +0000308#endif
309#ifdef LLVM_TARGET_ARM_BUILT
310 ABIMacOSX_arm::Terminate();
311 ABISysV_arm::Terminate();
312#endif
313#ifdef LLVM_TARGET_Hexagon_BUILT
Kate Stoneb9c1b512016-09-06 20:57:50 +0000314 ABISysV_hexagon::Terminate();
Pavel Labathd0b44db2019-09-25 13:03:04 +0000315#endif
316#ifdef LLVM_TARGET_Mips_BUILT
Kate Stoneb9c1b512016-09-06 20:57:50 +0000317 ABISysV_mips::Terminate();
318 ABISysV_mips64::Terminate();
Pavel Labathd0b44db2019-09-25 13:03:04 +0000319#endif
320#ifdef LLVM_TARGET_PowerPC_BUILT
321 ABISysV_ppc::Terminate();
322 ABISysV_ppc64::Terminate();
323#endif
324#ifdef LLVM_TARGET_SystemZ_BUILT
Kate Stoneb9c1b512016-09-06 20:57:50 +0000325 ABISysV_s390x::Terminate();
Pavel Labathd0b44db2019-09-25 13:03:04 +0000326#endif
327#ifdef LLVM_TARGET_X86_BUILT
328 ABIMacOSX_i386::Terminate();
329 ABISysV_i386::Terminate();
330 ABISysV_x86_64::Terminate();
Alex Langford09ede9d2019-06-24 18:21:05 +0000331 ABIWindows_x86_64::Terminate();
Pavel Labathd0b44db2019-09-25 13:03:04 +0000332#endif
333
Kate Stoneb9c1b512016-09-06 20:57:50 +0000334 DisassemblerLLVMC::Terminate();
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000335
Kate Stoneb9c1b512016-09-06 20:57:50 +0000336 JITLoaderGDB::Terminate();
337 ProcessElfCore::Terminate();
Pavel Labath4c7763e2018-05-22 16:33:43 +0000338 ProcessMachCore::Terminate();
Dimitar Vlahovski7b18dd42016-10-31 15:35:18 +0000339 minidump::ProcessMinidump::Terminate();
Kate Stoneb9c1b512016-09-06 20:57:50 +0000340 MemoryHistoryASan::Terminate();
341 AddressSanitizerRuntime::Terminate();
342 ThreadSanitizerRuntime::Terminate();
Kuba Mracekef45d8b2017-06-16 20:59:08 +0000343 UndefinedBehaviorSanitizerRuntime::Terminate();
344 MainThreadCheckerRuntime::Terminate();
Kate Stoneb9c1b512016-09-06 20:57:50 +0000345 SymbolVendorELF::Terminate();
Pavel Labath1cf23e12019-01-11 11:17:51 +0000346 breakpad::SymbolFileBreakpad::Terminate();
Kate Stoneb9c1b512016-09-06 20:57:50 +0000347 SymbolFileDWARF::Terminate();
348 SymbolFilePDB::Terminate();
349 SymbolFileSymtab::Terminate();
350 UnwindAssembly_x86::Terminate();
351 UnwindAssemblyInstEmulation::Terminate();
Saleem Abdulrasoole24d8c52019-05-06 19:38:24 +0000352
353 EmulateInstructionARM::Terminate();
Kate Stoneb9c1b512016-09-06 20:57:50 +0000354 EmulateInstructionARM64::Terminate();
Saleem Abdulrasoole24d8c52019-05-06 19:38:24 +0000355 EmulateInstructionMIPS::Terminate();
356 EmulateInstructionMIPS64::Terminate();
Pavel Labatha535a7a2018-02-27 18:42:46 +0000357 EmulateInstructionPPC64::Terminate();
Saleem Abdulrasoole24d8c52019-05-06 19:38:24 +0000358
Kate Stoneb9c1b512016-09-06 20:57:50 +0000359 SymbolFileDWARFDebugMap::Terminate();
360 ItaniumABILanguageRuntime::Terminate();
361 AppleObjCRuntimeV2::Terminate();
362 AppleObjCRuntimeV1::Terminate();
363 SystemRuntimeMacOSX::Terminate();
364 RenderScriptRuntime::Terminate();
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000365
Kate Stoneb9c1b512016-09-06 20:57:50 +0000366 CPlusPlusLanguage::Terminate();
Kate Stoneb9c1b512016-09-06 20:57:50 +0000367 ObjCLanguage::Terminate();
368 ObjCPlusPlusLanguage::Terminate();
Ed Maste81b4c5f2016-01-04 01:43:47 +0000369
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000370#if defined(__APPLE__)
Kate Stoneb9c1b512016-09-06 20:57:50 +0000371 DynamicLoaderDarwinKernel::Terminate();
Kate Stoneb9c1b512016-09-06 20:57:50 +0000372 ProcessKDP::Terminate();
373 SymbolVendorMacOSX::Terminate();
374 PlatformAppleTVSimulator::Terminate();
375 PlatformAppleWatchSimulator::Terminate();
376 PlatformRemoteAppleTV::Terminate();
377 PlatformRemoteAppleWatch::Terminate();
Jason Molenda32762fd2018-10-11 00:28:35 +0000378 PlatformRemoteAppleBridge::Terminate();
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000379#endif
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000380
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000381#if defined(__FreeBSD__)
Kate Stoneb9c1b512016-09-06 20:57:50 +0000382 ProcessFreeBSD::Terminate();
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000383#endif
Kate Stoneb9c1b512016-09-06 20:57:50 +0000384 Debugger::SettingsTerminate();
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000385
Kate Stoneb9c1b512016-09-06 20:57:50 +0000386 platform_gdb_server::PlatformRemoteGDBServer::Terminate();
387 process_gdb_remote::ProcessGDBRemote::Terminate();
388 StructuredDataDarwinLog::Terminate();
Todd Fiala75930012016-08-19 04:21:48 +0000389
Kate Stoneb9c1b512016-09-06 20:57:50 +0000390 DynamicLoaderMacOSXDYLD::Terminate();
391 DynamicLoaderMacOS::Terminate();
392 DynamicLoaderPOSIXDYLD::Terminate();
393 DynamicLoaderStatic::Terminate();
394 DynamicLoaderWindowsDYLD::Terminate();
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000395
Pavel Labatha7760cb2016-03-16 08:48:56 +0000396#ifndef LLDB_DISABLE_PYTHON
Kate Stoneb9c1b512016-09-06 20:57:50 +0000397 OperatingSystemPython::Terminate();
Pavel Labatha7760cb2016-03-16 08:48:56 +0000398#endif
Pavel Labatha7760cb2016-03-16 08:48:56 +0000399
Kate Stoneb9c1b512016-09-06 20:57:50 +0000400 platform_freebsd::PlatformFreeBSD::Terminate();
401 platform_linux::PlatformLinux::Terminate();
402 platform_netbsd::PlatformNetBSD::Terminate();
Kamil Rytarowski12801f12017-03-26 15:34:57 +0000403 platform_openbsd::PlatformOpenBSD::Terminate();
Kate Stoneb9c1b512016-09-06 20:57:50 +0000404 PlatformWindows::Terminate();
Kate Stoneb9c1b512016-09-06 20:57:50 +0000405 platform_android::PlatformAndroid::Terminate();
406 PlatformMacOSX::Terminate();
407 PlatformRemoteiOS::Terminate();
Pavel Labathf1763532016-06-29 13:58:27 +0000408#if defined(__APPLE__)
Kate Stoneb9c1b512016-09-06 20:57:50 +0000409 PlatformiOSSimulator::Terminate();
410 PlatformDarwinKernel::Terminate();
Pavel Labathf1763532016-06-29 13:58:27 +0000411#endif
412
Pavel Labath1f6b2472018-12-10 17:16:38 +0000413 breakpad::ObjectFileBreakpad::Terminate();
Pavel Labathfa3fa5b2018-05-24 12:44:18 +0000414 ObjectFileELF::Terminate();
415 ObjectFileMachO::Terminate();
416 ObjectFilePECOFF::Terminate();
417
Saleem Abdulrasoolc7c3cf62019-05-02 18:11:44 +0000418 ObjectContainerBSDArchive::Terminate();
419 ObjectContainerUniversalMachO::Terminate();
420
Kate Stoneb9c1b512016-09-06 20:57:50 +0000421 // Now shutdown the common parts, in reverse order.
422 SystemInitializerCommon::Terminate();
Zachary Turnere6e2bb32015-03-31 21:03:22 +0000423}