Index: lldb/source/API/SystemInitializerFull.cpp =================================================================== --- lldb/source/API/SystemInitializerFull.cpp +++ lldb/source/API/SystemInitializerFull.cpp @@ -10,14 +10,6 @@ #include "lldb/API/SBCommandInterpreter.h" #include "lldb/Host/Config.h" -#if LLDB_ENABLE_PYTHON -#include "Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h" -#endif - -#if LLDB_ENABLE_LUA -#include "Plugins/ScriptInterpreter/Lua/ScriptInterpreterLua.h" -#endif - #include "lldb/Core/Debugger.h" #include "lldb/Host/Host.h" #include "lldb/Initialization/SystemInitializerCommon.h" @@ -44,7 +36,8 @@ #include "Plugins/Architecture/Mips/ArchitectureMips.h" #include "Plugins/Architecture/PPC64/ArchitecturePPC64.h" #include "Plugins/Disassembler/llvm/DisassemblerLLVMC.h" -#include "Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOS.h" +#include "Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.h" +#include "Plugins/DynamicLoader/Hexagon-DYLD/DynamicLoaderHexagonDYLD.h" #include "Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.h" #include "Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.h" #include "Plugins/DynamicLoader/Static/DynamicLoaderStatic.h" @@ -60,8 +53,10 @@ #include "Plugins/InstrumentationRuntime/UBSan/UBSanRuntime.h" #include "Plugins/JITLoader/GDB/JITLoaderGDB.h" #include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h" +#include "Plugins/Language/ClangCommon/ClangCommon.h" #include "Plugins/Language/ObjC/ObjCLanguage.h" #include "Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.h" +#include "Plugins/LanguageRuntime/CPlusPlus/CPPLanguageRuntime.h" #include "Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.h" #include "Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h" #include "Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h" @@ -71,6 +66,7 @@ #include "Plugins/ObjectContainer/Universal-Mach-O/ObjectContainerUniversalMachO.h" #include "Plugins/ObjectFile/Breakpad/ObjectFileBreakpad.h" #include "Plugins/ObjectFile/ELF/ObjectFileELF.h" +#include "Plugins/ObjectFile/JIT/ObjectFileJIT.h" #include "Plugins/ObjectFile/Mach-O/ObjectFileMachO.h" #include "Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h" #include "Plugins/ObjectFile/wasm/ObjectFileWasm.h" @@ -79,48 +75,43 @@ #include "Plugins/Platform/FreeBSD/PlatformFreeBSD.h" #include "Plugins/Platform/Linux/PlatformLinux.h" #include "Plugins/Platform/MacOSX/PlatformMacOSX.h" -#include "Plugins/Platform/MacOSX/PlatformRemoteiOS.h" #include "Plugins/Platform/NetBSD/PlatformNetBSD.h" #include "Plugins/Platform/OpenBSD/PlatformOpenBSD.h" #include "Plugins/Platform/Windows/PlatformWindows.h" #include "Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h" +#include "Plugins/Process/FreeBSD/ProcessFreeBSD.h" +#include "Plugins/Process/MacOSX-Kernel/ProcessKDP.h" +#include "Plugins/Process/Utility/ProcessUtility.h" #include "Plugins/Process/elf-core/ProcessElfCore.h" #include "Plugins/Process/gdb-remote/ProcessGDBRemote.h" #include "Plugins/Process/mach-core/ProcessMachCore.h" #include "Plugins/Process/minidump/ProcessMinidump.h" #include "Plugins/ScriptInterpreter/None/ScriptInterpreterNone.h" +#include "Plugins/StructuredData/DarwinLog/StructuredDataDarwinLog.h" #include "Plugins/SymbolFile/Breakpad/SymbolFileBreakpad.h" #include "Plugins/SymbolFile/DWARF/SymbolFileDWARF.h" #include "Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h" +#include "Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.h" #include "Plugins/SymbolFile/PDB/SymbolFilePDB.h" #include "Plugins/SymbolFile/Symtab/SymbolFileSymtab.h" #include "Plugins/SymbolVendor/ELF/SymbolVendorELF.h" +#include "Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.h" #include "Plugins/SymbolVendor/wasm/SymbolVendorWasm.h" #include "Plugins/SystemRuntime/MacOSX/SystemRuntimeMacOSX.h" #include "Plugins/UnwindAssembly/InstEmulation/UnwindAssemblyInstEmulation.h" #include "Plugins/UnwindAssembly/x86/UnwindAssembly-x86.h" -#if defined(__APPLE__) -#include "Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.h" -#include "Plugins/Platform/MacOSX/PlatformAppleTVSimulator.h" -#include "Plugins/Platform/MacOSX/PlatformAppleWatchSimulator.h" -#include "Plugins/Platform/MacOSX/PlatformDarwinKernel.h" -#include "Plugins/Platform/MacOSX/PlatformRemoteAppleBridge.h" -#include "Plugins/Platform/MacOSX/PlatformRemoteAppleTV.h" -#include "Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.h" -#include "Plugins/Platform/MacOSX/PlatformiOSSimulator.h" -#include "Plugins/Process/MacOSX-Kernel/ProcessKDP.h" -#include "Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.h" +#if defined(_WIN32) +#include "Plugins/Process/Windows/Common/ProcessWindows.h" +#include "lldb/Host/windows/windows.h" #endif -#include "Plugins/StructuredData/DarwinLog/StructuredDataDarwinLog.h" -#if defined(__FreeBSD__) -#include "Plugins/Process/FreeBSD/ProcessFreeBSD.h" +#if LLDB_ENABLE_PYTHON +#include "Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h" #endif -#if defined(_WIN32) -#include "Plugins/Process/Windows/Common/ProcessWindows.h" -#include "lldb/Host/windows/windows.h" +#if LLDB_ENABLE_LUA +#include "Plugins/ScriptInterpreter/Lua/ScriptInterpreterLua.h" #endif #include "llvm/Support/TargetSelect.h" @@ -132,168 +123,38 @@ #include +// Some of the plugins have their own namespace. +using namespace lldb_private::breakpad; +using namespace clang; using namespace lldb_private; +using namespace platform_android; +using namespace platform_freebsd; +using namespace platform_gdb_server; +using namespace platform_linux; +using namespace platform_netbsd; +using namespace platform_openbsd; +using namespace wasm; +using namespace process_gdb_remote; +using namespace minidump; +using namespace npdb; 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_ARC(op) \ - ABISysV_arc::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_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; - breakpad::ObjectFileBreakpad::Initialize(); - ObjectFileELF::Initialize(); - ObjectFileMachO::Initialize(); - ObjectFilePECOFF::Initialize(); - wasm::ObjectFileWasm::Initialize(); - - ObjectContainerBSDArchive::Initialize(); - ObjectContainerUniversalMachO::Initialize(); - - ScriptInterpreterNone::Initialize(); - -#if LLDB_ENABLE_PYTHON - OperatingSystemPython::Initialize(); -#endif - -#if LLDB_ENABLE_PYTHON - ScriptInterpreterPython::Initialize(); -#endif - -#if LLDB_ENABLE_LUA - ScriptInterpreterLua::Initialize(); -#endif - - platform_freebsd::PlatformFreeBSD::Initialize(); - platform_linux::PlatformLinux::Initialize(); - platform_netbsd::PlatformNetBSD::Initialize(); - platform_openbsd::PlatformOpenBSD::Initialize(); - PlatformWindows::Initialize(); - platform_android::PlatformAndroid::Initialize(); - PlatformRemoteiOS::Initialize(); - PlatformMacOSX::Initialize(); -#if defined(__APPLE__) - PlatformiOSSimulator::Initialize(); - PlatformDarwinKernel::Initialize(); -#endif - - // Initialize LLVM and Clang + // Initialize LLVM llvm::InitializeAllTargets(); llvm::InitializeAllAsmPrinters(); llvm::InitializeAllTargetMCs(); llvm::InitializeAllDisassemblers(); - ClangASTContext::Initialize(); - -#define LLVM_TARGET(t) LLDB_PROCESS_ ## t(Initialize) -#include "llvm/Config/Targets.def" - - ArchitectureArm::Initialize(); - ArchitectureMips::Initialize(); - ArchitecturePPC64::Initialize(); - - DisassemblerLLVMC::Initialize(); - - JITLoaderGDB::Initialize(); - ProcessElfCore::Initialize(); - ProcessMachCore::Initialize(); - minidump::ProcessMinidump::Initialize(); - MemoryHistoryASan::Initialize(); - AddressSanitizerRuntime::Initialize(); - ThreadSanitizerRuntime::Initialize(); - UndefinedBehaviorSanitizerRuntime::Initialize(); - MainThreadCheckerRuntime::Initialize(); - - SymbolVendorELF::Initialize(); - breakpad::SymbolFileBreakpad::Initialize(); - SymbolFileDWARF::Initialize(); - SymbolFilePDB::Initialize(); - SymbolFileSymtab::Initialize(); - wasm::SymbolVendorWasm::Initialize(); - UnwindAssemblyInstEmulation::Initialize(); - UnwindAssembly_x86::Initialize(); - - EmulateInstructionARM::Initialize(); - EmulateInstructionARM64::Initialize(); - EmulateInstructionMIPS::Initialize(); - EmulateInstructionMIPS64::Initialize(); - EmulateInstructionPPC64::Initialize(); - - SymbolFileDWARFDebugMap::Initialize(); - ItaniumABILanguageRuntime::Initialize(); - AppleObjCRuntimeV2::Initialize(); - AppleObjCRuntimeV1::Initialize(); - SystemRuntimeMacOSX::Initialize(); - RenderScriptRuntime::Initialize(); - - CPlusPlusLanguage::Initialize(); - ObjCLanguage::Initialize(); - ObjCPlusPlusLanguage::Initialize(); - -#if defined(_WIN32) - ProcessWindows::Initialize(); -#endif -#if defined(__FreeBSD__) - ProcessFreeBSD::Initialize(); -#endif -#if defined(__APPLE__) - SymbolVendorMacOSX::Initialize(); - ProcessKDP::Initialize(); - PlatformAppleTVSimulator::Initialize(); - PlatformAppleWatchSimulator::Initialize(); - PlatformRemoteAppleTV::Initialize(); - PlatformRemoteAppleWatch::Initialize(); - PlatformRemoteAppleBridge::Initialize(); - DynamicLoaderDarwinKernel::Initialize(); -#endif - - // This plugin is valid on any host that talks to a Darwin remote. It - // shouldn't be limited to __APPLE__. - StructuredDataDarwinLog::Initialize(); - - // Platform agnostic plugins - platform_gdb_server::PlatformRemoteGDBServer::Initialize(); - - process_gdb_remote::ProcessGDBRemote::Initialize(); - DynamicLoaderMacOSXDYLD::Initialize(); - DynamicLoaderMacOS::Initialize(); - DynamicLoaderPOSIXDYLD::Initialize(); - DynamicLoaderStatic::Initialize(); - DynamicLoaderWindowsDYLD::Initialize(); + // Initialize plugins +#define LLDB_PLUGIN(p) p::Initialize(); +#include "Plugins/Plugins.def" // Scan for any system or user LLDB plug-ins PluginManager::Initialize(); @@ -301,7 +162,6 @@ // The process settings need to know about installed plug-ins, so the // Settings must be initialized // AFTER PluginManager::Initialize is called. - Debugger::SettingsInitialize(); return llvm::Error::success(); @@ -316,112 +176,9 @@ // Terminate and unload and loaded system or user LLDB plug-ins PluginManager::Terminate(); - ClangASTContext::Terminate(); - - ArchitectureArm::Terminate(); - ArchitectureMips::Terminate(); - ArchitecturePPC64::Terminate(); - -#define LLVM_TARGET(t) LLDB_PROCESS_ ## t(Terminate) -#include "llvm/Config/Targets.def" - - DisassemblerLLVMC::Terminate(); - - JITLoaderGDB::Terminate(); - ProcessElfCore::Terminate(); - ProcessMachCore::Terminate(); - minidump::ProcessMinidump::Terminate(); - MemoryHistoryASan::Terminate(); - AddressSanitizerRuntime::Terminate(); - ThreadSanitizerRuntime::Terminate(); - UndefinedBehaviorSanitizerRuntime::Terminate(); - MainThreadCheckerRuntime::Terminate(); - wasm::SymbolVendorWasm::Terminate(); - SymbolVendorELF::Terminate(); - breakpad::SymbolFileBreakpad::Terminate(); - SymbolFileDWARF::Terminate(); - SymbolFilePDB::Terminate(); - SymbolFileSymtab::Terminate(); - UnwindAssembly_x86::Terminate(); - UnwindAssemblyInstEmulation::Terminate(); - - EmulateInstructionARM::Terminate(); - EmulateInstructionARM64::Terminate(); - EmulateInstructionMIPS::Terminate(); - EmulateInstructionMIPS64::Terminate(); - EmulateInstructionPPC64::Terminate(); - - SymbolFileDWARFDebugMap::Terminate(); - ItaniumABILanguageRuntime::Terminate(); - AppleObjCRuntimeV2::Terminate(); - AppleObjCRuntimeV1::Terminate(); - SystemRuntimeMacOSX::Terminate(); - RenderScriptRuntime::Terminate(); - - CPlusPlusLanguage::Terminate(); - ObjCLanguage::Terminate(); - ObjCPlusPlusLanguage::Terminate(); - -#if defined(__APPLE__) - DynamicLoaderDarwinKernel::Terminate(); - ProcessKDP::Terminate(); - SymbolVendorMacOSX::Terminate(); - PlatformAppleTVSimulator::Terminate(); - PlatformAppleWatchSimulator::Terminate(); - PlatformRemoteAppleTV::Terminate(); - PlatformRemoteAppleWatch::Terminate(); - PlatformRemoteAppleBridge::Terminate(); -#endif - -#if defined(__FreeBSD__) - ProcessFreeBSD::Terminate(); -#endif - Debugger::SettingsTerminate(); - - platform_gdb_server::PlatformRemoteGDBServer::Terminate(); - process_gdb_remote::ProcessGDBRemote::Terminate(); - StructuredDataDarwinLog::Terminate(); - - DynamicLoaderMacOSXDYLD::Terminate(); - DynamicLoaderMacOS::Terminate(); - DynamicLoaderPOSIXDYLD::Terminate(); - DynamicLoaderStatic::Terminate(); - DynamicLoaderWindowsDYLD::Terminate(); - - - platform_freebsd::PlatformFreeBSD::Terminate(); - platform_linux::PlatformLinux::Terminate(); - platform_netbsd::PlatformNetBSD::Terminate(); - platform_openbsd::PlatformOpenBSD::Terminate(); - PlatformWindows::Terminate(); - platform_android::PlatformAndroid::Terminate(); - PlatformMacOSX::Terminate(); - PlatformRemoteiOS::Terminate(); -#if defined(__APPLE__) - PlatformiOSSimulator::Terminate(); - PlatformDarwinKernel::Terminate(); -#endif - - breakpad::ObjectFileBreakpad::Terminate(); - ObjectFileELF::Terminate(); - ObjectFileMachO::Terminate(); - ObjectFilePECOFF::Terminate(); - wasm::ObjectFileWasm::Terminate(); - - ObjectContainerBSDArchive::Terminate(); - ObjectContainerUniversalMachO::Terminate(); - -#if LLDB_ENABLE_PYTHON - OperatingSystemPython::Terminate(); -#endif - -#if LLDB_ENABLE_PYTHON - ScriptInterpreterPython::Terminate(); -#endif - -#if LLDB_ENABLE_LUA - ScriptInterpreterLua::Terminate(); -#endif + // Terminate plugins +#define LLDB_PLUGIN(p) p::Terminate(); +#include "Plugins/Plugins.def" // Now shutdown the common parts, in reverse order. SystemInitializerCommon::Terminate(); Index: lldb/source/Plugins/CMakeLists.txt =================================================================== --- lldb/source/Plugins/CMakeLists.txt +++ lldb/source/Plugins/CMakeLists.txt @@ -20,3 +20,54 @@ add_subdirectory(SystemRuntime) add_subdirectory(SymbolVendor) add_subdirectory(UnwindAssembly) + + +set(LLDB_STRIPPED_PLUGINS) +get_property(LLDB_ALL_PLUGINS GLOBAL PROPERTY LLDB_PLUGINS) + +set(LLDB_ENUM_PLUGINS_OBJECTFILE "") +set(LLDB_ENUM_PLUGINS_OBJECTCONTAINER "") +set(LLDB_ENUM_PLUGINS_SCRIPTINTERPRETER "") +set(LLDB_ENUM_PLUGINS_PLATFORM "") +set(LLDB_ENUM_PLUGINS_PROCESS "") +set(LLDB_ENUM_PLUGINS_ARCHITECTURE "") +set(LLDB_ENUM_PLUGINS_ABI "") +set(LLDB_ENUM_PLUGINS_SYMBOL "") +set(LLDB_ENUM_PLUGINS_DYNAMICLOADER "") +set(LLDB_ENUM_PLUGINS_EMULATE "") +set(LLDB_ENUM_PLUGINS_OTHERS "") + +foreach(p ${LLDB_ALL_PLUGINS}) + # Strip lldbPlugin form the plugin name. + string(SUBSTRING ${p} 10 -1 pStripped) + if (${pStripped} MATCHES "^ObjectFile*") + set(LLDB_ENUM_PLUGINS_OBJECTFILE "${LLDB_ENUM_PLUGINS_OBJECTFILE}LLDB_PLUGIN(${pStripped})\n") + elseif(${pStripped} MATCHES "^ObjectContainer*") + set(LLDB_ENUM_PLUGINS_OBJECTCONTAINER "${LLDB_ENUM_PLUGINS_OBJECTCONTAINER}LLDB_PLUGIN(${pStripped})\n") + elseif(${pStripped} MATCHES "^ScriptInterpreter*") + set(LLDB_ENUM_PLUGINS_SCRIPTINTERPRETER "${LLDB_ENUM_PLUGINS_SCRIPTINTERPRETER}LLDB_PLUGIN(${pStripped})\n") + elseif(${pStripped} MATCHES "^Platform*") + set(LLDB_ENUM_PLUGINS_PLATFORM "${LLDB_ENUM_PLUGINS_PLATFORM}LLDB_PLUGIN(${pStripped})\n") + elseif(${pStripped} MATCHES "^Process*") + set(LLDB_ENUM_PLUGINS_PROCESS "${LLDB_ENUM_PLUGINS_PROCESS}LLDB_PLUGIN(${pStripped})\n") + elseif(${pStripped} MATCHES "^Architecture*") + set(LLDB_ENUM_PLUGINS_ARCHITECTURE "${LLDB_ENUM_PLUGINS_ARCHITECTURE}LLDB_PLUGIN(${pStripped})\n") + elseif(${pStripped} MATCHES "^ABI*") + set(LLDB_ENUM_PLUGINS_ABI "${LLDB_ENUM_PLUGINS_ABI}LLDB_PLUGIN(${pStripped})\n") + elseif(${pStripped} MATCHES "^Symbol*") + set(LLDB_ENUM_PLUGINS_SYMBOL "${LLDB_ENUM_PLUGINS_SYMBOL}LLDB_PLUGIN(${pStripped})\n") + elseif(${pStripped} MATCHES "^DynamicLoader*") + set(LLDB_ENUM_PLUGINS_DYNAMICLOADER "${LLDB_ENUM_PLUGINS_DYNAMICLOADER}LLDB_PLUGIN(${pStripped})\n") + elseif(${pStripped} MATCHES "^Emulate*") + set(LLDB_ENUM_PLUGINS_EMULATE "${LLDB_ENUM_PLUGINS_EMULATE}LLDB_PLUGIN(${pStripped})\n") + else() + set(LLDB_ENUM_PLUGINS_OTHERS "${LLDB_ENUM_PLUGINS_OTHERS}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 PLUGINS_DEF_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}) Index: lldb/source/Plugins/Disassembler/llvm/CMakeLists.txt =================================================================== --- lldb/source/Plugins/Disassembler/llvm/CMakeLists.txt +++ lldb/source/Plugins/Disassembler/llvm/CMakeLists.txt @@ -1,4 +1,4 @@ -add_lldb_library(lldbPluginDisassemblerLLVM PLUGIN +add_lldb_library(lldbPluginDisassemblerLLVMC PLUGIN DisassemblerLLVMC.cpp LINK_LIBS Index: lldb/source/Plugins/DynamicLoader/CMakeLists.txt =================================================================== --- lldb/source/Plugins/DynamicLoader/CMakeLists.txt +++ lldb/source/Plugins/DynamicLoader/CMakeLists.txt @@ -1,6 +1,9 @@ -add_subdirectory(Darwin-Kernel) -add_subdirectory(MacOSX-DYLD) add_subdirectory(POSIX-DYLD) add_subdirectory(Static) add_subdirectory(Hexagon-DYLD) add_subdirectory(Windows-DYLD) + +if (CMAKE_SYSTEM_NAME MATCHES "Darwin") + add_subdirectory(Darwin-Kernel) + add_subdirectory(MacOSX-DYLD) +endif() Index: lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp =================================================================== --- lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp +++ lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp @@ -27,6 +27,7 @@ #include "lldb/Utility/State.h" #include "DynamicLoaderDarwin.h" +#include "DynamicLoaderMacOS.h" #include "DynamicLoaderMacOSXDYLD.h" #include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h" @@ -1119,12 +1120,14 @@ } void DynamicLoaderMacOSXDYLD::Initialize() { + DynamicLoaderMacOS::Initialize(); PluginManager::RegisterPlugin(GetPluginNameStatic(), GetPluginDescriptionStatic(), CreateInstance); } void DynamicLoaderMacOSXDYLD::Terminate() { PluginManager::UnregisterPlugin(CreateInstance); + DynamicLoaderMacOS::Terminate(); } lldb_private::ConstString DynamicLoaderMacOSXDYLD::GetPluginNameStatic() { Index: lldb/source/Plugins/DynamicLoader/POSIX-DYLD/CMakeLists.txt =================================================================== --- lldb/source/Plugins/DynamicLoader/POSIX-DYLD/CMakeLists.txt +++ lldb/source/Plugins/DynamicLoader/POSIX-DYLD/CMakeLists.txt @@ -1,4 +1,4 @@ -add_lldb_library(lldbPluginDynamicLoaderPosixDYLD PLUGIN +add_lldb_library(lldbPluginDynamicLoaderPOSIXDYLD PLUGIN DYLDRendezvous.cpp DynamicLoaderPOSIXDYLD.cpp Index: lldb/source/Plugins/ExpressionParser/Clang/CMakeLists.txt =================================================================== --- lldb/source/Plugins/ExpressionParser/Clang/CMakeLists.txt +++ lldb/source/Plugins/ExpressionParser/Clang/CMakeLists.txt @@ -2,7 +2,7 @@ set(tablegen_deps intrinsics_gen) endif() -add_lldb_library(lldbPluginExpressionParserClang PLUGIN +add_lldb_library(lldbPluginClangASTContext PLUGIN ASTResultSynthesizer.cpp ASTStructExtractor.cpp ASTUtils.cpp @@ -34,7 +34,7 @@ lldbTarget lldbUtility lldbPluginCPlusPlusLanguage - lldbPluginCPPRuntime + lldbPluginCPPLanguageRuntime CLANG_LIBS clangAST clangCodeGen Index: lldb/source/Plugins/Instruction/ARM/CMakeLists.txt =================================================================== --- lldb/source/Plugins/Instruction/ARM/CMakeLists.txt +++ lldb/source/Plugins/Instruction/ARM/CMakeLists.txt @@ -1,4 +1,4 @@ -add_lldb_library(lldbPluginInstructionARM PLUGIN +add_lldb_library(lldbPluginEmulateInstructionARM PLUGIN EmulateInstructionARM.cpp EmulationStateARM.cpp Index: lldb/source/Plugins/Instruction/ARM64/CMakeLists.txt =================================================================== --- lldb/source/Plugins/Instruction/ARM64/CMakeLists.txt +++ lldb/source/Plugins/Instruction/ARM64/CMakeLists.txt @@ -1,4 +1,4 @@ -add_lldb_library(lldbPluginInstructionARM64 PLUGIN +add_lldb_library(lldbPluginEmulateInstructionARM64 PLUGIN EmulateInstructionARM64.cpp LINK_LIBS Index: lldb/source/Plugins/Instruction/MIPS/CMakeLists.txt =================================================================== --- lldb/source/Plugins/Instruction/MIPS/CMakeLists.txt +++ lldb/source/Plugins/Instruction/MIPS/CMakeLists.txt @@ -2,7 +2,7 @@ set(mips_target Mips) endif() -add_lldb_library(lldbPluginInstructionMIPS PLUGIN +add_lldb_library(lldbPluginEmulateInstructionMIPS PLUGIN EmulateInstructionMIPS.cpp LINK_LIBS Index: lldb/source/Plugins/Instruction/MIPS64/CMakeLists.txt =================================================================== --- lldb/source/Plugins/Instruction/MIPS64/CMakeLists.txt +++ lldb/source/Plugins/Instruction/MIPS64/CMakeLists.txt @@ -2,7 +2,7 @@ set(mips_target Mips) endif() -add_lldb_library(lldbPluginInstructionMIPS64 PLUGIN +add_lldb_library(lldbPluginEmulateInstructionMIPS64 PLUGIN EmulateInstructionMIPS64.cpp LINK_LIBS Index: lldb/source/Plugins/Instruction/PPC64/CMakeLists.txt =================================================================== --- lldb/source/Plugins/Instruction/PPC64/CMakeLists.txt +++ lldb/source/Plugins/Instruction/PPC64/CMakeLists.txt @@ -1,4 +1,4 @@ -add_lldb_library(lldbPluginInstructionPPC64 PLUGIN +add_lldb_library(lldbPluginEmulateInstructionPPC64 PLUGIN EmulateInstructionPPC64.cpp LINK_LIBS Index: lldb/source/Plugins/InstrumentationRuntime/ASan/CMakeLists.txt =================================================================== --- lldb/source/Plugins/InstrumentationRuntime/ASan/CMakeLists.txt +++ lldb/source/Plugins/InstrumentationRuntime/ASan/CMakeLists.txt @@ -1,4 +1,4 @@ -add_lldb_library(lldbPluginInstrumentationRuntimeASan PLUGIN +add_lldb_library(lldbPluginAddressSanitizerRuntime PLUGIN ASanRuntime.cpp LINK_LIBS Index: lldb/source/Plugins/InstrumentationRuntime/MainThreadChecker/CMakeLists.txt =================================================================== --- lldb/source/Plugins/InstrumentationRuntime/MainThreadChecker/CMakeLists.txt +++ lldb/source/Plugins/InstrumentationRuntime/MainThreadChecker/CMakeLists.txt @@ -1,4 +1,4 @@ -add_lldb_library(lldbPluginInstrumentationRuntimeMainThreadChecker PLUGIN +add_lldb_library(lldbPluginMainThreadCheckerRuntime PLUGIN MainThreadCheckerRuntime.cpp LINK_LIBS Index: lldb/source/Plugins/InstrumentationRuntime/TSan/CMakeLists.txt =================================================================== --- lldb/source/Plugins/InstrumentationRuntime/TSan/CMakeLists.txt +++ lldb/source/Plugins/InstrumentationRuntime/TSan/CMakeLists.txt @@ -1,4 +1,4 @@ -add_lldb_library(lldbPluginInstrumentationRuntimeTSan PLUGIN +add_lldb_library(lldbPluginThreadSanitizerRuntime PLUGIN TSanRuntime.cpp LINK_LIBS Index: lldb/source/Plugins/InstrumentationRuntime/UBSan/CMakeLists.txt =================================================================== --- lldb/source/Plugins/InstrumentationRuntime/UBSan/CMakeLists.txt +++ lldb/source/Plugins/InstrumentationRuntime/UBSan/CMakeLists.txt @@ -1,4 +1,4 @@ -add_lldb_library(lldbPluginInstrumentationRuntimeUBSan PLUGIN +add_lldb_library(lldbPluginUndefinedBehaviorSanitizerRuntime PLUGIN UBSanRuntime.cpp LINK_LIBS Index: lldb/source/Plugins/Language/CPlusPlus/CMakeLists.txt =================================================================== --- lldb/source/Plugins/Language/CPlusPlus/CMakeLists.txt +++ lldb/source/Plugins/Language/CPlusPlus/CMakeLists.txt @@ -28,7 +28,7 @@ lldbTarget lldbUtility lldbPluginClangCommon - lldbPluginCPPRuntime + lldbPluginCPPLanguageRuntime LINK_COMPONENTS Support Index: lldb/source/Plugins/Language/ClangCommon/ClangCommon.h =================================================================== --- /dev/null +++ lldb/source/Plugins/Language/ClangCommon/ClangCommon.h @@ -0,0 +1,19 @@ +//===-- ClangCommon.h -------------------------------------------*- 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 +// +//===----------------------------------------------------------------------===// + +#ifndef liblldb_ClangCommon_h_ + +namespace lldb_private { +class ClangCommon { +public: + static void Initialize() {} + static void Terminate() {} +}; +} // namespace lldb_private + +#endif Index: lldb/source/Plugins/LanguageRuntime/CPlusPlus/CMakeLists.txt =================================================================== --- lldb/source/Plugins/LanguageRuntime/CPlusPlus/CMakeLists.txt +++ lldb/source/Plugins/LanguageRuntime/CPlusPlus/CMakeLists.txt @@ -1,4 +1,4 @@ -add_lldb_library(lldbPluginCPPRuntime PLUGIN +add_lldb_library(lldbPluginCPPLanguageRuntime PLUGIN CPPLanguageRuntime.cpp LINK_LIBS Index: lldb/source/Plugins/LanguageRuntime/CPlusPlus/CPPLanguageRuntime.h =================================================================== --- lldb/source/Plugins/LanguageRuntime/CPlusPlus/CPPLanguageRuntime.h +++ lldb/source/Plugins/LanguageRuntime/CPlusPlus/CPPLanguageRuntime.h @@ -44,6 +44,9 @@ static char ID; + static void Initialize() {} + static void Terminate() {} + bool isA(const void *ClassID) const override { return ClassID == &ID || LanguageRuntime::isA(ClassID); } Index: lldb/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/CMakeLists.txt =================================================================== --- lldb/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/CMakeLists.txt +++ lldb/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/CMakeLists.txt @@ -1,4 +1,4 @@ -add_lldb_library(lldbPluginCXXItaniumABI PLUGIN +add_lldb_library(lldbPluginItaniumABILanguageRuntime PLUGIN ItaniumABILanguageRuntime.cpp LINK_LIBS @@ -7,5 +7,5 @@ lldbInterpreter lldbSymbol lldbTarget - lldbPluginCPPRuntime + lldbPluginCPPLanguageRuntime ) Index: lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.h =================================================================== --- lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.h +++ lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.h @@ -31,6 +31,10 @@ static char ID; + static void Initialize(); + + static void Terminate(); + bool isA(const void *ClassID) const override { return ClassID == &ID || ObjCLanguageRuntime::isA(ClassID); } Index: lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp =================================================================== --- lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp +++ lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp @@ -8,6 +8,8 @@ //===----------------------------------------------------------------------===// #include "AppleObjCRuntime.h" +#include "AppleObjCRuntimeV1.h" +#include "AppleObjCRuntimeV2.h" #include "AppleObjCTrampolineHandler.h" #include "clang/AST/Type.h" @@ -55,6 +57,16 @@ ReadObjCLibraryIfNeeded(process->GetTarget().GetImages()); } +void AppleObjCRuntime::Initialize() { + AppleObjCRuntimeV2::Initialize(); + AppleObjCRuntimeV1::Initialize(); +} + +void AppleObjCRuntime::Terminate() { + AppleObjCRuntimeV2::Terminate(); + AppleObjCRuntimeV1::Terminate(); +} + bool AppleObjCRuntime::GetObjectDescription(Stream &str, ValueObject &valobj) { CompilerType compiler_type(valobj.GetCompilerType()); bool is_signed; Index: lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/CMakeLists.txt =================================================================== --- lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/CMakeLists.txt +++ lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/CMakeLists.txt @@ -17,8 +17,8 @@ lldbSymbol lldbTarget lldbUtility - lldbPluginExpressionParserClang - lldbPluginCPPRuntime + lldbPluginClangASTContext + lldbPluginCPPLanguageRuntime CLANG_LIBS clangAST LINK_COMPONENTS Index: lldb/source/Plugins/LanguageRuntime/ObjC/CMakeLists.txt =================================================================== --- lldb/source/Plugins/LanguageRuntime/ObjC/CMakeLists.txt +++ lldb/source/Plugins/LanguageRuntime/ObjC/CMakeLists.txt @@ -1,4 +1,4 @@ -add_lldb_library(lldbPluginObjCRuntime PLUGIN +add_lldb_library(lldbPluginObjCLanguageRuntime PLUGIN ObjCLanguageRuntime.cpp LINK_LIBS Index: lldb/source/Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h =================================================================== --- lldb/source/Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h +++ lldb/source/Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h @@ -44,6 +44,9 @@ class ClassDescriptor; typedef std::shared_ptr ClassDescriptorSP; + static void Initialize() {} + static void Terminate() {} + // the information that we want to support retrieving from an ObjC class this // needs to be pure virtual since there are at least 2 different // implementations of the runtime, and more might come Index: lldb/source/Plugins/ObjectContainer/Universal-Mach-O/CMakeLists.txt =================================================================== --- lldb/source/Plugins/ObjectContainer/Universal-Mach-O/CMakeLists.txt +++ lldb/source/Plugins/ObjectContainer/Universal-Mach-O/CMakeLists.txt @@ -1,4 +1,4 @@ -add_lldb_library(lldbPluginObjectContainerMachOArchive PLUGIN +add_lldb_library(lldbPluginObjectContainerUniversalMachO PLUGIN ObjectContainerUniversalMachO.cpp LINK_LIBS Index: lldb/source/Plugins/OperatingSystem/Python/CMakeLists.txt =================================================================== --- lldb/source/Plugins/OperatingSystem/Python/CMakeLists.txt +++ lldb/source/Plugins/OperatingSystem/Python/CMakeLists.txt @@ -1,4 +1,4 @@ -add_lldb_library(lldbPluginOSPython PLUGIN +add_lldb_library(lldbPluginOperatingSystemPython PLUGIN OperatingSystemPython.cpp LINK_LIBS Index: lldb/source/Plugins/Platform/Android/CMakeLists.txt =================================================================== --- lldb/source/Plugins/Platform/Android/CMakeLists.txt +++ lldb/source/Plugins/Platform/Android/CMakeLists.txt @@ -7,7 +7,7 @@ lldbCore lldbHost lldbPluginPlatformLinux - lldbPluginPlatformGDB + lldbPluginPlatformRemoteGDBServer LINK_COMPONENTS Support ) Index: lldb/source/Plugins/Platform/CMakeLists.txt =================================================================== --- lldb/source/Plugins/Platform/CMakeLists.txt +++ lldb/source/Plugins/Platform/CMakeLists.txt @@ -1,17 +1,16 @@ -#if (CMAKE_SYSTEM_NAME MATCHES "Linux") - add_subdirectory(Linux) -#elseif (CMAKE_SYSTEM_NAME MATCHES "FreeBSD") +if (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") add_subdirectory(FreeBSD) -#elseif (CMAKE_SYSTEM_NAME MATCHES "NetBSD") +elseif (CMAKE_SYSTEM_NAME STREQUAL "NetBSD") add_subdirectory(NetBSD) -#elseif (CMAKE_SYSTEM_NAME MATCHES "OpenBSD") +elseif (CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") add_subdirectory(OpenBSD) -#elseif (CMAKE_SYSTEM_NAME MATCHES "Darwin") +elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin") add_subdirectory(MacOSX) -#elseif (CMAKE_SYSTEM_NAME MATCHES "Windows") +elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows") add_subdirectory(Windows) -#endif() +endif() +add_subdirectory(Linux) add_subdirectory(POSIX) add_subdirectory(gdb-server) add_subdirectory(Android) Index: lldb/source/Plugins/Platform/MacOSX/PlatformMacOSX.cpp =================================================================== --- lldb/source/Plugins/Platform/MacOSX/PlatformMacOSX.cpp +++ lldb/source/Plugins/Platform/MacOSX/PlatformMacOSX.cpp @@ -7,11 +7,15 @@ //===----------------------------------------------------------------------===// #include "PlatformMacOSX.h" -#include "lldb/Host/Config.h" - - -#include +#include "PlatformiOSSimulator.h" +#include "PlatformDarwinKernel.h" +#include "PlatformAppleTVSimulator.h" +#include "PlatformAppleWatchSimulator.h" +#include "PlatformRemoteAppleTV.h" +#include "PlatformRemoteAppleWatch.h" +#include "PlatformRemoteAppleBridge.h" +#include "lldb/Host/Config.h" #include "lldb/Breakpoint/BreakpointLocation.h" #include "lldb/Core/Module.h" #include "lldb/Core/ModuleList.h" @@ -28,6 +32,8 @@ #include "lldb/Utility/Status.h" #include "lldb/Utility/StreamString.h" +#include + using namespace lldb; using namespace lldb_private; @@ -35,6 +41,13 @@ void PlatformMacOSX::Initialize() { PlatformDarwin::Initialize(); + PlatformiOSSimulator::Initialize(); + PlatformDarwinKernel::Initialize(); + PlatformAppleTVSimulator::Initialize(); + PlatformAppleWatchSimulator::Initialize(); + PlatformRemoteAppleTV::Initialize(); + PlatformRemoteAppleWatch::Initialize(); + PlatformRemoteAppleBridge::Initialize(); if (g_initialize_count++ == 0) { #if defined(__APPLE__) @@ -55,6 +68,13 @@ } } + PlatformRemoteAppleBridge::Initialize(); + PlatformRemoteAppleWatch::Initialize(); + PlatformRemoteAppleTV::Initialize(); + PlatformAppleWatchSimulator::Initialize(); + PlatformAppleTVSimulator::Initialize(); + PlatformDarwinKernel::Initialize(); + PlatformiOSSimulator::Initialize(); PlatformDarwin::Terminate(); } Index: lldb/source/Plugins/Platform/gdb-server/CMakeLists.txt =================================================================== --- lldb/source/Plugins/Platform/gdb-server/CMakeLists.txt +++ lldb/source/Plugins/Platform/gdb-server/CMakeLists.txt @@ -1,4 +1,4 @@ -add_lldb_library(lldbPluginPlatformGDB PLUGIN +add_lldb_library(lldbPluginPlatformRemoteGDBServer PLUGIN PlatformRemoteGDBServer.cpp LINK_LIBS Index: lldb/source/Plugins/Plugins.def.in =================================================================== --- /dev/null +++ lldb/source/Plugins/Plugins.def.in @@ -0,0 +1,48 @@ +/*===- 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 targets. *| +|* *| +|* 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 + +// ObjectFile +@LLDB_ENUM_PLUGINS_OBJECTFILE@ +// ObjectContainer +@LLDB_ENUM_PLUGINS_OBJECTCONTAINER@ +// ScriptInterpreter +@LLDB_ENUM_PLUGINS_SCRIPTINTERPRETER@ +// Architecture +@LLDB_ENUM_PLUGINS_ARCHITECTURE@ +// Platform +@LLDB_ENUM_PLUGINS_PLATFORM@ +// Process +@LLDB_ENUM_PLUGINS_PROCESS@ +// ABI +@LLDB_ENUM_PLUGINS_ABI@ +// SymbolFile and SymbolVendor +@LLDB_ENUM_PLUGINS_SYMBOL@ +// DynamicLoader +@LLDB_ENUM_PLUGINS_DYNAMICLOADER@ +// Emulate +@LLDB_ENUM_PLUGINS_EMULATE@ +// Others +@LLDB_ENUM_PLUGINS_OTHERS@ + +#undef LLDB_PLUGIN Index: lldb/source/Plugins/Process/MacOSX-Kernel/CMakeLists.txt =================================================================== --- lldb/source/Plugins/Process/MacOSX-Kernel/CMakeLists.txt +++ lldb/source/Plugins/Process/MacOSX-Kernel/CMakeLists.txt @@ -6,7 +6,7 @@ SOURCE ProcessKDPProperties.td TARGET LLDBPluginProcessMacOSXKernelPropertiesEnumGen) -add_lldb_library(lldbPluginProcessMacOSXKernel PLUGIN +add_lldb_library(lldbPluginProcessKDP PLUGIN CommunicationKDP.cpp ProcessKDP.cpp ProcessKDPLog.cpp @@ -29,6 +29,6 @@ lldbPluginProcessUtility ) -add_dependencies(lldbPluginProcessMacOSXKernel +add_dependencies(lldbPluginProcessKDP LLDBPluginProcessMacOSXKernelPropertiesGen LLDBPluginProcessMacOSXKernelPropertiesEnumGen) Index: lldb/source/Plugins/Process/Utility/ProcessUtility.h =================================================================== --- /dev/null +++ lldb/source/Plugins/Process/Utility/ProcessUtility.h @@ -0,0 +1,20 @@ +//===-- ProcessUtility.h -------------------------------------------*- 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 +// +//===----------------------------------------------------------------------===// + +#ifndef liblldb_ProcessUtility_h_ + +namespace lldb_private { +class ProcessUtility { +public: + static void Initialize() {} + static void Terminate() {} +}; +} // namespace lldb_private + +#endif Index: lldb/source/Plugins/Process/elf-core/CMakeLists.txt =================================================================== --- lldb/source/Plugins/Process/elf-core/CMakeLists.txt +++ lldb/source/Plugins/Process/elf-core/CMakeLists.txt @@ -13,7 +13,7 @@ LINK_LIBS lldbCore lldbTarget - lldbPluginDynamicLoaderPosixDYLD + lldbPluginDynamicLoaderPOSIXDYLD lldbPluginObjectFileELF lldbPluginProcessUtility LINK_COMPONENTS Index: lldb/source/Plugins/SymbolFile/DWARF/CMakeLists.txt =================================================================== --- lldb/source/Plugins/SymbolFile/DWARF/CMakeLists.txt +++ lldb/source/Plugins/SymbolFile/DWARF/CMakeLists.txt @@ -52,7 +52,7 @@ lldbUtility lldbPluginObjCLanguage lldbPluginCPlusPlusLanguage - lldbPluginExpressionParserClang + lldbPluginClangASTContext CLANG_LIBS clangAST clangBasic Index: lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp =================================================================== --- lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp +++ lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp @@ -224,6 +224,7 @@ PluginManager::RegisterPlugin(GetPluginNameStatic(), GetPluginDescriptionStatic(), CreateInstance, DebuggerInitialize); + SymbolFileDWARFDebugMap::Initialize(); } void SymbolFileDWARF::DebuggerInitialize(Debugger &debugger) { @@ -240,6 +241,7 @@ void SymbolFileDWARF::Terminate() { PluginManager::UnregisterPlugin(CreateInstance); LogChannelDWARF::Terminate(); + SymbolFileDWARFDebugMap::Terminate(); } lldb_private::ConstString SymbolFileDWARF::GetPluginNameStatic() { @@ -2485,7 +2487,7 @@ UpdateExternalModuleListIfNeeded(); for (const auto &pair : m_external_type_modules) - if (ModuleSP external_module_sp = pair.second) + if (ModuleSP external_module_sp = pair.second) if (SymbolFile *sym_file = external_module_sp->GetSymbolFile()) sym_file->FindTypes(name, parent_decl_ctx, max_matches, searched_symbol_files, types); Index: lldb/source/Plugins/UnwindAssembly/x86/CMakeLists.txt =================================================================== --- lldb/source/Plugins/UnwindAssembly/x86/CMakeLists.txt +++ lldb/source/Plugins/UnwindAssembly/x86/CMakeLists.txt @@ -1,4 +1,4 @@ -add_lldb_library(lldbPluginUnwindAssemblyX86 PLUGIN +add_lldb_library(lldbPluginUnwindAssembly_x86 PLUGIN UnwindAssembly-x86.cpp x86AssemblyInspectionEngine.cpp Index: lldb/source/Symbol/CMakeLists.txt =================================================================== --- lldb/source/Symbol/CMakeLists.txt +++ lldb/source/Symbol/CMakeLists.txt @@ -51,11 +51,11 @@ lldbHost lldbTarget lldbUtility - lldbPluginExpressionParserClang + lldbPluginClangASTContext lldbPluginSymbolFileDWARF lldbPluginSymbolFilePDB lldbPluginObjCLanguage - lldbPluginObjCRuntime + lldbPluginObjCLanguageRuntime CLANG_LIBS clangAST Index: lldb/source/Target/CMakeLists.txt =================================================================== --- lldb/source/Target/CMakeLists.txt +++ lldb/source/Target/CMakeLists.txt @@ -73,7 +73,7 @@ lldbInterpreter lldbSymbol lldbUtility - lldbPluginExpressionParserClang + lldbPluginClangASTContext lldbPluginProcessUtility LINK_COMPONENTS Index: lldb/tools/lldb-server/CMakeLists.txt =================================================================== --- lldb/tools/lldb-server/CMakeLists.txt +++ lldb/tools/lldb-server/CMakeLists.txt @@ -41,9 +41,9 @@ lldbHost lldbInitialization ${LLDB_PLUGINS} - lldbPluginInstructionARM - lldbPluginInstructionMIPS - lldbPluginInstructionMIPS64 + lldbPluginEmulateInstructionARM + lldbPluginEmulateInstructionMIPS + lldbPluginEmulateInstructionMIPS64 ${LLDB_SYSTEM_LIBS} LINK_COMPONENTS Index: lldb/tools/lldb-test/CMakeLists.txt =================================================================== --- lldb/tools/lldb-test/CMakeLists.txt +++ lldb/tools/lldb-test/CMakeLists.txt @@ -23,5 +23,8 @@ LINK_COMPONENTS Support ) - -include_directories(${LLDB_SOURCE_DIR}/source) + +get_property(PLUGINS_DEF_INCLUDE_DIR GLOBAL PROPERTY PLUGINS_DEF_INCLUDE_DIR) +target_include_directories(lldb-test PRIVATE + ${PLUGINS_DEF_INCLUDE_DIR} + ${LLDB_SOURCE_DIR}/source) Index: lldb/tools/lldb-test/SystemInitializerTest.cpp =================================================================== --- lldb/tools/lldb-test/SystemInitializerTest.cpp +++ lldb/tools/lldb-test/SystemInitializerTest.cpp @@ -34,6 +34,8 @@ #include "Plugins/Architecture/Mips/ArchitectureMips.h" #include "Plugins/Architecture/PPC64/ArchitecturePPC64.h" #include "Plugins/Disassembler/llvm/DisassemblerLLVMC.h" +#include "Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.h" +#include "Plugins/DynamicLoader/Hexagon-DYLD/DynamicLoaderHexagonDYLD.h" #include "Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOS.h" #include "Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.h" #include "Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.h" @@ -50,8 +52,10 @@ #include "Plugins/InstrumentationRuntime/UBSan/UBSanRuntime.h" #include "Plugins/JITLoader/GDB/JITLoaderGDB.h" #include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h" +#include "Plugins/Language/ClangCommon/ClangCommon.h" #include "Plugins/Language/ObjC/ObjCLanguage.h" #include "Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.h" +#include "Plugins/LanguageRuntime/CPlusPlus/CPPLanguageRuntime.h" #include "Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.h" #include "Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h" #include "Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h" @@ -61,57 +65,66 @@ #include "Plugins/ObjectContainer/Universal-Mach-O/ObjectContainerUniversalMachO.h" #include "Plugins/ObjectFile/Breakpad/ObjectFileBreakpad.h" #include "Plugins/ObjectFile/ELF/ObjectFileELF.h" +#include "Plugins/ObjectFile/JIT/ObjectFileJIT.h" #include "Plugins/ObjectFile/Mach-O/ObjectFileMachO.h" #include "Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h" #include "Plugins/ObjectFile/wasm/ObjectFileWasm.h" +#include "Plugins/OperatingSystem/Python/OperatingSystemPython.h" #include "Plugins/Platform/Android/PlatformAndroid.h" #include "Plugins/Platform/FreeBSD/PlatformFreeBSD.h" #include "Plugins/Platform/Linux/PlatformLinux.h" +#include "Plugins/Platform/MacOSX/PlatformAppleTVSimulator.h" +#include "Plugins/Platform/MacOSX/PlatformAppleWatchSimulator.h" +#include "Plugins/Platform/MacOSX/PlatformDarwinKernel.h" #include "Plugins/Platform/MacOSX/PlatformMacOSX.h" +#include "Plugins/Platform/MacOSX/PlatformRemoteAppleBridge.h" +#include "Plugins/Platform/MacOSX/PlatformRemoteAppleTV.h" +#include "Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.h" #include "Plugins/Platform/MacOSX/PlatformRemoteiOS.h" +#include "Plugins/Platform/MacOSX/PlatformiOSSimulator.h" #include "Plugins/Platform/NetBSD/PlatformNetBSD.h" #include "Plugins/Platform/OpenBSD/PlatformOpenBSD.h" #include "Plugins/Platform/Windows/PlatformWindows.h" #include "Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h" +#include "Plugins/Process/FreeBSD/ProcessFreeBSD.h" +#include "Plugins/Process/MacOSX-Kernel/ProcessKDP.h" +#include "Plugins/Process/Utility/ProcessUtility.h" #include "Plugins/Process/elf-core/ProcessElfCore.h" #include "Plugins/Process/gdb-remote/ProcessGDBRemote.h" #include "Plugins/Process/mach-core/ProcessMachCore.h" #include "Plugins/Process/minidump/ProcessMinidump.h" #include "Plugins/ScriptInterpreter/None/ScriptInterpreterNone.h" +#include "Plugins/StructuredData/DarwinLog/StructuredDataDarwinLog.h" #include "Plugins/SymbolFile/Breakpad/SymbolFileBreakpad.h" #include "Plugins/SymbolFile/DWARF/SymbolFileDWARF.h" #include "Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h" +#include "Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.h" #include "Plugins/SymbolFile/PDB/SymbolFilePDB.h" #include "Plugins/SymbolFile/Symtab/SymbolFileSymtab.h" #include "Plugins/SymbolVendor/ELF/SymbolVendorELF.h" +#include "Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.h" #include "Plugins/SymbolVendor/wasm/SymbolVendorWasm.h" #include "Plugins/SystemRuntime/MacOSX/SystemRuntimeMacOSX.h" #include "Plugins/UnwindAssembly/InstEmulation/UnwindAssemblyInstEmulation.h" #include "Plugins/UnwindAssembly/x86/UnwindAssembly-x86.h" -#if defined(__APPLE__) -#include "Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.h" -#include "Plugins/Platform/MacOSX/PlatformAppleTVSimulator.h" -#include "Plugins/Platform/MacOSX/PlatformAppleWatchSimulator.h" -#include "Plugins/Platform/MacOSX/PlatformDarwinKernel.h" -#include "Plugins/Platform/MacOSX/PlatformRemoteAppleBridge.h" -#include "Plugins/Platform/MacOSX/PlatformRemoteAppleTV.h" -#include "Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.h" -#include "Plugins/Platform/MacOSX/PlatformiOSSimulator.h" -#include "Plugins/Process/MacOSX-Kernel/ProcessKDP.h" -#include "Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.h" -#endif -#include "Plugins/StructuredData/DarwinLog/StructuredDataDarwinLog.h" - -#if defined(__FreeBSD__) -#include "Plugins/Process/FreeBSD/ProcessFreeBSD.h" -#endif - #if defined(_WIN32) #include "Plugins/Process/Windows/Common/ProcessWindows.h" #include "lldb/Host/windows/windows.h" #endif +class ScriptInterpreterPython { +public: + static void Initialize(){}; + static void Terminate(){}; +}; + +class ScriptInterpreterLua { +public: + static void Initialize(){}; + static void Terminate(){}; +}; + #include "llvm/Support/TargetSelect.h" #include @@ -122,157 +135,41 @@ SystemInitializerTest::~SystemInitializerTest() {} -#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_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) +// Some of the plugins have their own namespace. +using namespace lldb_private::breakpad; +using namespace clang; +using namespace lldb_private; +using namespace platform_android; +using namespace platform_freebsd; +using namespace platform_gdb_server; +using namespace platform_linux; +using namespace platform_netbsd; +using namespace platform_openbsd; +using namespace wasm; +using namespace process_gdb_remote; +using namespace minidump; +using namespace npdb; llvm::Error SystemInitializerTest::Initialize() { if (auto e = SystemInitializerCommon::Initialize()) return e; - breakpad::ObjectFileBreakpad::Initialize(); - ObjectFileELF::Initialize(); - ObjectFileMachO::Initialize(); - ObjectFilePECOFF::Initialize(); - wasm::ObjectFileWasm::Initialize(); - - ObjectContainerBSDArchive::Initialize(); - ObjectContainerUniversalMachO::Initialize(); - - ScriptInterpreterNone::Initialize(); - - platform_freebsd::PlatformFreeBSD::Initialize(); - platform_linux::PlatformLinux::Initialize(); - platform_netbsd::PlatformNetBSD::Initialize(); - platform_openbsd::PlatformOpenBSD::Initialize(); - PlatformWindows::Initialize(); - platform_android::PlatformAndroid::Initialize(); - PlatformRemoteiOS::Initialize(); - PlatformMacOSX::Initialize(); -#if defined(__APPLE__) - PlatformiOSSimulator::Initialize(); - PlatformDarwinKernel::Initialize(); -#endif - - // Initialize LLVM and Clang + // Initialize LLVM llvm::InitializeAllTargets(); llvm::InitializeAllAsmPrinters(); llvm::InitializeAllTargetMCs(); llvm::InitializeAllDisassemblers(); - ClangASTContext::Initialize(); - -#define LLVM_TARGET(t) LLDB_PROCESS_ ## t(Initialize) -#include "llvm/Config/Targets.def" - - ArchitectureArm::Initialize(); - ArchitectureMips::Initialize(); - ArchitecturePPC64::Initialize(); - - DisassemblerLLVMC::Initialize(); - - JITLoaderGDB::Initialize(); - ProcessElfCore::Initialize(); - ProcessMachCore::Initialize(); - minidump::ProcessMinidump::Initialize(); - MemoryHistoryASan::Initialize(); - AddressSanitizerRuntime::Initialize(); - ThreadSanitizerRuntime::Initialize(); - UndefinedBehaviorSanitizerRuntime::Initialize(); - MainThreadCheckerRuntime::Initialize(); - - SymbolVendorELF::Initialize(); - breakpad::SymbolFileBreakpad::Initialize(); - SymbolFileDWARF::Initialize(); - SymbolFilePDB::Initialize(); - SymbolFileSymtab::Initialize(); - wasm::SymbolVendorWasm::Initialize(); - UnwindAssemblyInstEmulation::Initialize(); - UnwindAssembly_x86::Initialize(); - - EmulateInstructionARM::Initialize(); - EmulateInstructionARM64::Initialize(); - EmulateInstructionMIPS::Initialize(); - EmulateInstructionMIPS64::Initialize(); - EmulateInstructionPPC64::Initialize(); - - SymbolFileDWARFDebugMap::Initialize(); - ItaniumABILanguageRuntime::Initialize(); - AppleObjCRuntimeV2::Initialize(); - AppleObjCRuntimeV1::Initialize(); - SystemRuntimeMacOSX::Initialize(); - RenderScriptRuntime::Initialize(); - - CPlusPlusLanguage::Initialize(); - ObjCLanguage::Initialize(); - ObjCPlusPlusLanguage::Initialize(); - -#if defined(_WIN32) - ProcessWindows::Initialize(); -#endif -#if defined(__FreeBSD__) - ProcessFreeBSD::Initialize(); -#endif -#if defined(__APPLE__) - SymbolVendorMacOSX::Initialize(); - ProcessKDP::Initialize(); - PlatformAppleTVSimulator::Initialize(); - PlatformAppleWatchSimulator::Initialize(); - PlatformRemoteAppleTV::Initialize(); - PlatformRemoteAppleWatch::Initialize(); - PlatformRemoteAppleBridge::Initialize(); - DynamicLoaderDarwinKernel::Initialize(); -#endif - - // This plugin is valid on any host that talks to a Darwin remote. It - // shouldn't be limited to __APPLE__. - StructuredDataDarwinLog::Initialize(); - - // Platform agnostic plugins - platform_gdb_server::PlatformRemoteGDBServer::Initialize(); - - process_gdb_remote::ProcessGDBRemote::Initialize(); - DynamicLoaderMacOSXDYLD::Initialize(); - DynamicLoaderMacOS::Initialize(); - DynamicLoaderPOSIXDYLD::Initialize(); - DynamicLoaderStatic::Initialize(); - DynamicLoaderWindowsDYLD::Initialize(); + // Initialize plugins +#define LLDB_PLUGIN(p) p::Initialize(); +#include "Plugins.def" // 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 + // The process settings need to know about installed plug-ins, so the + // Settings must be initialized // AFTER PluginManager::Initialize is called. - Debugger::SettingsInitialize(); return llvm::Error::success(); @@ -287,100 +184,9 @@ // Terminate and unload and loaded system or user LLDB plug-ins PluginManager::Terminate(); - ClangASTContext::Terminate(); - - ArchitectureArm::Terminate(); - ArchitectureMips::Terminate(); - ArchitecturePPC64::Terminate(); - -#define LLVM_TARGET(t) LLDB_PROCESS_ ## t(Terminate) -#include "llvm/Config/Targets.def" - - DisassemblerLLVMC::Terminate(); - - JITLoaderGDB::Terminate(); - ProcessElfCore::Terminate(); - ProcessMachCore::Terminate(); - minidump::ProcessMinidump::Terminate(); - MemoryHistoryASan::Terminate(); - AddressSanitizerRuntime::Terminate(); - ThreadSanitizerRuntime::Terminate(); - UndefinedBehaviorSanitizerRuntime::Terminate(); - MainThreadCheckerRuntime::Terminate(); - wasm::SymbolVendorWasm::Terminate(); - SymbolVendorELF::Terminate(); - breakpad::SymbolFileBreakpad::Terminate(); - SymbolFileDWARF::Terminate(); - SymbolFilePDB::Terminate(); - SymbolFileSymtab::Terminate(); - UnwindAssembly_x86::Terminate(); - UnwindAssemblyInstEmulation::Terminate(); - - EmulateInstructionARM::Terminate(); - EmulateInstructionARM64::Terminate(); - EmulateInstructionMIPS::Terminate(); - EmulateInstructionMIPS64::Terminate(); - EmulateInstructionPPC64::Terminate(); - - SymbolFileDWARFDebugMap::Terminate(); - ItaniumABILanguageRuntime::Terminate(); - AppleObjCRuntimeV2::Terminate(); - AppleObjCRuntimeV1::Terminate(); - SystemRuntimeMacOSX::Terminate(); - RenderScriptRuntime::Terminate(); - - CPlusPlusLanguage::Terminate(); - ObjCLanguage::Terminate(); - ObjCPlusPlusLanguage::Terminate(); - -#if defined(__APPLE__) - DynamicLoaderDarwinKernel::Terminate(); - ProcessKDP::Terminate(); - SymbolVendorMacOSX::Terminate(); - PlatformAppleTVSimulator::Terminate(); - PlatformAppleWatchSimulator::Terminate(); - PlatformRemoteAppleTV::Terminate(); - PlatformRemoteAppleWatch::Terminate(); - PlatformRemoteAppleBridge::Terminate(); -#endif - -#if defined(__FreeBSD__) - ProcessFreeBSD::Terminate(); -#endif - Debugger::SettingsTerminate(); - - platform_gdb_server::PlatformRemoteGDBServer::Terminate(); - process_gdb_remote::ProcessGDBRemote::Terminate(); - StructuredDataDarwinLog::Terminate(); - - DynamicLoaderMacOSXDYLD::Terminate(); - DynamicLoaderMacOS::Terminate(); - DynamicLoaderPOSIXDYLD::Terminate(); - DynamicLoaderStatic::Terminate(); - DynamicLoaderWindowsDYLD::Terminate(); - - - platform_freebsd::PlatformFreeBSD::Terminate(); - platform_linux::PlatformLinux::Terminate(); - platform_netbsd::PlatformNetBSD::Terminate(); - platform_openbsd::PlatformOpenBSD::Terminate(); - PlatformWindows::Terminate(); - platform_android::PlatformAndroid::Terminate(); - PlatformMacOSX::Terminate(); - PlatformRemoteiOS::Terminate(); -#if defined(__APPLE__) - PlatformiOSSimulator::Terminate(); - PlatformDarwinKernel::Terminate(); -#endif - - breakpad::ObjectFileBreakpad::Terminate(); - ObjectFileELF::Terminate(); - ObjectFileMachO::Terminate(); - ObjectFilePECOFF::Terminate(); - wasm::ObjectFileWasm::Terminate(); - - ObjectContainerBSDArchive::Terminate(); - ObjectContainerUniversalMachO::Terminate(); + // Terminate plugins +#define LLDB_PLUGIN(p) p::Terminate(); +#include "Plugins.def" // Now shutdown the common parts, in reverse order. SystemInitializerCommon::Terminate(); Index: lldb/unittests/Disassembler/CMakeLists.txt =================================================================== --- lldb/unittests/Disassembler/CMakeLists.txt +++ lldb/unittests/Disassembler/CMakeLists.txt @@ -6,7 +6,7 @@ lldbCore lldbSymbol lldbTarget - lldbPluginDisassemblerLLVM + lldbPluginDisassemblerLLVMC lldbPluginProcessUtility LINK_COMPONENTS Support Index: lldb/unittests/Expression/CMakeLists.txt =================================================================== --- lldb/unittests/Expression/CMakeLists.txt +++ lldb/unittests/Expression/CMakeLists.txt @@ -7,7 +7,7 @@ LINK_LIBS lldbCore - lldbPluginExpressionParserClang + lldbPluginClangASTContext lldbUtility lldbUtilityHelpers LLVMTestingSupport Index: lldb/unittests/UnwindAssembly/ARM64/CMakeLists.txt =================================================================== --- lldb/unittests/UnwindAssembly/ARM64/CMakeLists.txt +++ lldb/unittests/UnwindAssembly/ARM64/CMakeLists.txt @@ -5,8 +5,8 @@ lldbSymbol lldbTarget lldbPluginUnwindAssemblyInstEmulation - lldbPluginDisassemblerLLVM - lldbPluginInstructionARM64 + lldbPluginDisassemblerLLVMC + lldbPluginEmulateInstructionARM64 lldbPluginProcessUtility LINK_COMPONENTS Support Index: lldb/unittests/UnwindAssembly/PPC64/CMakeLists.txt =================================================================== --- lldb/unittests/UnwindAssembly/PPC64/CMakeLists.txt +++ lldb/unittests/UnwindAssembly/PPC64/CMakeLists.txt @@ -5,8 +5,8 @@ lldbSymbol lldbTarget lldbPluginUnwindAssemblyInstEmulation - lldbPluginDisassemblerLLVM - lldbPluginInstructionPPC64 + lldbPluginDisassemblerLLVMC + lldbPluginEmulateInstructionPPC64 lldbPluginProcessUtility LINK_COMPONENTS Support Index: lldb/unittests/UnwindAssembly/x86/CMakeLists.txt =================================================================== --- lldb/unittests/UnwindAssembly/x86/CMakeLists.txt +++ lldb/unittests/UnwindAssembly/x86/CMakeLists.txt @@ -3,7 +3,7 @@ LINK_LIBS lldbCore lldbSymbol - lldbPluginUnwindAssemblyX86 + lldbPluginUnwindAssembly_x86 LINK_COMPONENTS Support ${LLVM_TARGETS_TO_BUILD}