diff options
Diffstat (limited to 'lldb/tools/lldb-test/SystemInitializerTest.cpp')
-rw-r--r-- | lldb/tools/lldb-test/SystemInitializerTest.cpp | 290 |
1 files changed, 272 insertions, 18 deletions
diff --git a/lldb/tools/lldb-test/SystemInitializerTest.cpp b/lldb/tools/lldb-test/SystemInitializerTest.cpp index cd180b5..b33b086 100644 --- a/lldb/tools/lldb-test/SystemInitializerTest.cpp +++ b/lldb/tools/lldb-test/SystemInitializerTest.cpp @@ -17,10 +17,82 @@ #include <string> -#define LLDB_PLUGIN(p) LLDB_PLUGIN_DECLARE(p) -#include "Plugins/Plugins.def" - +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) using namespace lldb_private; @@ -28,29 +100,133 @@ 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(); -#define LLDB_SCRIPT_PLUGIN(p) -#define LLDB_PLUGIN(p) LLDB_PLUGIN_INITIALIZE(p); -#include "Plugins/Plugins.def" + LLDB_PLUGIN_INITIALIZE(TypeSystemClang); - // We ignored all the script interpreter earlier, so initialize - // ScriptInterpreterNone explicitly. - LLDB_PLUGIN_INITIALIZE(ScriptInterpreterNone); +#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); + + 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(); @@ -62,16 +238,94 @@ 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(); - // We ignored all the script interpreter earlier, so terminate - // ScriptInterpreterNone explicitly. - LLDB_PLUGIN_TERMINATE(ScriptInterpreterNone); + 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); -#define LLDB_SCRIPT_PLUGIN(p) -#define LLDB_PLUGIN(p) LLDB_PLUGIN_TERMINATE(p); -#include "Plugins/Plugins.def" + 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); // Now shutdown the common parts, in reverse order. SystemInitializerCommon::Terminate(); |