xref: /llvm-project/lldb/tools/lldb-server/SystemInitializerLLGS.cpp (revision ca4cd08fb9d7a03fbd00bca05d5dbfa87cd6db4e)
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