1*061da546Spatrick //===-- SystemInitializerLLGS.cpp -------------------------------*- C++ -*-===// 2*061da546Spatrick // 3*061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*061da546Spatrick // See https://llvm.org/LICENSE.txt for license information. 5*061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*061da546Spatrick // 7*061da546Spatrick //===----------------------------------------------------------------------===// 8*061da546Spatrick 9*061da546Spatrick #include "SystemInitializerLLGS.h" 10*061da546Spatrick 11*061da546Spatrick #if defined(__APPLE__) 12*061da546Spatrick #include "Plugins/ObjectFile/Mach-O/ObjectFileMachO.h" 13*061da546Spatrick using HostObjectFile = ObjectFileMachO; 14*061da546Spatrick #elif defined(_WIN32) 15*061da546Spatrick #include "Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h" 16*061da546Spatrick using HostObjectFile = ObjectFilePECOFF; 17*061da546Spatrick #else 18*061da546Spatrick #include "Plugins/ObjectFile/ELF/ObjectFileELF.h" 19*061da546Spatrick using HostObjectFile = ObjectFileELF; 20*061da546Spatrick #endif 21*061da546Spatrick 22*061da546Spatrick #if defined(__arm64__) || defined(__aarch64__) || defined(_M_ARM64) 23*061da546Spatrick #define LLDB_TARGET_ARM64 24*061da546Spatrick #endif 25*061da546Spatrick 26*061da546Spatrick #if defined(__arm__) || defined(__arm) || defined(_ARM) || defined(_M_ARM) || \ 27*061da546Spatrick defined(LLDB_TARGET_ARM64) 28*061da546Spatrick #define LLDB_TARGET_ARM 29*061da546Spatrick #include "Plugins/Instruction/ARM/EmulateInstructionARM.h" 30*061da546Spatrick #endif 31*061da546Spatrick 32*061da546Spatrick #if defined(__mips64__) || defined(mips64) || defined(__mips64) || \ 33*061da546Spatrick defined(__MIPS64__) || defined(_M_MIPS64) 34*061da546Spatrick #define LLDB_TARGET_MIPS64 35*061da546Spatrick #include "Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.h" 36*061da546Spatrick #endif 37*061da546Spatrick 38*061da546Spatrick #if defined(__mips__) || defined(mips) || defined(__mips) || \ 39*061da546Spatrick defined(__MIPS__) || defined(_M_MIPS) || defined(LLDB_TARGET_MIPS64) 40*061da546Spatrick #define LLDB_TARGET_MIPS 41*061da546Spatrick #include "Plugins/Instruction/MIPS/EmulateInstructionMIPS.h" 42*061da546Spatrick #endif 43*061da546Spatrick 44*061da546Spatrick using namespace lldb_private; 45*061da546Spatrick 46*061da546Spatrick llvm::Error SystemInitializerLLGS::Initialize() { 47*061da546Spatrick if (auto e = SystemInitializerCommon::Initialize()) 48*061da546Spatrick return e; 49*061da546Spatrick 50*061da546Spatrick HostObjectFile::Initialize(); 51*061da546Spatrick 52*061da546Spatrick #if defined(LLDB_TARGET_ARM) || defined(LLDB_TARGET_ARM64) 53*061da546Spatrick EmulateInstructionARM::Initialize(); 54*061da546Spatrick #endif 55*061da546Spatrick #if defined(LLDB_TARGET_MIPS) || defined(LLDB_TARGET_MIPS64) 56*061da546Spatrick EmulateInstructionMIPS::Initialize(); 57*061da546Spatrick #endif 58*061da546Spatrick #if defined(LLDB_TARGET_MIPS64) 59*061da546Spatrick EmulateInstructionMIPS64::Initialize(); 60*061da546Spatrick #endif 61*061da546Spatrick 62*061da546Spatrick return llvm::Error::success(); 63*061da546Spatrick } 64*061da546Spatrick 65*061da546Spatrick void SystemInitializerLLGS::Terminate() { 66*061da546Spatrick HostObjectFile::Terminate(); 67*061da546Spatrick 68*061da546Spatrick #if defined(LLDB_TARGET_ARM) || defined(LLDB_TARGET_ARM64) 69*061da546Spatrick EmulateInstructionARM::Terminate(); 70*061da546Spatrick #endif 71*061da546Spatrick #if defined(LLDB_TARGET_MIPS) || defined(LLDB_TARGET_MIPS64) 72*061da546Spatrick EmulateInstructionMIPS::Terminate(); 73*061da546Spatrick #endif 74*061da546Spatrick #if defined(LLDB_TARGET_MIPS64) 75*061da546Spatrick EmulateInstructionMIPS64::Terminate(); 76*061da546Spatrick #endif 77*061da546Spatrick 78*061da546Spatrick SystemInitializerCommon::Terminate(); 79*061da546Spatrick } 80