summaryrefslogtreecommitdiffstats
path: root/lldb/source/API
diff options
context:
space:
mode:
authorPavel Labath <pavel@labath.sk>2019-09-26 09:47:32 +0000
committerPavel Labath <pavel@labath.sk>2019-09-26 09:47:32 +0000
commit8865ebb509baf677a62ac1761f9b4bb1dfb79a18 (patch)
tree3df0ff48b39e245d7bc4611f51241c0cebf7a4e3 /lldb/source/API
parentfba48fcf443bb90ccd53a9624a034166453ab3d8 (diff)
downloadbcm5719-llvm-8865ebb509baf677a62ac1761f9b4bb1dfb79a18.tar.gz
bcm5719-llvm-8865ebb509baf677a62ac1761f9b4bb1dfb79a18.zip
SystemInitializer: Use Targets.def to selectively initialize ABI plugins
This avoids having to define additional macros in the cmake file, and and also makes the logic in the cpp files more compact. It is also easily extendible to other plugin types (instruction emulation?) that should only be initialized if the corresponding llvm target is built. Thanks to Ilya Birukov for pointing me to this file. llvm-svn: 372952
Diffstat (limited to 'lldb/source/API')
-rw-r--r--lldb/source/API/CMakeLists.txt5
-rw-r--r--lldb/source/API/SystemInitializerFull.cpp90
2 files changed, 34 insertions, 61 deletions
diff --git a/lldb/source/API/CMakeLists.txt b/lldb/source/API/CMakeLists.txt
index ff42cb3c46f..d93b8b5e381 100644
--- a/lldb/source/API/CMakeLists.txt
+++ b/lldb/source/API/CMakeLists.txt
@@ -103,11 +103,6 @@ add_lldb_library(liblldb SHARED
${option_install_prefix}
)
-foreach (t ${LLVM_TARGETS_TO_BUILD})
- set_property(SOURCE SystemInitializerFull.cpp APPEND PROPERTY
- COMPILE_DEFINITIONS "LLVM_TARGET_${t}_BUILT")
-endforeach()
-
if (MSVC)
set_source_files_properties(SBReproducer.cpp PROPERTIES COMPILE_FLAGS /bigobj)
endif()
diff --git a/lldb/source/API/SystemInitializerFull.cpp b/lldb/source/API/SystemInitializerFull.cpp
index f71dd51db1e..4c36b9f18f6 100644
--- a/lldb/source/API/SystemInitializerFull.cpp
+++ b/lldb/source/API/SystemInitializerFull.cpp
@@ -131,6 +131,36 @@ SystemInitializerFull::SystemInitializerFull() {}
SystemInitializerFull::~SystemInitializerFull() {}
+#define LLDB_PROCESS_AArch64(op) \
+ ABIMacOSX_arm64::op(); \
+ ABISysV_arm64::op();
+#define LLDB_PROCESS_ARM(op) \
+ ABIMacOSX_arm::op(); \
+ ABISysV_arm::op();
+#define LLDB_PROCESS_Hexagon(op) ABISysV_hexagon::op();
+#define LLDB_PROCESS_Mips(op) \
+ ABISysV_mips::op(); \
+ ABISysV_mips64::op();
+#define LLDB_PROCESS_PowerPC(op) \
+ ABISysV_ppc::op(); \
+ ABISysV_ppc64::op();
+#define LLDB_PROCESS_SystemZ(op) ABISysV_s390x::op();
+#define LLDB_PROCESS_X86(op) \
+ ABIMacOSX_i386::op(); \
+ ABISysV_i386::op(); \
+ ABISysV_x86_64::op(); \
+ ABIWindows_x86_64::op();
+
+#define LLDB_PROCESS_AMDGPU(op)
+#define LLDB_PROCESS_BPF(op)
+#define LLDB_PROCESS_Lanai(op)
+#define LLDB_PROCESS_MSP430(op)
+#define LLDB_PROCESS_NVPTX(op)
+#define LLDB_PROCESS_RISCV(op)
+#define LLDB_PROCESS_Sparc(op)
+#define LLDB_PROCESS_WebAssembly(op)
+#define LLDB_PROCESS_XCore(op)
+
llvm::Error SystemInitializerFull::Initialize() {
if (auto e = SystemInitializerCommon::Initialize())
return e;
@@ -174,34 +204,8 @@ llvm::Error SystemInitializerFull::Initialize() {
ClangASTContext::Initialize();
-#ifdef LLVM_TARGET_AArch64_BUILT
- ABIMacOSX_arm64::Initialize();
- ABISysV_arm64::Initialize();
-#endif
-#ifdef LLVM_TARGET_ARM_BUILT
- ABIMacOSX_arm::Initialize();
- ABISysV_arm::Initialize();
-#endif
-#ifdef LLVM_TARGET_Hexagon_BUILT
- ABISysV_hexagon::Initialize();
-#endif
-#ifdef LLVM_TARGET_Mips_BUILT
- ABISysV_mips::Initialize();
- ABISysV_mips64::Initialize();
-#endif
-#ifdef LLVM_TARGET_PowerPC_BUILT
- ABISysV_ppc::Initialize();
- ABISysV_ppc64::Initialize();
-#endif
-#ifdef LLVM_TARGET_SystemZ_BUILT
- ABISysV_s390x::Initialize();
-#endif
-#ifdef LLVM_TARGET_X86_BUILT
- ABIMacOSX_i386::Initialize();
- ABISysV_i386::Initialize();
- ABISysV_x86_64::Initialize();
- ABIWindows_x86_64::Initialize();
-#endif
+#define LLVM_TARGET(t) LLDB_PROCESS_ ## t(Initialize)
+#include "llvm/Config/Targets.def"
ArchitectureArm::Initialize();
ArchitectureMips::Initialize();
@@ -302,34 +306,8 @@ void SystemInitializerFull::Terminate() {
ArchitectureMips::Terminate();
ArchitecturePPC64::Terminate();
-#ifdef LLVM_TARGET_AArch64_BUILT
- ABIMacOSX_arm64::Terminate();
- ABISysV_arm64::Terminate();
-#endif
-#ifdef LLVM_TARGET_ARM_BUILT
- ABIMacOSX_arm::Terminate();
- ABISysV_arm::Terminate();
-#endif
-#ifdef LLVM_TARGET_Hexagon_BUILT
- ABISysV_hexagon::Terminate();
-#endif
-#ifdef LLVM_TARGET_Mips_BUILT
- ABISysV_mips::Terminate();
- ABISysV_mips64::Terminate();
-#endif
-#ifdef LLVM_TARGET_PowerPC_BUILT
- ABISysV_ppc::Terminate();
- ABISysV_ppc64::Terminate();
-#endif
-#ifdef LLVM_TARGET_SystemZ_BUILT
- ABISysV_s390x::Terminate();
-#endif
-#ifdef LLVM_TARGET_X86_BUILT
- ABIMacOSX_i386::Terminate();
- ABISysV_i386::Terminate();
- ABISysV_x86_64::Terminate();
- ABIWindows_x86_64::Terminate();
-#endif
+#define LLVM_TARGET(t) LLDB_PROCESS_ ## t(Terminate)
+#include "llvm/Config/Targets.def"
DisassemblerLLVMC::Terminate();
OpenPOWER on IntegriCloud