1 | //===-- SystemInitializerLLGS.cpp -------------------------------*- C++ -*-===// |
2 | // |
3 | // 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 |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | |
9 | #include "SystemInitializerLLGS.h" |
10 | |
11 | #if defined(__APPLE__) |
12 | #include "Plugins/ObjectFile/Mach-O/ObjectFileMachO.h" |
13 | using HostObjectFile = ObjectFileMachO; |
14 | #elif defined(_WIN32) |
15 | #include "Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h" |
16 | using HostObjectFile = ObjectFilePECOFF; |
17 | #elif defined(_AIX) |
18 | #include "Plugins/ObjectFile/XCOFF/ObjectFileXCOFF.h" |
19 | using HostObjectFile = ObjectFileXCOFF; |
20 | #else |
21 | #include "Plugins/ObjectFile/ELF/ObjectFileELF.h" |
22 | using HostObjectFile = ObjectFileELF; |
23 | #endif |
24 | |
25 | #if defined(__arm64__) || defined(__aarch64__) || defined(_M_ARM64) |
26 | #define LLDB_TARGET_ARM64 |
27 | #endif |
28 | |
29 | #if defined(__arm__) || defined(__arm) || defined(_ARM) || defined(_M_ARM) || \ |
30 | defined(LLDB_TARGET_ARM64) |
31 | #define LLDB_TARGET_ARM |
32 | #include "Plugins/Instruction/ARM/EmulateInstructionARM.h" |
33 | #endif |
34 | |
35 | #if defined(__loongarch__) |
36 | #define LLDB_TARGET_LoongArch |
37 | #include "Plugins/Instruction/LoongArch/EmulateInstructionLoongArch.h" |
38 | #endif |
39 | |
40 | #if defined(__mips64__) || defined(mips64) || defined(__mips64) || \ |
41 | defined(__MIPS64__) || defined(_M_MIPS64) |
42 | #define LLDB_TARGET_MIPS64 |
43 | #include "Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.h" |
44 | #endif |
45 | |
46 | #if defined(__mips__) || defined(mips) || defined(__mips) || \ |
47 | defined(__MIPS__) || defined(_M_MIPS) || defined(LLDB_TARGET_MIPS64) |
48 | #define LLDB_TARGET_MIPS |
49 | #include "Plugins/Instruction/MIPS/EmulateInstructionMIPS.h" |
50 | #endif |
51 | |
52 | #if defined(__riscv) |
53 | #define LLDB_TARGET_RISCV |
54 | #include "Plugins/Instruction/RISCV/EmulateInstructionRISCV.h" |
55 | #endif |
56 | |
57 | using namespace lldb_private; |
58 | |
59 | llvm::Error SystemInitializerLLGS::Initialize() { |
60 | if (auto e = SystemInitializerCommon::Initialize()) |
61 | return e; |
62 | |
63 | HostObjectFile::Initialize(); |
64 | |
65 | #if defined(LLDB_TARGET_ARM) || defined(LLDB_TARGET_ARM64) |
66 | EmulateInstructionARM::Initialize(); |
67 | #endif |
68 | #if defined(LLDB_TARGET_LoongArch) |
69 | EmulateInstructionLoongArch::Initialize(); |
70 | #endif |
71 | #if defined(LLDB_TARGET_MIPS) || defined(LLDB_TARGET_MIPS64) |
72 | EmulateInstructionMIPS::Initialize(); |
73 | #endif |
74 | #if defined(LLDB_TARGET_MIPS64) |
75 | EmulateInstructionMIPS64::Initialize(); |
76 | #endif |
77 | #if defined(LLDB_TARGET_RISCV) |
78 | EmulateInstructionRISCV::Initialize(); |
79 | #endif |
80 | |
81 | return llvm::Error::success(); |
82 | } |
83 | |
84 | void SystemInitializerLLGS::Terminate() { |
85 | HostObjectFile::Terminate(); |
86 | |
87 | #if defined(LLDB_TARGET_ARM) || defined(LLDB_TARGET_ARM64) |
88 | EmulateInstructionARM::Terminate(); |
89 | #endif |
90 | #if defined(LLDB_TARGET_LoongArch) |
91 | EmulateInstructionLoongArch::Terminate(); |
92 | #endif |
93 | #if defined(LLDB_TARGET_MIPS) || defined(LLDB_TARGET_MIPS64) |
94 | EmulateInstructionMIPS::Terminate(); |
95 | #endif |
96 | #if defined(LLDB_TARGET_MIPS64) |
97 | EmulateInstructionMIPS64::Terminate(); |
98 | #endif |
99 | #if defined(LLDB_TARGET_RISCV) |
100 | EmulateInstructionRISCV::Terminate(); |
101 | #endif |
102 | |
103 | SystemInitializerCommon::Terminate(); |
104 | } |
105 | |