diff --git a/lldb/source/API/SystemInitializerFull.cpp b/lldb/source/API/SystemInitializerFull.cpp --- a/lldb/source/API/SystemInitializerFull.cpp +++ b/lldb/source/API/SystemInitializerFull.cpp @@ -162,9 +162,9 @@ LLDB_PLUGIN_INITIALIZE(DynamicLoaderHexagonDYLD); LLDB_PLUGIN_INITIALIZE(DynamicLoaderMacOSXDYLD); LLDB_PLUGIN_INITIALIZE(DynamicLoaderPosixDYLD); - LLDB_PLUGIN_INITIALIZE(DynamicLoaderWasmDYLD); // Before DynamicLoaderStatic. - LLDB_PLUGIN_INITIALIZE(DynamicLoaderWindowsDYLD); LLDB_PLUGIN_INITIALIZE(DynamicLoaderStatic); + LLDB_PLUGIN_INITIALIZE(DynamicLoaderWasmDYLD); + LLDB_PLUGIN_INITIALIZE(DynamicLoaderWindowsDYLD); // Scan for any system or user LLDB plug-ins PluginManager::Initialize(); @@ -251,9 +251,9 @@ LLDB_PLUGIN_TERMINATE(DynamicLoaderHexagonDYLD); LLDB_PLUGIN_TERMINATE(DynamicLoaderMacOSXDYLD); LLDB_PLUGIN_TERMINATE(DynamicLoaderPosixDYLD); + LLDB_PLUGIN_TERMINATE(DynamicLoaderStatic); LLDB_PLUGIN_TERMINATE(DynamicLoaderWasmDYLD); LLDB_PLUGIN_TERMINATE(DynamicLoaderWindowsDYLD); - LLDB_PLUGIN_TERMINATE(DynamicLoaderStatic); LLDB_PLUGIN_TERMINATE(PlatformFreeBSD); LLDB_PLUGIN_TERMINATE(PlatformLinux); diff --git a/lldb/source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp b/lldb/source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp --- a/lldb/source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp +++ b/lldb/source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp @@ -29,8 +29,19 @@ const llvm::Triple &triple_ref = process->GetTarget().GetArchitecture().GetTriple(); const llvm::Triple::OSType os_type = triple_ref.getOS(); - if ((os_type == llvm::Triple::UnknownOS)) - create = true; + const llvm::Triple::ArchType arch_type = triple_ref.getArch(); + if (os_type == llvm::Triple::UnknownOS) { + // The WASM and Hexagon plugin check the ArchType rather than the OSType, + // so explicitly reject those here. + switch(arch_type) { + case llvm::Triple::hexagon: + case llvm::Triple::wasm32: + case llvm::Triple::wasm64: + break; + default: + create = true; + } + } } if (!create) { diff --git a/lldb/tools/lldb-test/SystemInitializerTest.cpp b/lldb/tools/lldb-test/SystemInitializerTest.cpp --- a/lldb/tools/lldb-test/SystemInitializerTest.cpp +++ b/lldb/tools/lldb-test/SystemInitializerTest.cpp @@ -144,9 +144,9 @@ LLDB_PLUGIN_INITIALIZE(DynamicLoaderHexagonDYLD); LLDB_PLUGIN_INITIALIZE(DynamicLoaderMacOSXDYLD); LLDB_PLUGIN_INITIALIZE(DynamicLoaderPosixDYLD); - LLDB_PLUGIN_INITIALIZE(DynamicLoaderWasmDYLD); // Before DynamicLoaderStatic. - LLDB_PLUGIN_INITIALIZE(DynamicLoaderWindowsDYLD); LLDB_PLUGIN_INITIALIZE(DynamicLoaderStatic); + LLDB_PLUGIN_INITIALIZE(DynamicLoaderWasmDYLD); + LLDB_PLUGIN_INITIALIZE(DynamicLoaderWindowsDYLD); // Scan for any system or user LLDB plug-ins PluginManager::Initialize(); @@ -233,9 +233,9 @@ LLDB_PLUGIN_TERMINATE(DynamicLoaderHexagonDYLD); LLDB_PLUGIN_TERMINATE(DynamicLoaderMacOSXDYLD); LLDB_PLUGIN_TERMINATE(DynamicLoaderPosixDYLD); + LLDB_PLUGIN_TERMINATE(DynamicLoaderStatic); LLDB_PLUGIN_TERMINATE(DynamicLoaderWasmDYLD); LLDB_PLUGIN_TERMINATE(DynamicLoaderWindowsDYLD); - LLDB_PLUGIN_TERMINATE(DynamicLoaderStatic); LLDB_PLUGIN_TERMINATE(PlatformFreeBSD); LLDB_PLUGIN_TERMINATE(PlatformLinux);