diff options
author | Eugene Zemtsov <e.zemtsov@gmail.com> | 2015-04-23 00:20:03 -0700 |
---|---|---|
committer | Eugene Zemtsov <Eugene.Zemtsov@microsoft.com> | 2015-04-27 12:16:58 -0700 |
commit | 890ee7cf30980cd9f0205872b7cffc19a8ca803c (patch) | |
tree | 08ce4fb642d8a1a4bf417b2b9ec57d8aded0fc34 /src/dlls/dbgshim | |
parent | 44d84e920e58c9020b5d6dc7e86b5e2f45fcd531 (diff) | |
download | coreclr-890ee7cf30980cd9f0205872b7cffc19a8ca803c.tar.gz coreclr-890ee7cf30980cd9f0205872b7cffc19a8ca803c.tar.bz2 coreclr-890ee7cf30980cd9f0205872b7cffc19a8ca803c.zip |
Proper CLR module discovery in dbgshim on POSIX systems
Diffstat (limited to 'src/dlls/dbgshim')
-rw-r--r-- | src/dlls/dbgshim/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/dlls/dbgshim/dbgshim.cpp | 20 |
2 files changed, 14 insertions, 7 deletions
diff --git a/src/dlls/dbgshim/CMakeLists.txt b/src/dlls/dbgshim/CMakeLists.txt index 5b0f767a5d..7eef457bc7 100644 --- a/src/dlls/dbgshim/CMakeLists.txt +++ b/src/dlls/dbgshim/CMakeLists.txt @@ -31,6 +31,7 @@ endif(CLR_CMAKE_PLATFORM_LINUX) add_library(dbgshim SHARED ${DBGSHIM_SOURCES}) set(DBGSHIM_LIBRARIES + debug-pal debugshim corguids dbgutil diff --git a/src/dlls/dbgshim/dbgshim.cpp b/src/dlls/dbgshim/dbgshim.cpp index 5519234bd7..846cd47ffc 100644 --- a/src/dlls/dbgshim/dbgshim.cpp +++ b/src/dlls/dbgshim/dbgshim.cpp @@ -26,8 +26,12 @@ #include <getproductversionnumber.h> #include <dbgenginemetrics.h> +#if defined(FEATURE_PAL) +#include "debug-pal.h" +#else #define PSAPI_VERSION 2 #include <psapi.h> +#endif #include "dbgshim.h" @@ -699,15 +703,15 @@ HRESULT CreateVersionStringFromModule(DWORD pidDebuggee, EX_CATCH_HRESULT(hr); return hr; #else - swprintf_s(pBuffer, cchBuffer, W("%08x"), pidDebuggee); + HMODULE hmodTargetCLR = (HMODULE)GetDynamicLibraryAddressInProcess(pidDebuggee, MAKEDLLNAME_A(MAIN_CLR_MODULE_NAME_A)); + + swprintf_s(pBuffer, cchBuffer, W("%08x;%08x;%p"), CorDebugLatestVersion, pidDebuggee, hmodTargetCLR); #endif // FEATURE_PAL } return S_OK; } -#ifndef FEATURE_PAL - // Functions that we'll look for in the loaded Mscordbi module. typedef HRESULT (STDAPICALLTYPE *FPCoreCLRCreateCordbObject)( int iDebuggerVersion, @@ -755,6 +759,7 @@ HRESULT ParseVersionString(LPCWSTR szDebuggeeVersion, CorDebugInterfaceVersion * return S_OK; } +#ifndef FEATURE_PAL //----------------------------------------------------------------------------- // Appends "\mscordbi.dll" to the path. This converts a directory name into the full path to mscordbi.dll. // @@ -901,7 +906,7 @@ HRESULT CreateDebuggingInterfaceFromVersionEx( *ppCordb = NULL; -#ifndef FEATURE_PAL + // // Step 1: Parse version information into internal data structures // @@ -914,6 +919,7 @@ HRESULT CreateDebuggingInterfaceFromVersionEx( if (FAILED(hr)) goto Exit; +#ifndef FEATURE_PAL // // Step 2: Find the proper Dbi module (mscordbi.dll) and load it. // @@ -980,13 +986,13 @@ HRESULT CreateDebuggingInterfaceFromVersionEx( hr = CORDBG_E_DEBUG_COMPONENT_MISSING; goto Exit; } - FPCreateCordbObject fpCreate = (FPCreateCordbObject)GetProcAddress(hMod, "CreateCordbObject"); - if (fpCreate == NULL) + FPCoreCLRCreateCordbObject fpCreate2 = (FPCoreCLRCreateCordbObject)GetProcAddress(hMod, "CoreCLRCreateCordbObject"); + if (hmodTargetCLR == NULL || fpCreate2 == NULL) { hr = CORDBG_E_INCOMPATIBLE_PROTOCOL; goto Exit; } - hr = fpCreate(iDebuggerVersion, &pCordb); + hr = fpCreate2(iDebuggerVersion, pidDebuggee, hmodTargetCLR, &pCordb); } #endif // FEATURE_PAL _ASSERTE((pCordb == NULL) == FAILED(hr)); |