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