Fix cross-dac Runtime::CreateInstance() (#928)
authorSteve MacLean <Steve.MacLean@microsoft.com>
Thu, 19 Mar 2020 16:12:48 +0000 (12:12 -0400)
committerGitHub <noreply@github.com>
Thu, 19 Mar 2020 16:12:48 +0000 (12:12 -0400)
src/SOS/Strike/runtime.cpp
src/SOS/Strike/runtime.h

index 94afc1fd0ab69a48108a014965ae615b94642bc3..a84ea2fad6dae45f7dd61a97adc7e6f522c6734c 100644 (file)
@@ -57,6 +57,15 @@ HRESULT Runtime::CreateInstance(bool isDesktop, Runtime **ppRuntime)
     if (*ppRuntime == nullptr)
     {
         hr = g_ExtSymbols->GetModuleByModuleName(runtimeModuleName, 0, &moduleIndex, &moduleAddress);
+#ifndef FEATURE_PAL
+        // On Windows, support loading a Linux core dump by checking for NETCORE_RUNTIME_MODULE_NAME_UNIX_A too
+        if (!SUCCEEDED(hr) && !isDesktop)
+        {
+            runtimeModuleName = NETCORE_RUNTIME_MODULE_NAME_UNIX_A;
+
+            hr = g_ExtSymbols->GetModuleByModuleName(runtimeModuleName, 0, &moduleIndex, &moduleAddress);
+        }
+#endif // !FEATURE_PAL
         if (SUCCEEDED(hr))
         {
 #ifdef FEATURE_PAL
index 1693201982110b0188200f9cec7d58e0bbc7b0a5..fdae98432b7b979c375a2aed9927dc814419a76f 100644 (file)
@@ -24,6 +24,8 @@
 
 #else
 
+#define NETCORE_RUNTIME_MODULE_NAME_UNIX_A "libcoreclr"
+
 #define NETCORE_RUNTIME_MODULE_NAME_W   W("coreclr")
 #define NETCORE_RUNTIME_MODULE_NAME_A   "coreclr"
 #define NETCORE_RUNTIME_DLL_NAME_W      MAKEDLLNAME_W(NETCORE_RUNTIME_MODULE_NAME_W)