10b57cec5SDimitry Andric //===-- SystemInitializerLLGS.cpp -------------------------------*- C++ -*-===// 20b57cec5SDimitry Andric // 30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 60b57cec5SDimitry Andric // 70b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 80b57cec5SDimitry Andric 90b57cec5SDimitry Andric #include "SystemInitializerLLGS.h" 100b57cec5SDimitry Andric 110b57cec5SDimitry Andric #if defined(__APPLE__) 120b57cec5SDimitry Andric #include "Plugins/ObjectFile/Mach-O/ObjectFileMachO.h" 130b57cec5SDimitry Andric using HostObjectFile = ObjectFileMachO; 140b57cec5SDimitry Andric #elif defined(_WIN32) 150b57cec5SDimitry Andric #include "Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h" 160b57cec5SDimitry Andric using HostObjectFile = ObjectFilePECOFF; 170b57cec5SDimitry Andric #else 180b57cec5SDimitry Andric #include "Plugins/ObjectFile/ELF/ObjectFileELF.h" 190b57cec5SDimitry Andric using HostObjectFile = ObjectFileELF; 200b57cec5SDimitry Andric #endif 210b57cec5SDimitry Andric 220b57cec5SDimitry Andric #if defined(__arm64__) || defined(__aarch64__) || defined(_M_ARM64) 230b57cec5SDimitry Andric #define LLDB_TARGET_ARM64 240b57cec5SDimitry Andric #endif 250b57cec5SDimitry Andric 260b57cec5SDimitry Andric #if defined(__arm__) || defined(__arm) || defined(_ARM) || defined(_M_ARM) || \ 270b57cec5SDimitry Andric defined(LLDB_TARGET_ARM64) 280b57cec5SDimitry Andric #define LLDB_TARGET_ARM 290b57cec5SDimitry Andric #include "Plugins/Instruction/ARM/EmulateInstructionARM.h" 300b57cec5SDimitry Andric #endif 310b57cec5SDimitry Andric 32*bdd1243dSDimitry Andric #if defined(__loongarch__) 33*bdd1243dSDimitry Andric #define LLDB_TARGET_LoongArch 34*bdd1243dSDimitry Andric #include "Plugins/Instruction/LoongArch/EmulateInstructionLoongArch.h" 35*bdd1243dSDimitry Andric #endif 36*bdd1243dSDimitry Andric 370b57cec5SDimitry Andric #if defined(__mips64__) || defined(mips64) || defined(__mips64) || \ 380b57cec5SDimitry Andric defined(__MIPS64__) || defined(_M_MIPS64) 390b57cec5SDimitry Andric #define LLDB_TARGET_MIPS64 400b57cec5SDimitry Andric #include "Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.h" 410b57cec5SDimitry Andric #endif 420b57cec5SDimitry Andric 430b57cec5SDimitry Andric #if defined(__mips__) || defined(mips) || defined(__mips) || \ 440b57cec5SDimitry Andric defined(__MIPS__) || defined(_M_MIPS) || defined(LLDB_TARGET_MIPS64) 450b57cec5SDimitry Andric #define LLDB_TARGET_MIPS 460b57cec5SDimitry Andric #include "Plugins/Instruction/MIPS/EmulateInstructionMIPS.h" 470b57cec5SDimitry Andric #endif 480b57cec5SDimitry Andric 49*bdd1243dSDimitry Andric #if defined(__riscv) 50*bdd1243dSDimitry Andric #define LLDB_TARGET_RISCV 51*bdd1243dSDimitry Andric #include "Plugins/Instruction/RISCV/EmulateInstructionRISCV.h" 52*bdd1243dSDimitry Andric #endif 53*bdd1243dSDimitry Andric 540b57cec5SDimitry Andric using namespace lldb_private; 550b57cec5SDimitry Andric Initialize()560b57cec5SDimitry Andricllvm::Error SystemInitializerLLGS::Initialize() { 570b57cec5SDimitry Andric if (auto e = SystemInitializerCommon::Initialize()) 580b57cec5SDimitry Andric return e; 590b57cec5SDimitry Andric 600b57cec5SDimitry Andric HostObjectFile::Initialize(); 610b57cec5SDimitry Andric 620b57cec5SDimitry Andric #if defined(LLDB_TARGET_ARM) || defined(LLDB_TARGET_ARM64) 630b57cec5SDimitry Andric EmulateInstructionARM::Initialize(); 640b57cec5SDimitry Andric #endif 65*bdd1243dSDimitry Andric #if defined(LLDB_TARGET_LoongArch) 66*bdd1243dSDimitry Andric EmulateInstructionLoongArch::Initialize(); 67*bdd1243dSDimitry Andric #endif 680b57cec5SDimitry Andric #if defined(LLDB_TARGET_MIPS) || defined(LLDB_TARGET_MIPS64) 690b57cec5SDimitry Andric EmulateInstructionMIPS::Initialize(); 700b57cec5SDimitry Andric #endif 710b57cec5SDimitry Andric #if defined(LLDB_TARGET_MIPS64) 720b57cec5SDimitry Andric EmulateInstructionMIPS64::Initialize(); 730b57cec5SDimitry Andric #endif 74*bdd1243dSDimitry Andric #if defined(LLDB_TARGET_RISCV) 75*bdd1243dSDimitry Andric EmulateInstructionRISCV::Initialize(); 76*bdd1243dSDimitry Andric #endif 770b57cec5SDimitry Andric 780b57cec5SDimitry Andric return llvm::Error::success(); 790b57cec5SDimitry Andric } 800b57cec5SDimitry Andric Terminate()810b57cec5SDimitry Andricvoid SystemInitializerLLGS::Terminate() { 820b57cec5SDimitry Andric HostObjectFile::Terminate(); 830b57cec5SDimitry Andric 840b57cec5SDimitry Andric #if defined(LLDB_TARGET_ARM) || defined(LLDB_TARGET_ARM64) 850b57cec5SDimitry Andric EmulateInstructionARM::Terminate(); 860b57cec5SDimitry Andric #endif 87*bdd1243dSDimitry Andric #if defined(LLDB_TARGET_LoongArch) 88*bdd1243dSDimitry Andric EmulateInstructionLoongArch::Terminate(); 89*bdd1243dSDimitry Andric #endif 900b57cec5SDimitry Andric #if defined(LLDB_TARGET_MIPS) || defined(LLDB_TARGET_MIPS64) 910b57cec5SDimitry Andric EmulateInstructionMIPS::Terminate(); 920b57cec5SDimitry Andric #endif 930b57cec5SDimitry Andric #if defined(LLDB_TARGET_MIPS64) 940b57cec5SDimitry Andric EmulateInstructionMIPS64::Terminate(); 950b57cec5SDimitry Andric #endif 96*bdd1243dSDimitry Andric #if defined(LLDB_TARGET_RISCV) 97*bdd1243dSDimitry Andric EmulateInstructionRISCV::Terminate(); 98*bdd1243dSDimitry Andric #endif 990b57cec5SDimitry Andric 1000b57cec5SDimitry Andric SystemInitializerCommon::Terminate(); 1010b57cec5SDimitry Andric } 102