1fa3fa5b9SPavel Labath //===-- SystemInitializerLLGS.cpp -------------------------------*- C++ -*-===// 2fa3fa5b9SPavel Labath // 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 6fa3fa5b9SPavel Labath // 7fa3fa5b9SPavel Labath //===----------------------------------------------------------------------===// 8fa3fa5b9SPavel Labath 9fa3fa5b9SPavel Labath #include "SystemInitializerLLGS.h" 10fa3fa5b9SPavel Labath 11fa3fa5b9SPavel Labath #if defined(__APPLE__) 12fa3fa5b9SPavel Labath #include "Plugins/ObjectFile/Mach-O/ObjectFileMachO.h" 135dd5833bSPavel Labath using HostObjectFile = ObjectFileMachO; 14fa3fa5b9SPavel Labath #elif defined(_WIN32) 15fa3fa5b9SPavel Labath #include "Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h" 165dd5833bSPavel Labath using HostObjectFile = ObjectFilePECOFF; 17*ca4cd08fSDhruv Srivastava #elif defined(_AIX) 18*ca4cd08fSDhruv Srivastava #include "Plugins/ObjectFile/XCOFF/ObjectFileXCOFF.h" 19*ca4cd08fSDhruv Srivastava using HostObjectFile = ObjectFileXCOFF; 20fa3fa5b9SPavel Labath #else 21fa3fa5b9SPavel Labath #include "Plugins/ObjectFile/ELF/ObjectFileELF.h" 22fa3fa5b9SPavel Labath using HostObjectFile = ObjectFileELF; 23fa3fa5b9SPavel Labath #endif 24fa3fa5b9SPavel Labath 25a5401e48SSaleem Abdulrasool #if defined(__arm64__) || defined(__aarch64__) || defined(_M_ARM64) 26a5401e48SSaleem Abdulrasool #define LLDB_TARGET_ARM64 27e24d8c55SSaleem Abdulrasool #endif 28e24d8c55SSaleem Abdulrasool 29a5401e48SSaleem Abdulrasool #if defined(__arm__) || defined(__arm) || defined(_ARM) || defined(_M_ARM) || \ 30a5401e48SSaleem Abdulrasool defined(LLDB_TARGET_ARM64) 31a5401e48SSaleem Abdulrasool #define LLDB_TARGET_ARM 32a5401e48SSaleem Abdulrasool #include "Plugins/Instruction/ARM/EmulateInstructionARM.h" 33e24d8c55SSaleem Abdulrasool #endif 34e24d8c55SSaleem Abdulrasool 35f0f33957SHui Li #if defined(__loongarch__) 36f0f33957SHui Li #define LLDB_TARGET_LoongArch 37f0f33957SHui Li #include "Plugins/Instruction/LoongArch/EmulateInstructionLoongArch.h" 38f0f33957SHui Li #endif 39f0f33957SHui Li 40e24d8c55SSaleem Abdulrasool #if defined(__mips64__) || defined(mips64) || defined(__mips64) || \ 41e24d8c55SSaleem Abdulrasool defined(__MIPS64__) || defined(_M_MIPS64) 42e24d8c55SSaleem Abdulrasool #define LLDB_TARGET_MIPS64 43e24d8c55SSaleem Abdulrasool #include "Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.h" 44e24d8c55SSaleem Abdulrasool #endif 45e24d8c55SSaleem Abdulrasool 46a5401e48SSaleem Abdulrasool #if defined(__mips__) || defined(mips) || defined(__mips) || \ 47a5401e48SSaleem Abdulrasool defined(__MIPS__) || defined(_M_MIPS) || defined(LLDB_TARGET_MIPS64) 48a5401e48SSaleem Abdulrasool #define LLDB_TARGET_MIPS 49a5401e48SSaleem Abdulrasool #include "Plugins/Instruction/MIPS/EmulateInstructionMIPS.h" 50a5401e48SSaleem Abdulrasool #endif 51a5401e48SSaleem Abdulrasool 524fc7e9cbSEmmmer #if defined(__riscv) 534fc7e9cbSEmmmer #define LLDB_TARGET_RISCV 544fc7e9cbSEmmmer #include "Plugins/Instruction/RISCV/EmulateInstructionRISCV.h" 554fc7e9cbSEmmmer #endif 564fc7e9cbSEmmmer 57fa3fa5b9SPavel Labath using namespace lldb_private; 58fa3fa5b9SPavel Labath 59936c6242SJonas Devlieghere llvm::Error SystemInitializerLLGS::Initialize() { 60936c6242SJonas Devlieghere if (auto e = SystemInitializerCommon::Initialize()) 6115eacd74SJonas Devlieghere return e; 6215eacd74SJonas Devlieghere 63fa3fa5b9SPavel Labath HostObjectFile::Initialize(); 6415eacd74SJonas Devlieghere 65a5401e48SSaleem Abdulrasool #if defined(LLDB_TARGET_ARM) || defined(LLDB_TARGET_ARM64) 66e24d8c55SSaleem Abdulrasool EmulateInstructionARM::Initialize(); 67e24d8c55SSaleem Abdulrasool #endif 68f0f33957SHui Li #if defined(LLDB_TARGET_LoongArch) 69f0f33957SHui Li EmulateInstructionLoongArch::Initialize(); 70f0f33957SHui Li #endif 71a5401e48SSaleem Abdulrasool #if defined(LLDB_TARGET_MIPS) || defined(LLDB_TARGET_MIPS64) 72e24d8c55SSaleem Abdulrasool EmulateInstructionMIPS::Initialize(); 73e24d8c55SSaleem Abdulrasool #endif 74e24d8c55SSaleem Abdulrasool #if defined(LLDB_TARGET_MIPS64) 75e24d8c55SSaleem Abdulrasool EmulateInstructionMIPS64::Initialize(); 76e24d8c55SSaleem Abdulrasool #endif 774fc7e9cbSEmmmer #if defined(LLDB_TARGET_RISCV) 784fc7e9cbSEmmmer EmulateInstructionRISCV::Initialize(); 794fc7e9cbSEmmmer #endif 80e24d8c55SSaleem Abdulrasool 8115eacd74SJonas Devlieghere return llvm::Error::success(); 82fa3fa5b9SPavel Labath } 83fa3fa5b9SPavel Labath 84fa3fa5b9SPavel Labath void SystemInitializerLLGS::Terminate() { 85fa3fa5b9SPavel Labath HostObjectFile::Terminate(); 86e24d8c55SSaleem Abdulrasool 87a5401e48SSaleem Abdulrasool #if defined(LLDB_TARGET_ARM) || defined(LLDB_TARGET_ARM64) 88e24d8c55SSaleem Abdulrasool EmulateInstructionARM::Terminate(); 89e24d8c55SSaleem Abdulrasool #endif 90f0f33957SHui Li #if defined(LLDB_TARGET_LoongArch) 91f0f33957SHui Li EmulateInstructionLoongArch::Terminate(); 92f0f33957SHui Li #endif 93a5401e48SSaleem Abdulrasool #if defined(LLDB_TARGET_MIPS) || defined(LLDB_TARGET_MIPS64) 94e24d8c55SSaleem Abdulrasool EmulateInstructionMIPS::Terminate(); 95e24d8c55SSaleem Abdulrasool #endif 96e24d8c55SSaleem Abdulrasool #if defined(LLDB_TARGET_MIPS64) 97e24d8c55SSaleem Abdulrasool EmulateInstructionMIPS64::Terminate(); 98e24d8c55SSaleem Abdulrasool #endif 994fc7e9cbSEmmmer #if defined(LLDB_TARGET_RISCV) 1004fc7e9cbSEmmmer EmulateInstructionRISCV::Terminate(); 1014fc7e9cbSEmmmer #endif 102e24d8c55SSaleem Abdulrasool 103fa3fa5b9SPavel Labath SystemInitializerCommon::Terminate(); 104fa3fa5b9SPavel Labath } 105