[lldb/CMake] Auto-generate the Initialize and Terminate calls for plugin
authorJonas Devlieghere <jonas@devlieghere.com>
Mon, 17 Feb 2020 17:02:29 +0000 (09:02 -0800)
committerJonas Devlieghere <jonas@devlieghere.com>
Mon, 17 Feb 2020 17:07:00 +0000 (09:07 -0800)
This patch changes the way we initialize and terminate the plugins in
the system initializer. It uses an approach similar to LLVM's
TARGETS_TO_BUILD with a def file that enumerates the plugins.

Differential revision: https://reviews.llvm.org/D73067

37 files changed:
lldb/include/lldb/Core/PluginManager.h
lldb/source/API/SystemInitializerFull.cpp
lldb/source/Plugins/ABI/AArch64/ABIMacOSX_arm64.cpp
lldb/source/Plugins/ABI/ARC/ABISysV_arc.cpp
lldb/source/Plugins/ABI/ARM/ABIMacOSX_arm.cpp
lldb/source/Plugins/ABI/Hexagon/ABISysV_hexagon.cpp
lldb/source/Plugins/ABI/SystemZ/ABISysV_s390x.cpp
lldb/source/Plugins/CMakeLists.txt
lldb/source/Plugins/Disassembler/LLVMC/CMakeLists.txt
lldb/source/Plugins/DynamicLoader/Hexagon-DYLD/DynamicLoaderHexagonDYLD.cpp
lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp
lldb/source/Plugins/ExpressionParser/Clang/CMakeLists.txt
lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
lldb/source/Plugins/Instruction/ARM64/EmulateInstructionARM64.cpp
lldb/source/Plugins/Instruction/MIPS/EmulateInstructionMIPS.cpp
lldb/source/Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.cpp
lldb/source/Plugins/Instruction/PPC64/EmulateInstructionPPC64.cpp
lldb/source/Plugins/Language/ClangCommon/CMakeLists.txt
lldb/source/Plugins/Language/ObjC/CMakeLists.txt
lldb/source/Plugins/LanguageRuntime/CPlusPlus/CMakeLists.txt
lldb/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.cpp
lldb/source/Plugins/LanguageRuntime/ObjC/CMakeLists.txt
lldb/source/Plugins/ObjectContainer/Universal-Mach-O/ObjectContainerUniversalMachO.cpp
lldb/source/Plugins/ObjectFile/JIT/ObjectFileJIT.cpp
lldb/source/Plugins/OperatingSystem/CMakeLists.txt
lldb/source/Plugins/Platform/POSIX/CMakeLists.txt
lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp
lldb/source/Plugins/Plugins.def.in [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp
lldb/source/Plugins/Process/Utility/CMakeLists.txt
lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp
lldb/source/Plugins/UnwindAssembly/x86/UnwindAssembly-x86.cpp
lldb/tools/lldb-test/CMakeLists.txt
lldb/tools/lldb-test/SystemInitializerTest.cpp
lldb/unittests/Disassembler/CMakeLists.txt
lldb/unittests/UnwindAssembly/ARM64/CMakeLists.txt
lldb/unittests/UnwindAssembly/PPC64/CMakeLists.txt

index 1544ecc..d42e53a 100644 (file)
 #include <stddef.h>
 #include <stdint.h>
 
-#define LLDB_PLUGIN_DEFINE(PluginName)                                         \
+#define LLDB_PLUGIN_DEFINE_ADV(ClassName, PluginName)                          \
   namespace lldb_private {                                                     \
-  void lldb_initialize_##PluginName() { PluginName::Initialize(); }            \
-  void lldb_terminate_##PluginName() { PluginName::Terminate(); }              \
+  void lldb_initialize_##PluginName() { ClassName::Initialize(); }             \
+  void lldb_terminate_##PluginName() { ClassName::Terminate(); }               \
   }
 
+#define LLDB_PLUGIN_DEFINE(PluginName)                                         \
+  LLDB_PLUGIN_DEFINE_ADV(PluginName, PluginName)
+
 // FIXME: Generate me with CMake
 #define LLDB_PLUGIN_DECLARE(PluginName)                                        \
   namespace lldb_private {                                                     \
index b629e53..f6b37c5 100644 (file)
 
 #include <string>
 
-LLDB_PLUGIN_DECLARE(ABIAArch64)
-LLDB_PLUGIN_DECLARE(ABIARM)
-LLDB_PLUGIN_DECLARE(ABISysV_arc)
-LLDB_PLUGIN_DECLARE(ABISysV_hexagon)
-LLDB_PLUGIN_DECLARE(ABIMips)
-LLDB_PLUGIN_DECLARE(ABIPowerPC)
-LLDB_PLUGIN_DECLARE(ABISysV_s390x)
-LLDB_PLUGIN_DECLARE(ABIX86)
-LLDB_PLUGIN_DECLARE(ObjectFileBreakpad)
-LLDB_PLUGIN_DECLARE(ObjectFileELF)
-LLDB_PLUGIN_DECLARE(ObjectFileMachO)
-LLDB_PLUGIN_DECLARE(ObjectFilePECOFF)
-LLDB_PLUGIN_DECLARE(ObjectFileWasm)
-LLDB_PLUGIN_DECLARE(ObjectContainerBSDArchive)
-LLDB_PLUGIN_DECLARE(ObjectContainerUniversalMachO)
-LLDB_PLUGIN_DECLARE(ScriptInterpreterNone)
-#if LLDB_ENABLE_PYTHON
-LLDB_PLUGIN_DECLARE(OperatingSystemPython)
-LLDB_PLUGIN_DECLARE(ScriptInterpreterPython)
-#endif
-#if LLDB_ENABLE_LUA
-LLDB_PLUGIN_DECLARE(ScriptInterpreterLua)
-#endif
-LLDB_PLUGIN_DECLARE(PlatformFreeBSD)
-LLDB_PLUGIN_DECLARE(PlatformLinux)
-LLDB_PLUGIN_DECLARE(PlatformNetBSD)
-LLDB_PLUGIN_DECLARE(PlatformOpenBSD)
-LLDB_PLUGIN_DECLARE(PlatformWindows)
-LLDB_PLUGIN_DECLARE(PlatformAndroid)
-LLDB_PLUGIN_DECLARE(PlatformMacOSX)
-LLDB_PLUGIN_DECLARE(TypeSystemClang)
-LLDB_PLUGIN_DECLARE(ArchitectureArm)
-LLDB_PLUGIN_DECLARE(ArchitectureMips)
-LLDB_PLUGIN_DECLARE(ArchitecturePPC64)
-LLDB_PLUGIN_DECLARE(DisassemblerLLVMC)
-LLDB_PLUGIN_DECLARE(JITLoaderGDB)
-LLDB_PLUGIN_DECLARE(ProcessElfCore)
-LLDB_PLUGIN_DECLARE(ProcessMachCore)
-LLDB_PLUGIN_DECLARE(ProcessMinidump)
-LLDB_PLUGIN_DECLARE(MemoryHistoryASan)
-LLDB_PLUGIN_DECLARE(InstrumentationRuntimeASan)
-LLDB_PLUGIN_DECLARE(InstrumentationRuntimeTSan)
-LLDB_PLUGIN_DECLARE(InstrumentationRuntimeUBSan)
-LLDB_PLUGIN_DECLARE(InstrumentationRuntimeMainThreadChecker)
-LLDB_PLUGIN_DECLARE(SymbolVendorELF)
-LLDB_PLUGIN_DECLARE(SymbolFileBreakpad)
-LLDB_PLUGIN_DECLARE(SymbolFileDWARF)
-LLDB_PLUGIN_DECLARE(SymbolFilePDB)
-LLDB_PLUGIN_DECLARE(SymbolFileSymtab)
-LLDB_PLUGIN_DECLARE(SymbolVendorWasm)
-LLDB_PLUGIN_DECLARE(UnwindAssemblyInstEmulation)
-LLDB_PLUGIN_DECLARE(UnwindAssembly_x86)
-LLDB_PLUGIN_DECLARE(EmulateInstructionARM)
-LLDB_PLUGIN_DECLARE(EmulateInstructionARM64)
-LLDB_PLUGIN_DECLARE(EmulateInstructionMIPS)
-LLDB_PLUGIN_DECLARE(EmulateInstructionMIPS64)
-LLDB_PLUGIN_DECLARE(EmulateInstructionPPC64)
-LLDB_PLUGIN_DECLARE(ItaniumABILanguageRuntime)
-LLDB_PLUGIN_DECLARE(AppleObjCRuntime)
-LLDB_PLUGIN_DECLARE(SystemRuntimeMacOSX)
-LLDB_PLUGIN_DECLARE(RenderScriptRuntime)
-LLDB_PLUGIN_DECLARE(CPlusPlusLanguage)
-LLDB_PLUGIN_DECLARE(ObjCLanguage)
-LLDB_PLUGIN_DECLARE(ObjCPlusPlusLanguage)
-#if defined(_WIN32)
-LLDB_PLUGIN_DECLARE(ProcessWindows)
-#endif
-#if defined(__FreeBSD__)
-LLDB_PLUGIN_DECLARE(ProcessFreeBSD)
-#endif
-#if defined(__APPLE__)
-LLDB_PLUGIN_DECLARE(SymbolVendorMacOSX)
-LLDB_PLUGIN_DECLARE(ProcessKDP)
-LLDB_PLUGIN_DECLARE(DynamicLoaderDarwinKernel)
-#endif
-LLDB_PLUGIN_DECLARE(StructuredDataDarwinLog)
-LLDB_PLUGIN_DECLARE(PlatformRemoteGDBServer)
-LLDB_PLUGIN_DECLARE(ProcessGDBRemote)
-LLDB_PLUGIN_DECLARE(DynamicLoaderMacOSXDYLD)
-LLDB_PLUGIN_DECLARE(DynamicLoaderPOSIXDYLD)
-LLDB_PLUGIN_DECLARE(DynamicLoaderStatic)
-LLDB_PLUGIN_DECLARE(DynamicLoaderWasmDYLD)
-LLDB_PLUGIN_DECLARE(DynamicLoaderWindowsDYLD)
+#define LLDB_PLUGIN(p) LLDB_PLUGIN_DECLARE(p)
+#include "Plugins/Plugins.def"
 
 using namespace lldb_private;
 
@@ -114,144 +33,24 @@ SystemInitializerFull::SystemInitializerFull() {}
 
 SystemInitializerFull::~SystemInitializerFull() {}
 
-#define LLDB_PROCESS_AArch64(op) op(ABIAArch64);
-#define LLDB_PROCESS_ARM(op) op(ABIARM);
-#define LLDB_PROCESS_ARC(op) op(ABISysV_arc);
-#define LLDB_PROCESS_Hexagon(op) op(ABISysV_hexagon);
-#define LLDB_PROCESS_Mips(op) op(ABIMips);
-#define LLDB_PROCESS_PowerPC(op) op(ABIPowerPC);
-#define LLDB_PROCESS_SystemZ(op) op(ABISysV_s390x);
-#define LLDB_PROCESS_X86(op) op(ABIX86);
-
-#define LLDB_PROCESS_AMDGPU(op)
-#define LLDB_PROCESS_AVR(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;
 
-  LLDB_PLUGIN_INITIALIZE(ObjectFileBreakpad);
-  LLDB_PLUGIN_INITIALIZE(ObjectFileELF);
-  LLDB_PLUGIN_INITIALIZE(ObjectFileMachO);
-  LLDB_PLUGIN_INITIALIZE(ObjectFilePECOFF);
-  LLDB_PLUGIN_INITIALIZE(ObjectFileWasm);
-
-  LLDB_PLUGIN_INITIALIZE(ObjectContainerBSDArchive);
-  LLDB_PLUGIN_INITIALIZE(ObjectContainerUniversalMachO);
-
-  LLDB_PLUGIN_INITIALIZE(ScriptInterpreterNone);
-
-#if LLDB_ENABLE_PYTHON
-  LLDB_PLUGIN_INITIALIZE(OperatingSystemPython);
-#endif
-
-#if LLDB_ENABLE_PYTHON
-  LLDB_PLUGIN_INITIALIZE(ScriptInterpreterPython);
-#endif
-
-#if LLDB_ENABLE_LUA
-  LLDB_PLUGIN_INITIALIZE(ScriptInterpreterLua);
-#endif
-  LLDB_PLUGIN_INITIALIZE(PlatformFreeBSD);
-  LLDB_PLUGIN_INITIALIZE(PlatformLinux);
-  LLDB_PLUGIN_INITIALIZE(PlatformNetBSD);
-  LLDB_PLUGIN_INITIALIZE(PlatformOpenBSD);
-  LLDB_PLUGIN_INITIALIZE(PlatformWindows);
-  LLDB_PLUGIN_INITIALIZE(PlatformAndroid);
-  LLDB_PLUGIN_INITIALIZE(PlatformMacOSX);
-
   // Initialize LLVM and Clang
   llvm::InitializeAllTargets();
   llvm::InitializeAllAsmPrinters();
   llvm::InitializeAllTargetMCs();
   llvm::InitializeAllDisassemblers();
 
-  LLDB_PLUGIN_INITIALIZE(TypeSystemClang);
-
-#define LLVM_TARGET(t) LLDB_PROCESS_##t(LLDB_PLUGIN_INITIALIZE)
-#include "llvm/Config/Targets.def"
-
-  LLDB_PLUGIN_INITIALIZE(ArchitectureArm);
-  LLDB_PLUGIN_INITIALIZE(ArchitectureMips);
-  LLDB_PLUGIN_INITIALIZE(ArchitecturePPC64);
-
-  LLDB_PLUGIN_INITIALIZE(DisassemblerLLVMC);
+#define LLDB_PLUGIN(p) LLDB_PLUGIN_INITIALIZE(p);
+#include "Plugins/Plugins.def"
 
-  LLDB_PLUGIN_INITIALIZE(JITLoaderGDB);
-  LLDB_PLUGIN_INITIALIZE(ProcessElfCore);
-  LLDB_PLUGIN_INITIALIZE(ProcessMachCore);
-  LLDB_PLUGIN_INITIALIZE(ProcessMinidump);
-  LLDB_PLUGIN_INITIALIZE(MemoryHistoryASan);
-  LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeASan);
-  LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeTSan);
-  LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeUBSan);
-  LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeMainThreadChecker);
-
-  LLDB_PLUGIN_INITIALIZE(SymbolVendorELF);
-  LLDB_PLUGIN_INITIALIZE(SymbolFileBreakpad);
-  LLDB_PLUGIN_INITIALIZE(SymbolFileDWARF);
-  LLDB_PLUGIN_INITIALIZE(SymbolFilePDB);
-  LLDB_PLUGIN_INITIALIZE(SymbolFileSymtab);
-  LLDB_PLUGIN_INITIALIZE(SymbolVendorWasm);
-  LLDB_PLUGIN_INITIALIZE(UnwindAssemblyInstEmulation);
-  LLDB_PLUGIN_INITIALIZE(UnwindAssembly_x86);
-
-  LLDB_PLUGIN_INITIALIZE(EmulateInstructionARM);
-  LLDB_PLUGIN_INITIALIZE(EmulateInstructionARM64);
-  LLDB_PLUGIN_INITIALIZE(EmulateInstructionMIPS);
-  LLDB_PLUGIN_INITIALIZE(EmulateInstructionMIPS64);
-  LLDB_PLUGIN_INITIALIZE(EmulateInstructionPPC64);
-
-  LLDB_PLUGIN_INITIALIZE(ItaniumABILanguageRuntime);
-  LLDB_PLUGIN_INITIALIZE(AppleObjCRuntime);
-  LLDB_PLUGIN_INITIALIZE(SystemRuntimeMacOSX);
-  LLDB_PLUGIN_INITIALIZE(RenderScriptRuntime);
-
-  LLDB_PLUGIN_INITIALIZE(CPlusPlusLanguage);
-  LLDB_PLUGIN_INITIALIZE(ObjCLanguage);
-  LLDB_PLUGIN_INITIALIZE(ObjCPlusPlusLanguage);
-
-#if defined(_WIN32)
-  LLDB_PLUGIN_INITIALIZE(ProcessWindows);
-#endif
-#if defined(__FreeBSD__)
-  LLDB_PLUGIN_INITIALIZE(ProcessFreeBSD);
-#endif
-#if defined(__APPLE__)
-  LLDB_PLUGIN_INITIALIZE(SymbolVendorMacOSX);
-  LLDB_PLUGIN_INITIALIZE(ProcessKDP);
-  LLDB_PLUGIN_INITIALIZE(DynamicLoaderDarwinKernel);
-#endif
-
-  // This plugin is valid on any host that talks to a Darwin remote. It
-  // shouldn't be limited to __APPLE__.
-  LLDB_PLUGIN_INITIALIZE(StructuredDataDarwinLog);
-
-  // Platform agnostic plugins
-  LLDB_PLUGIN_INITIALIZE(PlatformRemoteGDBServer);
-
-  LLDB_PLUGIN_INITIALIZE(ProcessGDBRemote);
-  LLDB_PLUGIN_INITIALIZE(DynamicLoaderMacOSXDYLD);
-  LLDB_PLUGIN_INITIALIZE(DynamicLoaderPOSIXDYLD);
-  LLDB_PLUGIN_INITIALIZE(DynamicLoaderWasmDYLD); // Before DynamicLoaderStatic.
-  LLDB_PLUGIN_INITIALIZE(DynamicLoaderStatic);
-  LLDB_PLUGIN_INITIALIZE(DynamicLoaderWindowsDYLD);
-
-  // Scan for any system or user LLDB plug-ins
+  // Scan for any system or user LLDB plug-ins.
   PluginManager::Initialize();
 
   // The process settings need to know about installed plug-ins, so the
-  // Settings must be initialized
-  // AFTER PluginManager::Initialize is called.
-
+  // Settings must be initialized AFTER PluginManager::Initialize is called.
   Debugger::SettingsInitialize();
 
   return llvm::Error::success();
@@ -263,106 +62,11 @@ void SystemInitializerFull::Terminate() {
 
   Debugger::SettingsTerminate();
 
-  // Terminate and unload and loaded system or user LLDB plug-ins
+  // Terminate and unload and loaded system or user LLDB plug-ins.
   PluginManager::Terminate();
 
-  LLDB_PLUGIN_TERMINATE(TypeSystemClang);
-
-  LLDB_PLUGIN_TERMINATE(ArchitectureArm);
-  LLDB_PLUGIN_TERMINATE(ArchitectureMips);
-  LLDB_PLUGIN_TERMINATE(ArchitecturePPC64);
-
-#define LLVM_TARGET(t) LLDB_PROCESS_##t(LLDB_PLUGIN_TERMINATE)
-#include "llvm/Config/Targets.def"
-
-  LLDB_PLUGIN_TERMINATE(DisassemblerLLVMC);
-
-  LLDB_PLUGIN_TERMINATE(JITLoaderGDB);
-  LLDB_PLUGIN_TERMINATE(ProcessElfCore);
-  LLDB_PLUGIN_TERMINATE(ProcessMachCore);
-  LLDB_PLUGIN_TERMINATE(ProcessMinidump);
-  LLDB_PLUGIN_TERMINATE(MemoryHistoryASan);
-
-  LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeASan);
-  LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeTSan);
-  LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeUBSan);
-  LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeMainThreadChecker);
-
-  LLDB_PLUGIN_TERMINATE(SymbolVendorWasm);
-  LLDB_PLUGIN_TERMINATE(SymbolVendorELF);
-  LLDB_PLUGIN_TERMINATE(SymbolFileBreakpad);
-  LLDB_PLUGIN_TERMINATE(SymbolFileDWARF);
-  LLDB_PLUGIN_TERMINATE(SymbolFilePDB);
-  LLDB_PLUGIN_TERMINATE(SymbolFileSymtab);
-  LLDB_PLUGIN_TERMINATE(UnwindAssembly_x86);
-  LLDB_PLUGIN_TERMINATE(UnwindAssemblyInstEmulation);
-
-  LLDB_PLUGIN_TERMINATE(EmulateInstructionARM);
-  LLDB_PLUGIN_TERMINATE(EmulateInstructionARM64);
-  LLDB_PLUGIN_TERMINATE(EmulateInstructionMIPS);
-  LLDB_PLUGIN_TERMINATE(EmulateInstructionMIPS64);
-  LLDB_PLUGIN_TERMINATE(EmulateInstructionPPC64);
-
-  LLDB_PLUGIN_TERMINATE(ItaniumABILanguageRuntime);
-  LLDB_PLUGIN_TERMINATE(AppleObjCRuntime);
-  LLDB_PLUGIN_TERMINATE(SystemRuntimeMacOSX);
-  LLDB_PLUGIN_TERMINATE(RenderScriptRuntime);
-
-  LLDB_PLUGIN_TERMINATE(CPlusPlusLanguage);
-  LLDB_PLUGIN_TERMINATE(ObjCLanguage);
-  LLDB_PLUGIN_TERMINATE(ObjCPlusPlusLanguage);
-
-#if defined(__APPLE__)
-  LLDB_PLUGIN_TERMINATE(DynamicLoaderDarwinKernel);
-  LLDB_PLUGIN_TERMINATE(ProcessKDP);
-  LLDB_PLUGIN_TERMINATE(SymbolVendorMacOSX);
-#endif
-
-#if defined(__FreeBSD__)
-  LLDB_PLUGIN_TERMINATE(ProcessFreeBSD);
-#endif
-  Debugger::SettingsTerminate();
-
-  LLDB_PLUGIN_TERMINATE(PlatformRemoteGDBServer);
-  LLDB_PLUGIN_TERMINATE(ProcessGDBRemote);
-  LLDB_PLUGIN_TERMINATE(StructuredDataDarwinLog);
-
-  LLDB_PLUGIN_TERMINATE(DynamicLoaderMacOSXDYLD);
-  LLDB_PLUGIN_TERMINATE(DynamicLoaderPOSIXDYLD);
-  LLDB_PLUGIN_TERMINATE(DynamicLoaderWasmDYLD);
-  LLDB_PLUGIN_TERMINATE(DynamicLoaderStatic);
-  LLDB_PLUGIN_TERMINATE(DynamicLoaderWindowsDYLD);
-
-  LLDB_PLUGIN_TERMINATE(PlatformFreeBSD);
-  LLDB_PLUGIN_TERMINATE(PlatformLinux);
-  LLDB_PLUGIN_TERMINATE(PlatformNetBSD);
-  LLDB_PLUGIN_TERMINATE(PlatformOpenBSD);
-  LLDB_PLUGIN_TERMINATE(PlatformWindows);
-  LLDB_PLUGIN_TERMINATE(PlatformAndroid);
-  LLDB_PLUGIN_TERMINATE(PlatformMacOSX);
-
-  LLDB_PLUGIN_TERMINATE(ObjectFileBreakpad);
-  LLDB_PLUGIN_TERMINATE(ObjectFileELF);
-  LLDB_PLUGIN_TERMINATE(ObjectFileMachO);
-  LLDB_PLUGIN_TERMINATE(ObjectFilePECOFF);
-  LLDB_PLUGIN_TERMINATE(ObjectFileWasm);
-
-  LLDB_PLUGIN_TERMINATE(ObjectContainerBSDArchive);
-  LLDB_PLUGIN_TERMINATE(ObjectContainerUniversalMachO);
-
-#if LLDB_ENABLE_PYTHON
-  LLDB_PLUGIN_TERMINATE(OperatingSystemPython);
-#endif
-
-#if LLDB_ENABLE_PYTHON
-  LLDB_PLUGIN_TERMINATE(ScriptInterpreterPython);
-#endif
-
-#if LLDB_ENABLE_LUA
-  LLDB_PLUGIN_TERMINATE(ScriptInterpreterLua);
-#endif
-
-  LLDB_PLUGIN_TERMINATE(ScriptInterpreterNone);
+#define LLDB_PLUGIN(p) LLDB_PLUGIN_TERMINATE(p);
+#include "Plugins/Plugins.def"
 
   // Now shutdown the common parts, in reverse order.
   SystemInitializerCommon::Terminate();
index 94f7c2a..8ba63b9 100644 (file)
@@ -1665,7 +1665,7 @@ ABIMacOSX_arm64::CreateInstance(ProcessSP process_sp, const ArchSpec &arch) {
   const llvm::Triple::VendorType vendor_type = arch.GetTriple().getVendor();
 
   if (vendor_type == llvm::Triple::Apple) {
-    if (arch_type == llvm::Triple::aarch64 || 
+    if (arch_type == llvm::Triple::aarch64 ||
         arch_type == llvm::Triple::aarch64_32) {
       return ABISP(
           new ABIMacOSX_arm64(std::move(process_sp), MakeMCRegisterInfo(arch)));
index 1690f1c..10e3b0f 100644 (file)
@@ -55,7 +55,7 @@
 using namespace lldb;
 using namespace lldb_private;
 
-LLDB_PLUGIN_DEFINE(ABISysV_arc)
+LLDB_PLUGIN_DEFINE_ADV(ABISysV_arc, ABIARC)
 
 namespace {
 namespace dwarf {
@@ -146,7 +146,7 @@ size_t ABISysV_arc::GetRedZoneSize() const { return 0; }
 bool ABISysV_arc::IsRegisterFileReduced(RegisterContext &reg_ctx) const {
   if (!m_is_reg_file_reduced) {
     const auto *const rf_build_reg = reg_ctx.GetRegisterInfoByName("rf_build");
-    
+
     const auto reg_value = reg_ctx.ReadRegisterAsUnsigned(rf_build_reg,
                                                           /*fail_value*/ 0);
     // RF_BUILD "Number of Entries" bit.
@@ -241,7 +241,7 @@ bool ABISysV_arc::PrepareTrivialCall(Thread &thread, addr_t sp, addr_t pc,
   // Make sure number of parameters matches prototype.
   assert(!prototype.isFunctionVarArg());
   assert(prototype.getFunctionNumParams() == args.size());
-  
+
   const size_t regs_for_args_count = IsRegisterFileReduced(*reg_ctx) ? 4U : 8U;
 
   // Number of arguments passed on stack.
index 73d8308..ef500cb 100644 (file)
@@ -34,8 +34,6 @@
 using namespace lldb;
 using namespace lldb_private;
 
-LLDB_PLUGIN_DEFINE(ABIMacOSX_arm)
-
 static RegisterInfo g_register_infos[] = {
     //  NAME       ALT       SZ OFF ENCODING         FORMAT          EH_FRAME
     //  DWARF               GENERIC                     PROCESS PLUGIN
index 601d9c2..32313d4 100644 (file)
@@ -32,7 +32,7 @@
 using namespace lldb;
 using namespace lldb_private;
 
-LLDB_PLUGIN_DEFINE(ABISysV_hexagon)
+LLDB_PLUGIN_DEFINE_ADV(ABISysV_hexagon, ABIHexagon)
 
 static RegisterInfo g_register_infos[] = {
     // hexagon-core.xml
index bfeaa12..eced2ad 100644 (file)
@@ -32,7 +32,7 @@
 using namespace lldb;
 using namespace lldb_private;
 
-LLDB_PLUGIN_DEFINE(ABISysV_s390x)
+LLDB_PLUGIN_DEFINE_ADV(ABISysV_s390x, ABISystemZ)
 
 enum dwarf_regnums {
   // General Purpose Registers
index 08817ba..24fb858 100644 (file)
@@ -21,3 +21,25 @@ add_subdirectory(SystemRuntime)
 add_subdirectory(SymbolVendor)
 add_subdirectory(TypeSystem)
 add_subdirectory(UnwindAssembly)
+
+set(LLDB_STRIPPED_PLUGINS)
+get_property(LLDB_ALL_PLUGINS GLOBAL PROPERTY LLDB_PLUGINS)
+
+set(LLDB_ENUM_PLUGINS "")
+
+foreach(p ${LLDB_ALL_PLUGINS})
+  # Strip lldbPlugin form the plugin name.
+  string(SUBSTRING ${p} 10 -1 pStripped)
+  if(${pStripped} MATCHES "^ScriptInterpreter*")
+    set(LLDB_ENUM_PLUGINS "${LLDB_ENUM_PLUGINS}LLDB_SCRIPT_PLUGIN(${pStripped})\n")
+  else()
+    set(LLDB_ENUM_PLUGINS "${LLDB_ENUM_PLUGINS}LLDB_PLUGIN(${pStripped})\n")
+  endif()
+endforeach(p)
+
+configure_file(
+  ${CMAKE_CURRENT_SOURCE_DIR}/Plugins.def.in
+  ${CMAKE_CURRENT_BINARY_DIR}/Plugins.def
+  )
+
+set_property(GLOBAL PROPERTY LLDB_PLUGINS_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR})
index a25a436..51959cb 100644 (file)
@@ -1,4 +1,4 @@
-add_lldb_library(lldbPluginDisassemblerLLVM PLUGIN
+add_lldb_library(lldbPluginDisassemblerLLVMC PLUGIN
   DisassemblerLLVMC.cpp
 
   LINK_LIBS
index 4e227ab..fe86b29 100644 (file)
@@ -25,6 +25,8 @@
 using namespace lldb;
 using namespace lldb_private;
 
+LLDB_PLUGIN_DEFINE(DynamicLoaderHexagonDYLD)
+
 // Aidan 21/05/2014
 //
 // Notes about hexagon dynamic loading:
index c572c30..ac60af5 100644 (file)
@@ -29,7 +29,7 @@
 using namespace lldb;
 using namespace lldb_private;
 
-LLDB_PLUGIN_DEFINE(DynamicLoaderPOSIXDYLD)
+LLDB_PLUGIN_DEFINE_ADV(DynamicLoaderPOSIXDYLD, DynamicLoaderPosixDYLD)
 
 void DynamicLoaderPOSIXDYLD::Initialize() {
   PluginManager::RegisterPlugin(GetPluginNameStatic(),
index 909e92a..0506bb6 100644 (file)
@@ -2,7 +2,7 @@ if(NOT LLDB_BUILT_STANDALONE)
   set(tablegen_deps intrinsics_gen)
 endif()
 
-add_lldb_library(lldbPluginExpressionParserClang PLUGIN
+add_lldb_library(lldbPluginExpressionParserClang 
   ASTResultSynthesizer.cpp
   ASTStructExtractor.cpp
   ASTUtils.cpp
index e87bc1f..aa99db4 100644 (file)
@@ -30,7 +30,7 @@
 using namespace lldb;
 using namespace lldb_private;
 
-LLDB_PLUGIN_DEFINE(EmulateInstructionARM)
+LLDB_PLUGIN_DEFINE_ADV(EmulateInstructionARM, InstructionARM)
 
 // Convenient macro definitions.
 #define APSR_C Bit32(m_opcode_cpsr, CPSR_C_POS)
index 144d383..f584539 100644 (file)
@@ -47,7 +47,7 @@
 using namespace lldb;
 using namespace lldb_private;
 
-LLDB_PLUGIN_DEFINE(EmulateInstructionARM64)
+LLDB_PLUGIN_DEFINE_ADV(EmulateInstructionARM64, InstructionARM64)
 
 static bool LLDBTableGetRegisterInfo(uint32_t reg_num, RegisterInfo &reg_info) {
   if (reg_num >= llvm::array_lengthof(g_register_infos_arm64_le))
index ae74c89..61eb891 100644 (file)
@@ -40,7 +40,7 @@
 using namespace lldb;
 using namespace lldb_private;
 
-LLDB_PLUGIN_DEFINE(EmulateInstructionMIPS)
+LLDB_PLUGIN_DEFINE_ADV(EmulateInstructionMIPS, InstructionMIPS)
 
 #define UInt(x) ((uint64_t)x)
 #define integer int64_t
index 9a578ab..b830559 100644 (file)
@@ -40,7 +40,7 @@
 using namespace lldb;
 using namespace lldb_private;
 
-LLDB_PLUGIN_DEFINE(EmulateInstructionMIPS64)
+LLDB_PLUGIN_DEFINE_ADV(EmulateInstructionMIPS64, InstructionMIPS64)
 
 #define UInt(x) ((uint64_t)x)
 #define integer int64_t
index 2588c93..1cab8fd 100644 (file)
@@ -25,7 +25,7 @@
 using namespace lldb;
 using namespace lldb_private;
 
-LLDB_PLUGIN_DEFINE(EmulateInstructionPPC64)
+LLDB_PLUGIN_DEFINE_ADV(EmulateInstructionPPC64, InstructionPPC64)
 
 EmulateInstructionPPC64::EmulateInstructionPPC64(const ArchSpec &arch)
     : EmulateInstruction(arch) {}
index 854320d..980d788 100644 (file)
@@ -1,4 +1,4 @@
-add_lldb_library(lldbPluginClangCommon PLUGIN
+add_lldb_library(lldbPluginClangCommon
   ClangHighlighter.cpp
 
   LINK_LIBS
index 7b220e4..6aeddb1 100644 (file)
@@ -8,7 +8,7 @@ if (CXX_SUPPORTS_NO_NESTED_ANON_TYPES)
   set(EXTRA_CXXFLAGS ${EXTRA_CXXFLAGS} -Wno-nested-anon-types)
 endif ()
 
-add_lldb_library(lldbPluginObjCLanguage PLUGIN
+add_lldb_library(lldbPluginObjCLanguage 
   ObjCLanguage.cpp
   CF.cpp
   Cocoa.cpp
index 508a361..ebfa7c8 100644 (file)
@@ -1,4 +1,4 @@
-add_lldb_library(lldbPluginCPPRuntime PLUGIN
+add_lldb_library(lldbPluginCPPRuntime 
   CPPLanguageRuntime.cpp
 
   LINK_LIBS
index e08f0f0..df2aaca 100644 (file)
@@ -40,7 +40,7 @@
 using namespace lldb;
 using namespace lldb_private;
 
-LLDB_PLUGIN_DEFINE(ItaniumABILanguageRuntime)
+LLDB_PLUGIN_DEFINE_ADV(ItaniumABILanguageRuntime, CXXItaniumABI)
 
 static const char *vtable_demangled_prefix = "vtable for ";
 
index 5b3ea2f..d6de9dc 100644 (file)
@@ -1,4 +1,4 @@
-add_lldb_library(lldbPluginObjCRuntime PLUGIN
+add_lldb_library(lldbPluginObjCRuntime
   ObjCLanguageRuntime.cpp
 
   LINK_LIBS
index bc30e57..bb56379 100644 (file)
@@ -20,7 +20,8 @@ using namespace lldb;
 using namespace lldb_private;
 using namespace llvm::MachO;
 
-LLDB_PLUGIN_DEFINE(ObjectContainerUniversalMachO)
+LLDB_PLUGIN_DEFINE_ADV(ObjectContainerUniversalMachO,
+                       ObjectContainerMachOArchive)
 
 void ObjectContainerUniversalMachO::Initialize() {
   PluginManager::RegisterPlugin(GetPluginNameStatic(),
index 2d505bc..371bbb5 100644 (file)
@@ -39,6 +39,8 @@
 using namespace lldb;
 using namespace lldb_private;
 
+LLDB_PLUGIN_DEFINE(ObjectFileJIT)
+
 char ObjectFileJIT::ID;
 
 void ObjectFileJIT::Initialize() {
index 655007a..06d909b 100644 (file)
@@ -1 +1,3 @@
-add_subdirectory(Python)
+if (LLDB_ENABLE_PYTHON)
+  add_subdirectory(Python)
+endif()
index c4c62e4..106fe96 100644 (file)
@@ -1,4 +1,4 @@
-add_lldb_library(lldbPluginPlatformPOSIX PLUGIN
+add_lldb_library(lldbPluginPlatformPOSIX 
   PlatformPOSIX.cpp
 
    LINK_LIBS
index 550b680..b046755 100644 (file)
@@ -35,7 +35,7 @@ using namespace lldb;
 using namespace lldb_private;
 using namespace lldb_private::platform_gdb_server;
 
-LLDB_PLUGIN_DEFINE(PlatformRemoteGDBServer)
+LLDB_PLUGIN_DEFINE_ADV(PlatformRemoteGDBServer, PlatformGDB)
 
 static bool g_initialized = false;
 
diff --git a/lldb/source/Plugins/Plugins.def.in b/lldb/source/Plugins/Plugins.def.in
new file mode 100644 (file)
index 0000000..926ab6d
--- /dev/null
@@ -0,0 +1,35 @@
+/*===- lldb/source/Plugin/Plugins.def ---------------------------*- C++ -*-===*\
+|*                                                                            *|
+|* Part of the LLVM Project, under the Apache License v2.0 with LLVM          *|
+|* Exceptions.                                                                *|
+|* See https://llvm.org/LICENSE.txt for license information.                  *|
+|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception                    *|
+|*                                                                            *|
+|*===----------------------------------------------------------------------===*|
+|*                                                                            *|
+|* This file enumerates all of the plugins supported by this build of LLDB.   *|
+|* Clients of this file should define the LLDB_PLUGIN macro to be a           *|
+|* function-like macro with a single parameter (the name of the plugin)       *|
+|* including this file will then enumerate all of the plugins. Script         *|
+|* interpreter plugins can be enumerated separately by defining               *|
+|* LLDB_SCRIPT_PLUGIN in which case they are not part of LLDB_PLUGIN.         *|
+|*                                                                            *|
+|*                                                                            *|
+|* The set of plugins supported by LLDB is generated at configuration         *|
+|* time, at which point this header is generated. Do not modify this          *|
+|* header directly.                                                           *|
+|*                                                                            *|
+\*===----------------------------------------------------------------------===*/
+
+#ifndef LLDB_PLUGIN
+#  error Please define the macro LLDB_PLUGIN(PluginName)
+#endif
+
+#ifndef LLDB_SCRIPT_PLUGIN
+#define LLDB_SCRIPT_PLUGIN(p) LLDB_PLUGIN(p)
+#endif
+
+@LLDB_ENUM_PLUGINS@
+
+#undef LLDB_PLUGIN
+#undef LLDB_SCRIPT_PLUGIN
index e78912e..09d1965 100644 (file)
@@ -50,7 +50,7 @@
 using namespace lldb;
 using namespace lldb_private;
 
-LLDB_PLUGIN_DEFINE(ProcessKDP)
+LLDB_PLUGIN_DEFINE_ADV(ProcessKDP, ProcessMacOSXKernel)
 
 namespace {
 
index 55746b0..dfc8c11 100644 (file)
@@ -1,4 +1,4 @@
-add_lldb_library(lldbPluginProcessUtility PLUGIN
+add_lldb_library(lldbPluginProcessUtility
   AuxVector.cpp
   DynamicRegisterInfo.cpp
   FreeBSDSignals.cpp
index 73dec53..e681909 100644 (file)
@@ -66,6 +66,8 @@ using namespace npdb;
 using namespace llvm::codeview;
 using namespace llvm::pdb;
 
+LLDB_PLUGIN_DEFINE(SymbolFileNativePDB)
+
 char SymbolFileNativePDB::ID;
 
 static lldb::LanguageType TranslateLanguage(PDB_Lang lang) {
index 430ba09..dc62e95 100644 (file)
@@ -30,7 +30,7 @@
 using namespace lldb;
 using namespace lldb_private;
 
-LLDB_PLUGIN_DEFINE(UnwindAssembly_x86)
+LLDB_PLUGIN_DEFINE_ADV(UnwindAssembly_x86, UnwindAssemblyX86)
 
 //  UnwindAssemblyParser_x86 method definitions
 
index 2ab1cea..f3530fd 100644 (file)
@@ -23,5 +23,6 @@ add_lldb_tool(lldb-test
   LINK_COMPONENTS
     Support
   )
-  
-include_directories(${LLDB_SOURCE_DIR}/source)
+
+target_include_directories(lldb-test PRIVATE ${LLDB_SOURCE_DIR}/source)
+target_include_directories(lldb-test PRIVATE ${LLDB_BINARY_DIR}/source)
index b33b086..d444320 100644 (file)
 
 #include <string>
 
-LLDB_PLUGIN_DECLARE(ABIAArch64);
-LLDB_PLUGIN_DECLARE(ABIARM);
-LLDB_PLUGIN_DECLARE(ABISysV_arc);
-LLDB_PLUGIN_DECLARE(ABISysV_hexagon);
-LLDB_PLUGIN_DECLARE(ABIMips);
-LLDB_PLUGIN_DECLARE(ABIPowerPC);
-LLDB_PLUGIN_DECLARE(ABISysV_s390x);
-LLDB_PLUGIN_DECLARE(ABIX86);
-LLDB_PLUGIN_DECLARE(ObjectFileBreakpad)
-LLDB_PLUGIN_DECLARE(ObjectFileELF)
-LLDB_PLUGIN_DECLARE(ObjectFileMachO)
-LLDB_PLUGIN_DECLARE(ObjectFilePECOFF)
-LLDB_PLUGIN_DECLARE(ObjectFileWasm)
-LLDB_PLUGIN_DECLARE(ObjectContainerBSDArchive)
-LLDB_PLUGIN_DECLARE(ObjectContainerUniversalMachO)
-LLDB_PLUGIN_DECLARE(ScriptInterpreterNone)
-LLDB_PLUGIN_DECLARE(PlatformFreeBSD)
-LLDB_PLUGIN_DECLARE(PlatformLinux)
-LLDB_PLUGIN_DECLARE(PlatformNetBSD)
-LLDB_PLUGIN_DECLARE(PlatformOpenBSD)
-LLDB_PLUGIN_DECLARE(PlatformWindows)
-LLDB_PLUGIN_DECLARE(PlatformAndroid)
-LLDB_PLUGIN_DECLARE(PlatformMacOSX)
-LLDB_PLUGIN_DECLARE(TypeSystemClang)
-LLDB_PLUGIN_DECLARE(ArchitectureArm)
-LLDB_PLUGIN_DECLARE(ArchitectureMips)
-LLDB_PLUGIN_DECLARE(ArchitecturePPC64)
-LLDB_PLUGIN_DECLARE(DisassemblerLLVMC)
-LLDB_PLUGIN_DECLARE(JITLoaderGDB)
-LLDB_PLUGIN_DECLARE(ProcessElfCore)
-LLDB_PLUGIN_DECLARE(ProcessMachCore)
-LLDB_PLUGIN_DECLARE(ProcessMinidump)
-LLDB_PLUGIN_DECLARE(MemoryHistoryASan)
-LLDB_PLUGIN_DECLARE(InstrumentationRuntimeASan)
-LLDB_PLUGIN_DECLARE(InstrumentationRuntimeTSan)
-LLDB_PLUGIN_DECLARE(InstrumentationRuntimeUBSan)
-LLDB_PLUGIN_DECLARE(InstrumentationRuntimeMainThreadChecker)
-LLDB_PLUGIN_DECLARE(SymbolVendorELF)
-LLDB_PLUGIN_DECLARE(SymbolFileBreakpad)
-LLDB_PLUGIN_DECLARE(SymbolFileDWARF)
-LLDB_PLUGIN_DECLARE(SymbolFilePDB)
-LLDB_PLUGIN_DECLARE(SymbolFileSymtab)
-LLDB_PLUGIN_DECLARE(SymbolVendorWasm)
-LLDB_PLUGIN_DECLARE(UnwindAssemblyInstEmulation)
-LLDB_PLUGIN_DECLARE(UnwindAssembly_x86)
-LLDB_PLUGIN_DECLARE(EmulateInstructionARM)
-LLDB_PLUGIN_DECLARE(EmulateInstructionARM64)
-LLDB_PLUGIN_DECLARE(EmulateInstructionMIPS)
-LLDB_PLUGIN_DECLARE(EmulateInstructionMIPS64)
-LLDB_PLUGIN_DECLARE(EmulateInstructionPPC64)
-LLDB_PLUGIN_DECLARE(ItaniumABILanguageRuntime)
-LLDB_PLUGIN_DECLARE(AppleObjCRuntime)
-LLDB_PLUGIN_DECLARE(SystemRuntimeMacOSX)
-LLDB_PLUGIN_DECLARE(RenderScriptRuntime)
-LLDB_PLUGIN_DECLARE(CPlusPlusLanguage)
-LLDB_PLUGIN_DECLARE(ObjCLanguage)
-LLDB_PLUGIN_DECLARE(ObjCPlusPlusLanguage)
-#if defined(_WIN32)
-LLDB_PLUGIN_DECLARE(ProcessWindows)
-#endif
-#if defined(__FreeBSD__)
-LLDB_PLUGIN_DECLARE(ProcessFreeBSD)
-#endif
-#if defined(__APPLE__)
-LLDB_PLUGIN_DECLARE(SymbolVendorMacOSX)
-LLDB_PLUGIN_DECLARE(ProcessKDP)
-LLDB_PLUGIN_DECLARE(DynamicLoaderDarwinKernel)
-#endif
-LLDB_PLUGIN_DECLARE(StructuredDataDarwinLog)
-LLDB_PLUGIN_DECLARE(PlatformRemoteGDBServer)
-LLDB_PLUGIN_DECLARE(ProcessGDBRemote)
-LLDB_PLUGIN_DECLARE(DynamicLoaderMacOSXDYLD)
-LLDB_PLUGIN_DECLARE(DynamicLoaderPOSIXDYLD)
-LLDB_PLUGIN_DECLARE(DynamicLoaderStatic)
-LLDB_PLUGIN_DECLARE(DynamicLoaderWasmDYLD)
-LLDB_PLUGIN_DECLARE(DynamicLoaderWindowsDYLD)
+#define LLDB_PLUGIN(p) LLDB_PLUGIN_DECLARE(p)
+#include "Plugins/Plugins.def"
 
 using namespace lldb_private;
 
@@ -100,133 +26,25 @@ SystemInitializerTest::SystemInitializerTest() {}
 
 SystemInitializerTest::~SystemInitializerTest() {}
 
-#define LLDB_PROCESS_AArch64(op) op(ABIAArch64);
-#define LLDB_PROCESS_ARM(op) op(ABIARM);
-#define LLDB_PROCESS_Hexagon(op) op(ABISysV_hexagon);
-#define LLDB_PROCESS_Mips(op) op(ABIMips);
-#define LLDB_PROCESS_PowerPC(op) op(ABIPowerPC);
-#define LLDB_PROCESS_SystemZ(op) op(ABISysV_s390x);
-#define LLDB_PROCESS_X86(op) op(ABIX86);
-
-#define LLDB_PROCESS_AMDGPU(op)
-#define LLDB_PROCESS_ARC(op)
-#define LLDB_PROCESS_AVR(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 SystemInitializerTest::Initialize() {
   if (auto e = SystemInitializerCommon::Initialize())
     return e;
 
-  LLDB_PLUGIN_INITIALIZE(ObjectFileBreakpad);
-  LLDB_PLUGIN_INITIALIZE(ObjectFileELF);
-  LLDB_PLUGIN_INITIALIZE(ObjectFileMachO);
-  LLDB_PLUGIN_INITIALIZE(ObjectFilePECOFF);
-  LLDB_PLUGIN_INITIALIZE(ObjectFileWasm);
-
-  LLDB_PLUGIN_INITIALIZE(ObjectContainerBSDArchive);
-  LLDB_PLUGIN_INITIALIZE(ObjectContainerUniversalMachO);
-
-  LLDB_PLUGIN_INITIALIZE(ScriptInterpreterNone);
-
-  LLDB_PLUGIN_INITIALIZE(PlatformFreeBSD);
-  LLDB_PLUGIN_INITIALIZE(PlatformLinux);
-  LLDB_PLUGIN_INITIALIZE(PlatformNetBSD);
-  LLDB_PLUGIN_INITIALIZE(PlatformOpenBSD);
-  LLDB_PLUGIN_INITIALIZE(PlatformWindows);
-  LLDB_PLUGIN_INITIALIZE(PlatformAndroid);
-  LLDB_PLUGIN_INITIALIZE(PlatformMacOSX);
-
   // Initialize LLVM and Clang
   llvm::InitializeAllTargets();
   llvm::InitializeAllAsmPrinters();
   llvm::InitializeAllTargetMCs();
   llvm::InitializeAllDisassemblers();
 
-  LLDB_PLUGIN_INITIALIZE(TypeSystemClang);
-
-#define LLVM_TARGET(t) LLDB_PROCESS_##t(LLDB_PLUGIN_INITIALIZE)
-#include "llvm/Config/Targets.def"
-
-  LLDB_PLUGIN_INITIALIZE(ArchitectureArm);
-  LLDB_PLUGIN_INITIALIZE(ArchitectureMips);
-  LLDB_PLUGIN_INITIALIZE(ArchitecturePPC64);
-
-  LLDB_PLUGIN_INITIALIZE(DisassemblerLLVMC);
-
-  LLDB_PLUGIN_INITIALIZE(JITLoaderGDB);
-  LLDB_PLUGIN_INITIALIZE(ProcessElfCore);
-  LLDB_PLUGIN_INITIALIZE(ProcessMachCore);
-  LLDB_PLUGIN_INITIALIZE(ProcessMinidump);
-  LLDB_PLUGIN_INITIALIZE(MemoryHistoryASan);
-  LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeASan);
-  LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeTSan);
-  LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeUBSan);
-  LLDB_PLUGIN_INITIALIZE(InstrumentationRuntimeMainThreadChecker);
+#define LLDB_SCRIPT_PLUGIN(p)
+#define LLDB_PLUGIN(p) LLDB_PLUGIN_INITIALIZE(p);
+#include "Plugins/Plugins.def"
 
-  LLDB_PLUGIN_INITIALIZE(SymbolVendorELF);
-  LLDB_PLUGIN_INITIALIZE(SymbolFileBreakpad);
-  LLDB_PLUGIN_INITIALIZE(SymbolFileDWARF);
-  LLDB_PLUGIN_INITIALIZE(SymbolFilePDB);
-  LLDB_PLUGIN_INITIALIZE(SymbolFileSymtab);
-  LLDB_PLUGIN_INITIALIZE(SymbolVendorWasm);
-  LLDB_PLUGIN_INITIALIZE(UnwindAssemblyInstEmulation);
-  LLDB_PLUGIN_INITIALIZE(UnwindAssembly_x86);
-
-  LLDB_PLUGIN_INITIALIZE(EmulateInstructionARM);
-  LLDB_PLUGIN_INITIALIZE(EmulateInstructionARM64);
-  LLDB_PLUGIN_INITIALIZE(EmulateInstructionMIPS);
-  LLDB_PLUGIN_INITIALIZE(EmulateInstructionMIPS64);
-  LLDB_PLUGIN_INITIALIZE(EmulateInstructionPPC64);
-
-  LLDB_PLUGIN_INITIALIZE(ItaniumABILanguageRuntime);
-  LLDB_PLUGIN_INITIALIZE(AppleObjCRuntime);
-  LLDB_PLUGIN_INITIALIZE(SystemRuntimeMacOSX);
-  LLDB_PLUGIN_INITIALIZE(RenderScriptRuntime);
-
-  LLDB_PLUGIN_INITIALIZE(CPlusPlusLanguage);
-  LLDB_PLUGIN_INITIALIZE(ObjCLanguage);
-  LLDB_PLUGIN_INITIALIZE(ObjCPlusPlusLanguage);
-
-#if defined(_WIN32)
-  LLDB_PLUGIN_INITIALIZE(ProcessWindows);
-#endif
-#if defined(__FreeBSD__)
-  LLDB_PLUGIN_INITIALIZE(ProcessFreeBSD);
-#endif
-#if defined(__APPLE__)
-  LLDB_PLUGIN_INITIALIZE(SymbolVendorMacOSX);
-  LLDB_PLUGIN_INITIALIZE(ProcessKDP);
-  LLDB_PLUGIN_INITIALIZE(DynamicLoaderDarwinKernel);
-#endif
-
-  // This plugin is valid on any host that talks to a Darwin remote. It
-  // shouldn't be limited to __APPLE__.
-  LLDB_PLUGIN_INITIALIZE(StructuredDataDarwinLog);
-
-  // Platform agnostic plugins
-  LLDB_PLUGIN_INITIALIZE(PlatformRemoteGDBServer);
-
-  LLDB_PLUGIN_INITIALIZE(ProcessGDBRemote);
-  LLDB_PLUGIN_INITIALIZE(DynamicLoaderMacOSXDYLD);
-  LLDB_PLUGIN_INITIALIZE(DynamicLoaderPOSIXDYLD);
-  LLDB_PLUGIN_INITIALIZE(DynamicLoaderWasmDYLD); // Before DynamicLoaderStatic.
-  LLDB_PLUGIN_INITIALIZE(DynamicLoaderStatic);
-  LLDB_PLUGIN_INITIALIZE(DynamicLoaderWindowsDYLD);
-
-  // Scan for any system or user LLDB plug-ins
+  // Scan for any system or user LLDB plug-ins.
   PluginManager::Initialize();
 
   // The process settings need to know about installed plug-ins, so the
-  // Settings must be initialized
-  // AFTER PluginManager::Initialize is called.
-
+  // Settings must be initialized AFTER PluginManager::Initialize is called.
   Debugger::SettingsInitialize();
 
   return llvm::Error::success();
@@ -238,94 +56,12 @@ void SystemInitializerTest::Terminate() {
 
   Debugger::SettingsTerminate();
 
-  // Terminate and unload and loaded system or user LLDB plug-ins
+  // Terminate and unload and loaded system or user LLDB plug-ins.
   PluginManager::Terminate();
 
-  LLDB_PLUGIN_TERMINATE(TypeSystemClang);
-
-  LLDB_PLUGIN_TERMINATE(ArchitectureArm);
-  LLDB_PLUGIN_TERMINATE(ArchitectureMips);
-  LLDB_PLUGIN_TERMINATE(ArchitecturePPC64);
-
-#define LLVM_TARGET(t) LLDB_PROCESS_##t(LLDB_PLUGIN_TERMINATE)
-#include "llvm/Config/Targets.def"
-
-  LLDB_PLUGIN_TERMINATE(DisassemblerLLVMC);
-
-  LLDB_PLUGIN_TERMINATE(JITLoaderGDB);
-  LLDB_PLUGIN_TERMINATE(ProcessElfCore);
-  LLDB_PLUGIN_TERMINATE(ProcessMachCore);
-  LLDB_PLUGIN_TERMINATE(ProcessMinidump);
-  LLDB_PLUGIN_TERMINATE(MemoryHistoryASan);
-
-  LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeASan);
-  LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeTSan);
-  LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeUBSan);
-  LLDB_PLUGIN_TERMINATE(InstrumentationRuntimeMainThreadChecker);
-
-  LLDB_PLUGIN_TERMINATE(SymbolVendorWasm);
-  LLDB_PLUGIN_TERMINATE(SymbolVendorELF);
-  LLDB_PLUGIN_TERMINATE(SymbolFileBreakpad);
-  LLDB_PLUGIN_TERMINATE(SymbolFileDWARF);
-  LLDB_PLUGIN_TERMINATE(SymbolFilePDB);
-  LLDB_PLUGIN_TERMINATE(SymbolFileSymtab);
-  LLDB_PLUGIN_TERMINATE(UnwindAssembly_x86);
-  LLDB_PLUGIN_TERMINATE(UnwindAssemblyInstEmulation);
-
-  LLDB_PLUGIN_TERMINATE(EmulateInstructionARM);
-  LLDB_PLUGIN_TERMINATE(EmulateInstructionARM64);
-  LLDB_PLUGIN_TERMINATE(EmulateInstructionMIPS);
-  LLDB_PLUGIN_TERMINATE(EmulateInstructionMIPS64);
-  LLDB_PLUGIN_TERMINATE(EmulateInstructionPPC64);
-
-  LLDB_PLUGIN_TERMINATE(ItaniumABILanguageRuntime);
-  LLDB_PLUGIN_TERMINATE(AppleObjCRuntime);
-  LLDB_PLUGIN_TERMINATE(SystemRuntimeMacOSX);
-  LLDB_PLUGIN_TERMINATE(RenderScriptRuntime);
-
-  LLDB_PLUGIN_TERMINATE(CPlusPlusLanguage);
-  LLDB_PLUGIN_TERMINATE(ObjCLanguage);
-  LLDB_PLUGIN_TERMINATE(ObjCPlusPlusLanguage);
-
-#if defined(__APPLE__)
-  LLDB_PLUGIN_TERMINATE(DynamicLoaderDarwinKernel);
-  LLDB_PLUGIN_TERMINATE(ProcessKDP);
-  LLDB_PLUGIN_TERMINATE(SymbolVendorMacOSX);
-#endif
-
-#if defined(__FreeBSD__)
-  LLDB_PLUGIN_TERMINATE(ProcessFreeBSD);
-#endif
-  Debugger::SettingsTerminate();
-
-  LLDB_PLUGIN_TERMINATE(PlatformRemoteGDBServer);
-  LLDB_PLUGIN_TERMINATE(ProcessGDBRemote);
-  LLDB_PLUGIN_TERMINATE(StructuredDataDarwinLog);
-
-  LLDB_PLUGIN_TERMINATE(DynamicLoaderMacOSXDYLD);
-  LLDB_PLUGIN_TERMINATE(DynamicLoaderPOSIXDYLD);
-  LLDB_PLUGIN_TERMINATE(DynamicLoaderWasmDYLD);
-  LLDB_PLUGIN_TERMINATE(DynamicLoaderStatic);
-  LLDB_PLUGIN_TERMINATE(DynamicLoaderWindowsDYLD);
-
-  LLDB_PLUGIN_TERMINATE(PlatformFreeBSD);
-  LLDB_PLUGIN_TERMINATE(PlatformLinux);
-  LLDB_PLUGIN_TERMINATE(PlatformNetBSD);
-  LLDB_PLUGIN_TERMINATE(PlatformOpenBSD);
-  LLDB_PLUGIN_TERMINATE(PlatformWindows);
-  LLDB_PLUGIN_TERMINATE(PlatformAndroid);
-  LLDB_PLUGIN_TERMINATE(PlatformMacOSX);
-
-  LLDB_PLUGIN_TERMINATE(ObjectFileBreakpad);
-  LLDB_PLUGIN_TERMINATE(ObjectFileELF);
-  LLDB_PLUGIN_TERMINATE(ObjectFileMachO);
-  LLDB_PLUGIN_TERMINATE(ObjectFilePECOFF);
-  LLDB_PLUGIN_TERMINATE(ObjectFileWasm);
-
-  LLDB_PLUGIN_TERMINATE(ObjectContainerBSDArchive);
-  LLDB_PLUGIN_TERMINATE(ObjectContainerUniversalMachO);
-
-  LLDB_PLUGIN_TERMINATE(ScriptInterpreterNone);
+#define LLDB_SCRIPT_PLUGIN(p)
+#define LLDB_PLUGIN(p) LLDB_PLUGIN_TERMINATE(p);
+#include "Plugins/Plugins.def"
 
   // Now shutdown the common parts, in reverse order.
   SystemInitializerCommon::Terminate();
index de78d12..a0a3c26 100644 (file)
@@ -6,7 +6,7 @@ if("ARM" IN_LIST LLVM_TARGETS_TO_BUILD)
       lldbCore
       lldbSymbol
       lldbTarget
-      lldbPluginDisassemblerLLVM
+      lldbPluginDisassemblerLLVMC
       lldbPluginProcessUtility
     LINK_COMPONENTS
       Support
index 7792479..f3bbd71 100644 (file)
@@ -5,7 +5,7 @@ add_lldb_unittest(Arm64InstEmulationTests
     lldbSymbol
     lldbTarget
     lldbPluginUnwindAssemblyInstEmulation
-    lldbPluginDisassemblerLLVM
+    lldbPluginDisassemblerLLVMC
     lldbPluginInstructionARM64
     lldbPluginProcessUtility
   LINK_COMPONENTS
index d803f45..679f766 100644 (file)
@@ -5,7 +5,7 @@ add_lldb_unittest(PPC64InstEmulationTests
     lldbSymbol
     lldbTarget
     lldbPluginUnwindAssemblyInstEmulation
-    lldbPluginDisassemblerLLVM
+    lldbPluginDisassemblerLLVMC
     lldbPluginInstructionPPC64
     lldbPluginProcessUtility
   LINK_COMPONENTS