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;
17fa3fa5b9SPavel Labath #else
18fa3fa5b9SPavel Labath #include "Plugins/ObjectFile/ELF/ObjectFileELF.h"
19fa3fa5b9SPavel Labath using HostObjectFile = ObjectFileELF;
20fa3fa5b9SPavel Labath #endif
21fa3fa5b9SPavel Labath 
22*a5401e48SSaleem Abdulrasool #if defined(__arm64__) || defined(__aarch64__) || defined(_M_ARM64)
23*a5401e48SSaleem Abdulrasool #define LLDB_TARGET_ARM64
24e24d8c55SSaleem Abdulrasool #endif
25e24d8c55SSaleem Abdulrasool 
26*a5401e48SSaleem Abdulrasool #if defined(__arm__) || defined(__arm) || defined(_ARM) || defined(_M_ARM) ||  \
27*a5401e48SSaleem Abdulrasool     defined(LLDB_TARGET_ARM64)
28*a5401e48SSaleem Abdulrasool #define LLDB_TARGET_ARM
29*a5401e48SSaleem Abdulrasool #include "Plugins/Instruction/ARM/EmulateInstructionARM.h"
30e24d8c55SSaleem Abdulrasool #endif
31e24d8c55SSaleem Abdulrasool 
32e24d8c55SSaleem Abdulrasool #if defined(__mips64__) || defined(mips64) || defined(__mips64) ||             \
33e24d8c55SSaleem Abdulrasool     defined(__MIPS64__) || defined(_M_MIPS64)
34e24d8c55SSaleem Abdulrasool #define LLDB_TARGET_MIPS64
35e24d8c55SSaleem Abdulrasool #include "Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.h"
36e24d8c55SSaleem Abdulrasool #endif
37e24d8c55SSaleem Abdulrasool 
38*a5401e48SSaleem Abdulrasool #if defined(__mips__) || defined(mips) || defined(__mips) ||                   \
39*a5401e48SSaleem Abdulrasool     defined(__MIPS__) || defined(_M_MIPS) || defined(LLDB_TARGET_MIPS64)
40*a5401e48SSaleem Abdulrasool #define LLDB_TARGET_MIPS
41*a5401e48SSaleem Abdulrasool #include "Plugins/Instruction/MIPS/EmulateInstructionMIPS.h"
42*a5401e48SSaleem Abdulrasool #endif
43*a5401e48SSaleem Abdulrasool 
44fa3fa5b9SPavel Labath using namespace lldb_private;
45fa3fa5b9SPavel Labath 
Initialize()46936c6242SJonas Devlieghere llvm::Error SystemInitializerLLGS::Initialize() {
47936c6242SJonas Devlieghere   if (auto e = SystemInitializerCommon::Initialize())
4815eacd74SJonas Devlieghere     return e;
4915eacd74SJonas Devlieghere 
50fa3fa5b9SPavel Labath   HostObjectFile::Initialize();
5115eacd74SJonas Devlieghere 
52*a5401e48SSaleem Abdulrasool #if defined(LLDB_TARGET_ARM) || defined(LLDB_TARGET_ARM64)
53e24d8c55SSaleem Abdulrasool   EmulateInstructionARM::Initialize();
54e24d8c55SSaleem Abdulrasool #endif
55*a5401e48SSaleem Abdulrasool #if defined(LLDB_TARGET_MIPS) || defined(LLDB_TARGET_MIPS64)
56e24d8c55SSaleem Abdulrasool   EmulateInstructionMIPS::Initialize();
57e24d8c55SSaleem Abdulrasool #endif
58e24d8c55SSaleem Abdulrasool #if defined(LLDB_TARGET_MIPS64)
59e24d8c55SSaleem Abdulrasool   EmulateInstructionMIPS64::Initialize();
60e24d8c55SSaleem Abdulrasool #endif
61e24d8c55SSaleem Abdulrasool 
6215eacd74SJonas Devlieghere   return llvm::Error::success();
63fa3fa5b9SPavel Labath }
64fa3fa5b9SPavel Labath 
Terminate()65fa3fa5b9SPavel Labath void SystemInitializerLLGS::Terminate() {
66fa3fa5b9SPavel Labath   HostObjectFile::Terminate();
67e24d8c55SSaleem Abdulrasool 
68*a5401e48SSaleem Abdulrasool #if defined(LLDB_TARGET_ARM) || defined(LLDB_TARGET_ARM64)
69e24d8c55SSaleem Abdulrasool   EmulateInstructionARM::Terminate();
70e24d8c55SSaleem Abdulrasool #endif
71*a5401e48SSaleem Abdulrasool #if defined(LLDB_TARGET_MIPS) || defined(LLDB_TARGET_MIPS64)
72e24d8c55SSaleem Abdulrasool   EmulateInstructionMIPS::Terminate();
73e24d8c55SSaleem Abdulrasool #endif
74e24d8c55SSaleem Abdulrasool #if defined(LLDB_TARGET_MIPS64)
75e24d8c55SSaleem Abdulrasool   EmulateInstructionMIPS64::Terminate();
76e24d8c55SSaleem Abdulrasool #endif
77e24d8c55SSaleem Abdulrasool 
78fa3fa5b9SPavel Labath   SystemInitializerCommon::Terminate();
79fa3fa5b9SPavel Labath }
80