From ebdc98cf6c19e8a4f2de02e28f51048d25cbf70f Mon Sep 17 00:00:00 2001 From: Vance Morrison Date: Fri, 16 Mar 2018 17:26:21 -0700 Subject: [PATCH] This change make DacTableGen work for VS2017 There was a issue (see https://github.com/dotnet/coreclr/issues/11305) where a tool used in the CoreCLR build called DacTableGen requires a old version of the msdia120.dll. The symptom is that this tool would fail with a class not registered errror. This tool comes from a very old nuget package microsoft.dotnet.buildtools.coreclr, which we no longer can build easly. Our guidance now is to move tools that are only used in one repository (like this one) out of nuget packages and simply build them as part of the build. This change makes a step in that direction. The DacTableGen code actually was already in the CoreCLR repo, so this change 1. Fixes the source of DacTableGen so that tool no longer needs a com object to be registered (but it DOES need msdia140.dll to be on the path. This is true for VS2017. 2. Turns on the build of DacTableGen 3. Change the build use the built DacTableGen (unless running on VS2017, in that case we use the the version in the tool package. 4.) Remove the hack that warns people to register msdia120 (since you don't need to anymore) There is also an unrelated addition to the docs. This change should still work for VS2015 (because it falls back to the old DacTableGen in that case) Finally we should move to using the Linux method of creating the DAC, and so all these tools and their nuget package can be removed. --- .../workflow/OfficalAndDailyBuilds.md | 6 +++ build.cmd | 17 --------- src/ToolBox/SOS/CMakeLists.txt | 1 + src/ToolBox/SOS/DacTableGen/CMakeLists.txt | 8 ++-- src/ToolBox/SOS/DacTableGen/DIALib.dll | Bin 0 -> 42496 bytes src/ToolBox/SOS/DacTableGen/diautil.cs | 36 +++++++++++++++++- src/dlls/mscoree/coreclr/CMakeLists.txt | 9 ++++- 7 files changed, 53 insertions(+), 24 deletions(-) create mode 100644 src/ToolBox/SOS/DacTableGen/DIALib.dll diff --git a/Documentation/workflow/OfficalAndDailyBuilds.md b/Documentation/workflow/OfficalAndDailyBuilds.md index 7aa1fa0699..9ae49d7631 100644 --- a/Documentation/workflow/OfficalAndDailyBuilds.md +++ b/Documentation/workflow/OfficalAndDailyBuilds.md @@ -16,6 +16,12 @@ repositories. You can see what is available from * CoreCLR at * NETCore.App at +These builds have a version number that follows the the versioning scheme described below (month number/day of month), +but they also will have a component that indicate which Git Branch the are working from + + * preview1 - are daily builds from the 'release/*' branch where * is the next official version to be released + * preview2 - are daily builds from the 'master' branch (where active work happens first (typically)) + Thus if your goal is just to get the latest bug fixes and features, you don't need to build CoreCLR yourself you can simply add to your Nuget Feed list and set the `RuntimeFrameworkVersion` in your project file to a `Microsoft.NETCore.App` version. You need to restore diff --git a/build.cmd b/build.cmd index 889a1962d4..888e8e48d6 100644 --- a/build.cmd +++ b/build.cmd @@ -12,23 +12,6 @@ set __ThisScriptDir="%~dp0" call "%__ThisScriptDir%"\setup_vs_tools.cmd if NOT '%ERRORLEVEL%' == '0' exit /b 1 -REM Make the work-around to a bug in the microsoft.dotnet.buildtools.coreclr package until it is fixed. -reg query HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{3BFCEA48-620F-4B6B-81F7-B9AF75454C7D}\InprocServer32 > NUL: 2>&1 -if NOT '%ERRORLEVEL%' == '0' ( - echo. - echo.********************************************************************************** - echo.Error: We have detected that the msdia120.dll is not registered. - echo.This is necessary for the build to complete without a Class_Not_Registered error. - echo. - echo.You can fix this by - echo. 1. Launching the "Developer Command Prompt for VS2017" with Administrative privileges - echo. 2. Running regsvr32.exe "%%VSINSTALLDIR%%\Common7\IDE\msdia120.dll" - echo. - echo.This will only need to be done once for the lifetime of the machine. - echo.For more details see: https://github.com/dotnet/coreclr/issues/11305 - exit /b 1 -) - if defined VS150COMNTOOLS ( set "__VSToolsRoot=%VS150COMNTOOLS%" set "__VCToolsRoot=%VS150COMNTOOLS%\..\..\VC\Auxiliary\Build" diff --git a/src/ToolBox/SOS/CMakeLists.txt b/src/ToolBox/SOS/CMakeLists.txt index 9380dc1de6..212f4eebd7 100644 --- a/src/ToolBox/SOS/CMakeLists.txt +++ b/src/ToolBox/SOS/CMakeLists.txt @@ -1,3 +1,4 @@ if(WIN32) + add_subdirectory(DacTableGen) add_subdirectory(Strike) endif(WIN32) diff --git a/src/ToolBox/SOS/DacTableGen/CMakeLists.txt b/src/ToolBox/SOS/DacTableGen/CMakeLists.txt index 01ee51f7a4..c980cc2ff8 100644 --- a/src/ToolBox/SOS/DacTableGen/CMakeLists.txt +++ b/src/ToolBox/SOS/DacTableGen/CMakeLists.txt @@ -7,13 +7,13 @@ set(DACTABLEGEN_SOURCES # Cmake does not support csharp sources so add custom command add_custom_target(dactablegen ALL - COMMAND csc.exe /t:exe /platform:anycpu /r:System.dll /r:$ /out:${CMAKE_CURRENT_BINARY_DIR}/dactablegen.exe ${DACTABLEGEN_SOURCES} - COMMAND ${CMAKE_COMMAND} -E copy $ $ - DEPENDS ${DACTABLEGEN_SOURCES} dialib + COMMAND csc.exe /t:exe /platform:anycpu32bitpreferred /r:System.dll /r:DiaLib.dll /out:${CMAKE_CURRENT_BINARY_DIR}/dactablegen.exe ${DACTABLEGEN_SOURCES} + COMMAND ${CMAKE_COMMAND} -E copy DIAlib.dll ${CMAKE_CURRENT_BINARY_DIR} + DEPENDS ${DACTABLEGEN_SOURCES} DIAlib.dll WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) # In order to use dactablegen as an executable target it needs to be imported. # Target is used in dll/mscoree/coreclr/cmakelists.txt add_executable(dactablegen_exe IMPORTED GLOBAL) -set_property(TARGET dactablegen_exe PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/dactablegen.exe) \ No newline at end of file +set_property(TARGET dactablegen_exe PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/dactablegen.exe) diff --git a/src/ToolBox/SOS/DacTableGen/DIALib.dll b/src/ToolBox/SOS/DacTableGen/DIALib.dll new file mode 100644 index 0000000000000000000000000000000000000000..06665740dc94dbfc16fd74872781516ed0129197 GIT binary patch literal 42496 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 literal 0 HcmV?d00001 diff --git a/src/ToolBox/SOS/DacTableGen/diautil.cs b/src/ToolBox/SOS/DacTableGen/diautil.cs index d0e9c811a7..f0937b190e 100644 --- a/src/ToolBox/SOS/DacTableGen/diautil.cs +++ b/src/ToolBox/SOS/DacTableGen/diautil.cs @@ -97,7 +97,7 @@ class Util public class DiaFile { - DiaSourceClass m_dsc; + IDiaDataSource m_dsc; IDiaSession m_session; DiaSymbol m_global; IDiaEnumSymbols m_publicsEnum; @@ -106,7 +106,7 @@ public class DiaFile public DiaFile(String pdbFile, String dllFile) { - m_dsc = new DiaSourceClass(); + m_dsc = GetDiaSourceClass(); string pdbPath = System.IO.Path.GetDirectoryName(pdbFile); // Open the PDB file, validating it matches the supplied DLL file @@ -414,6 +414,37 @@ public class DiaFile E_PDB_SYMSRV_CACHE_FULL , E_PDB_MAX } + + // Get the DiaSourceClass from the msdia140.dll in the app directory without using COM activation + static IDiaDataSource GetDiaSourceClass() { + // This is Class ID for the DiaSourceClass used by msdia140. + var diaSourceClassGuid = new Guid("{e6756135-1e65-4d17-8576-610761398c3c}"); + var comClassFactory = (IClassFactory)DllGetClassObject(diaSourceClassGuid, typeof(IClassFactory).GUID); + + // As the DLL to create a new instance of it + object comObject = null; + Guid iDiaDataSourceGuid = typeof(IDiaDataSource).GUID; + comClassFactory.CreateInstance(null, ref iDiaDataSourceGuid, out comObject); + + // And return it as the type we expect + return (comObject as IDiaDataSource); + } + + [return: MarshalAs(UnmanagedType.Interface)] + [DllImport("msdia140.dll", CharSet = CharSet.Unicode, ExactSpelling = true, PreserveSig = false)] + private static extern object DllGetClassObject( + [In, MarshalAs(UnmanagedType.LPStruct)] Guid rclsid, + [In, MarshalAs(UnmanagedType.LPStruct)] Guid riid); + + [ComImport, ComVisible(false), Guid("00000001-0000-0000-C000-000000000046"), + InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] + private interface IClassFactory + { + void CreateInstance([MarshalAs(UnmanagedType.Interface)] object aggregator, + ref Guid refiid, + [MarshalAs(UnmanagedType.Interface)] out object createdObject); + void LockServer(bool incrementRefCount); + } } /*************************************************************************************** @@ -806,4 +837,5 @@ public class DiaDataSymbol : DiaSymbol } } + } // Namespace Dia.Util diff --git a/src/dlls/mscoree/coreclr/CMakeLists.txt b/src/dlls/mscoree/coreclr/CMakeLists.txt index fb5cc90291..cb08438c4d 100644 --- a/src/dlls/mscoree/coreclr/CMakeLists.txt +++ b/src/dlls/mscoree/coreclr/CMakeLists.txt @@ -162,11 +162,18 @@ if(WIN32) clr_unknown_arch() endif() + set(DACTABLEGEN_EXE ${CMAKE_CURRENT_BINARY_DIR}/../../../ToolBox/SOS/DacTableGen/dactablegen.exe) + # The DactTableGen executable that we build needs an msdia140.dll supplied by Visual Studio. + # however VS2015 may not have this, so fall back to the DactTableGen in the tools package (which is old) + if($ENV{__VSVersion} STREQUAL "vs2015") + set(DACTABLEGEN_EXE ${BuildToolsDir}/dactablegen.exe) + endif() + add_custom_command( DEPENDS coreclr mscordaccore mscordbi ${CLR_DIR}/src/debug/daccess/daccess.cpp OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/inject_debug_resources.timestamp COMMAND ${CMAKE_CXX_COMPILER} /P /EP /TP ${PREPROCESS_DEFINITIONS} ${INC_DIR} /Fi${CMAKE_CURRENT_BINARY_DIR}/daccess.i ${CLR_DIR}/src/debug/daccess/daccess.cpp - COMMAND ${BuildToolsDir}/dactablegen.exe /dac:${CMAKE_CURRENT_BINARY_DIR}/daccess.i /pdb:${CMAKE_CURRENT_BINARY_DIR}/$/coreclr.pdb /dll:$ /bin:${CMAKE_CURRENT_BINARY_DIR}/wks.bin + COMMAND ${DACTABLEGEN_EXE} /dac:${CMAKE_CURRENT_BINARY_DIR}/daccess.i /pdb:${CMAKE_CURRENT_BINARY_DIR}/$/coreclr.pdb /dll:$ /bin:${CMAKE_CURRENT_BINARY_DIR}/wks.bin COMMAND ${BuildToolsDir}/InjectResource.exe /bin:${CMAKE_CURRENT_BINARY_DIR}/wks.bin /dll:$ COMMAND ${BuildToolsDir}/GenClrDebugResource.exe /dac:$ /dbi:$ /sku:onecoreclr /out:${CMAKE_CURRENT_BINARY_DIR}/clrDebugResource.bin COMMAND ${BuildToolsDir}/InjectResource.exe /bin:${CMAKE_CURRENT_BINARY_DIR}/clrDebugResource.bin /dll:$ /name:CLRDEBUGINFO -- 2.34.1