diff --git a/.vsts-dotnet.yml b/.vsts-dotnet.yml index 87b5ae13df..43ba18a7a5 100644 --- a/.vsts-dotnet.yml +++ b/.vsts-dotnet.yml @@ -29,6 +29,11 @@ jobs: _BuildConfig: Release _BuildArch: arm _PublishArtifacts: bin/Windows_NT.arm.Release + Build_Release_arm64: + _BuildOnly: true + _BuildConfig: Release + _BuildArch: arm64 + _PublishArtifacts: bin/Windows_NT.arm64.Release - template: /eng/build.yml parameters: @@ -253,6 +258,15 @@ jobs: targetPath: '$(Build.SourcesDirectory)/artifacts/bin/Windows_NT.arm.Release' condition: succeeded() + # Windows arm64 download + + - task: DownloadPipelineArtifact@2 + displayName: Download Windows Arm64 Artifacts + inputs: + artifactName: Windows_arm64_Release + targetPath: '$(Build.SourcesDirectory)/artifacts/bin/Windows_NT.arm64.Release' + condition: succeeded() + # Linux x64 download - task: DownloadPipelineArtifact@2 diff --git a/eng/Build-Native.cmd b/eng/Build-Native.cmd index e8f4082386..bdd4b942a2 100644 --- a/eng/Build-Native.cmd +++ b/eng/Build-Native.cmd @@ -123,6 +123,9 @@ if NOT "%__CrossArch%" == "" set __CrossComponentBinDir=%__CrossComponentBinDir% set "__CMakeBinDir=%__BinDir%" set "__CMakeBinDir=%__CMakeBinDir:\=/%" +:: Common msbuild arguments +set "__CommonBuildArgs=/v:!__Verbosity! /p:Configuration=%__BuildType% /p:BuildArch=%__BuildArch% %__UnprocessedBuildArgs%" + if not exist "%__BinDir%" md "%__BinDir%" if not exist "%__IntermediatesDir%" md "%__IntermediatesDir%" if not exist "%__LogDir%" md "%__LogDir%" @@ -174,13 +177,13 @@ if /i %__BuildCrossArch% EQU 1 ( echo Generating Version Header set __GenerateVersionRestoreLog="%__LogDir%\GenerateVersionRestore.binlog" - "%__DotNetCli%" msbuild "%__ProjectDir%\eng\CreateVersionFile.csproj" /v:!__Verbosity! /bl:!__GenerateVersionRestoreLog! /t:Restore /p:Configuration=%__BuildType% /p:Platform=%__BuildArch% %__UnprocessedBuildArgs% + "%__DotNetCli%" msbuild "%__ProjectDir%\eng\CreateVersionFile.csproj" /bl:!__GenerateVersionRestoreLog! /t:Restore %__CommonBuildArgs% if not !errorlevel! == 0 ( echo Generate Version Restore FAILED exit /b 1 ) set __GenerateVersionLog="%__LogDir%\GenerateVersion.binlog" - "%__DotNetCli%" msbuild "%__ProjectDir%\eng\CreateVersionFile.csproj" /v:!__Verbosity! /bl:!__GenerateVersionLog! /t:GenerateVersionFiles /p:FileVersionFile=%__RootBinDir%\bin\FileVersion.txt /p:GenerateVersionHeader=true /p:NativeVersionHeaderFile=%__CrossCompIntermediatesDir%\_version.h /p:Configuration=%__BuildType% /p:Platform=%__BuildArch% %__UnprocessedBuildArgs% + "%__DotNetCli%" msbuild "%__ProjectDir%\eng\CreateVersionFile.csproj" /bl:!__GenerateVersionLog! /t:GenerateVersionFiles /p:FileVersionFile=%__RootBinDir%\bin\FileVersion.txt /p:GenerateVersionHeader=true /p:NativeVersionHeaderFile=%__CrossCompIntermediatesDir%\_version.h %__CommonBuildArgs% if not !errorlevel! == 0 ( echo Generate Version Header FAILED exit /b 1 @@ -209,7 +212,7 @@ if /i %__BuildCrossArch% EQU 1 ( set __BuildLog="%__LogDir%\Cross.Build.binlog" :: MSBuild.exe is the only one that has the C++ targets. "%__DotNetCli% msbuild" fails because VCTargetsPath isn't defined. - msbuild.exe %__CrossCompIntermediatesDir%\install.vcxproj /v:!__Verbosity! /bl:!__BuildLog! /p:Configuration=%__BuildType% /p:Platform=%__CrossArch% %__UnprocessedBuildArgs% + msbuild.exe %__CrossCompIntermediatesDir%\install.vcxproj /bl:!__BuildLog! %__CommonBuildArgs% if not !ERRORLEVEL! == 0 ( echo %__MsgPrefix%Error: cross-arch components build failed. Refer to the build log files for details: @@ -258,13 +261,13 @@ if %__Build% EQU 1 ( echo Generating Version Header set __GenerateVersionRestoreLog="%__LogDir%\GenerateVersionRestore.binlog" - "%__DotNetCli%" msbuild "%__ProjectDir%\eng\CreateVersionFile.csproj" /v:!__Verbosity! /bl:!__GenerateVersionRestoreLog! /t:Restore /p:Configuration=%__BuildType% /p:Platform=%__BuildArch% %__UnprocessedBuildArgs% + "%__DotNetCli%" msbuild "%__ProjectDir%\eng\CreateVersionFile.csproj" /bl:!__GenerateVersionRestoreLog! /t:Restore %__CommonBuildArgs% if not !errorlevel! == 0 ( echo Generate Version Restore FAILED exit /b 1 ) set __GenerateVersionLog="%__LogDir%\GenerateVersion.binlog" - "%__DotNetCli%" msbuild "%__ProjectDir%\eng\CreateVersionFile.csproj" /v:!__Verbosity! /bl:!__GenerateVersionLog! /t:GenerateVersionFiles /p:FileVersionFile=%__RootBinDir%\bin\FileVersion.txt /p:GenerateVersionHeader=true /p:NativeVersionHeaderFile=%__IntermediatesDir%\_version.h /p:Configuration=%__BuildType% /p:Platform=%__BuildArch% %__UnprocessedBuildArgs% + "%__DotNetCli%" msbuild "%__ProjectDir%\eng\CreateVersionFile.csproj" /bl:!__GenerateVersionLog! /t:GenerateVersionFiles /p:FileVersionFile=%__RootBinDir%\bin\FileVersion.txt /p:GenerateVersionHeader=true /p:NativeVersionHeaderFile=%__IntermediatesDir%\_version.h %__CommonBuildArgs% if not !errorlevel! == 0 ( echo Generate Version Header FAILED exit /b 1 @@ -292,7 +295,7 @@ if %__Build% EQU 1 ( set __BuildLog="%__LogDir%\Native.Build.binlog" :: MSBuild.exe is the only one that has the C++ targets. "%__DotNetCli% msbuild" fails because VCTargetsPath isn't defined. - msbuild.exe %__IntermediatesDir%\install.vcxproj /v:!__Verbosity! /bl:!__BuildLog! /p:Configuration=%__BuildType% /p:Platform=%__BuildArch% %__UnprocessedBuildArgs% + msbuild.exe %__IntermediatesDir%\install.vcxproj /bl:!__BuildLog! %__CommonBuildArgs% if not !ERRORLEVEL! == 0 ( echo %__MsgPrefix%Error: native component build failed. Refer to the build log files for details: diff --git a/eng/build.ps1 b/eng/build.ps1 index 7521165a17..8f32731eba 100644 --- a/eng/build.ps1 +++ b/eng/build.ps1 @@ -52,7 +52,7 @@ if ($ci) { # Install sdk for building, restore and build managed components. if (-not $skipmanaged) { - Invoke-Expression "& `"$engroot\common\build.ps1`" -build -configuration $configuration -verbosity $verbosity /p:TestArchitectures=$architecture $remainingargs" + Invoke-Expression "& `"$engroot\common\build.ps1`" -build -binaryLog -configuration $configuration -verbosity $verbosity /p:BuildArch=$architecture /p:TestArchitectures=$architecture $remainingargs" if ($lastExitCode -ne 0) { exit $lastExitCode } @@ -69,7 +69,7 @@ if (-not $skipnative) { # Run the xunit tests if ($test -or $dailytest) { if (-not $crossbuild) { - & "$engroot\common\build.ps1" -test -configuration $configuration -verbosity $verbosity -ci:$ci /bl:$logdir\Test.binlog /p:TestArchitectures=$architecture /p:BuildArch=$architecture /p:DailyTest=$dailyTest + & "$engroot\common\build.ps1" -test -configuration $configuration -verbosity $verbosity -ci:$ci /bl:$logdir\Test.binlog /p:BuildArch=$architecture /p:TestArchitectures=$architecture /p:DailyTest=$dailyTest if ($lastExitCode -ne 0) { exit $lastExitCode } diff --git a/src/SOS/CMakeLists.txt b/src/SOS/CMakeLists.txt index 07cf24bd60..c6578d7595 100644 --- a/src/SOS/CMakeLists.txt +++ b/src/SOS/CMakeLists.txt @@ -11,7 +11,9 @@ if(WIN32) add_compile_options(/Zl) # omit default library name in .OBJ add_subdirectory(runcommand) - add_subdirectory(SOS.UnitTests/Debuggees/DesktopClrHost) + if(NOT CLR_CMAKE_TARGET_ARCH_ARM64) + add_subdirectory(SOS.UnitTests/Debuggees/DesktopClrHost) + endif() endif(WIN32) add_definitions(-D_SECURE_SCL=0) diff --git a/src/SOS/SOS.NETCore/CMakeLists.txt b/src/SOS/SOS.NETCore/CMakeLists.txt index e92f5891f8..bc8caa12d0 100644 --- a/src/SOS/SOS.NETCore/CMakeLists.txt +++ b/src/SOS/SOS.NETCore/CMakeLists.txt @@ -22,5 +22,8 @@ if(NOT ${NUGET_PACKAGES} STREQUAL "") set(DIASYMREADER_ARCH amd64) endif() - install(FILES ${NUGET_PACKAGES}/microsoft.diasymreader.native/1.7.0/runtimes/win/native/Microsoft.DiaSymReader.Native.${DIASYMREADER_ARCH}.dll DESTINATION . ) + # Until issue https://github.com/dotnet/diagnostics/issues/324 is done there is no arm64 version of the diasymreader in this package + if(NOT CLR_CMAKE_TARGET_ARCH_ARM64) + install(FILES ${NUGET_PACKAGES}/microsoft.diasymreader.native/1.7.0/runtimes/win/native/Microsoft.DiaSymReader.Native.${DIASYMREADER_ARCH}.dll DESTINATION . ) + endif() endif() diff --git a/src/SOS/SOS.NETCore/SOS.NETCore.csproj b/src/SOS/SOS.NETCore/SOS.NETCore.csproj index 74decf10c1..d4487ca8a5 100644 --- a/src/SOS/SOS.NETCore/SOS.NETCore.csproj +++ b/src/SOS/SOS.NETCore/SOS.NETCore.csproj @@ -12,6 +12,7 @@ - + + diff --git a/src/SOS/SOS.Package/SOS.Package.csproj b/src/SOS/SOS.Package/SOS.Package.csproj index fa13882087..d429cbbbe7 100644 --- a/src/SOS/SOS.Package/SOS.Package.csproj +++ b/src/SOS/SOS.Package/SOS.Package.csproj @@ -41,6 +41,7 @@ + @@ -110,6 +111,18 @@ $(GallerySubDir)\win-arm + + + $(GallerySubDir)\win-arm64 + + + + $(GallerySubDir)\win-arm64 + @@ -138,6 +151,10 @@ $(SymbolsDir)\win-arm + + + $(SymbolsDir)\win-arm64 + diff --git a/src/SOS/SOS.Package/SOS.Symbol.Package.csproj b/src/SOS/SOS.Package/SOS.Symbol.Package.csproj index c1f326b0d7..cf0e5a0c8b 100644 --- a/src/SOS/SOS.Package/SOS.Symbol.Package.csproj +++ b/src/SOS/SOS.Package/SOS.Symbol.Package.csproj @@ -27,6 +27,9 @@ $(SOSPackagePathPrefix)/win-arm + + $(SOSPackagePathPrefix)/win-arm64 + $(SOSPackagePathPrefix)/linux-x64 diff --git a/src/SOS/Strike/hostcoreclr.cpp b/src/SOS/Strike/hostcoreclr.cpp index 62e4dc1944..ea44f8431a 100644 --- a/src/SOS/Strike/hostcoreclr.cpp +++ b/src/SOS/Strike/hostcoreclr.cpp @@ -992,7 +992,7 @@ HRESULT SymbolReader::LoadSymbolsForWindowsPDB(___in IMetaDataImport* pMD, ___in size_t lastSlash = diasymreaderPath.rfind(DIRECTORY_SEPARATOR_CHAR_A); if (lastSlash == std::string::npos) { - ExtErr("Error: Failed to parse sos module name\n"); + ExtErr("Error: Failed to parse SOS module name\n"); return E_FAIL; } diasymreaderPath.erase(lastSlash + 1); @@ -1001,7 +1001,7 @@ HRESULT SymbolReader::LoadSymbolsForWindowsPDB(___in IMetaDataImport* pMD, ___in // We now need a binder object that will take the module and return a if (FAILED(Status = CreateInstanceFromPath(CLSID_CorSymBinder_SxS, IID_ISymUnmanagedBinder3, diasymreaderPath.c_str(), &g_hmoduleSymBinder, (void**)&g_pSymBinder))) { - ExtOut("SOS error: Unable to find the diasymreader module/interface %08x at %s\n", Status, diasymreaderPath.c_str()); + ExtDbgOut("SOS error: Unable to find the diasymreader module/interface %08x at %s\n", Status, diasymreaderPath.c_str()); return Status; } OnUnloadTask::Register(CleanupSymBinder); diff --git a/src/SOS/Strike/util.h b/src/SOS/Strike/util.h index 28b6cccda1..6c2fde13e0 100644 --- a/src/SOS/Strike/util.h +++ b/src/SOS/Strike/util.h @@ -97,9 +97,7 @@ DECLARE_HANDLE(OBJECTHANDLE); #elif defined(_ARM_) #define NATIVE_SYMBOL_READER_DLL "Microsoft.DiaSymReader.Native.arm.dll" #elif defined(_ARM64_) -// Use diasymreader until the package has an arm64 version - issue #7360 -//#define NATIVE_SYMBOL_READER_DLL "Microsoft.DiaSymReader.Native.arm64.dll" -#define NATIVE_SYMBOL_READER_DLL "diasymreader.dll" +#define NATIVE_SYMBOL_READER_DLL "Microsoft.DiaSymReader.Native.arm64.dll" #endif // PREFIX macros - Begin diff --git a/src/sos-packaging.props b/src/sos-packaging.props index ff43ddee83..de482365cb 100644 --- a/src/sos-packaging.props +++ b/src/sos-packaging.props @@ -39,6 +39,18 @@ $(SOSPackagePathPrefix)/win-arm + + $(SOSPackagePathPrefix)/win-arm64 + + + $(SOSPackagePathPrefix)/win-arm64 + + + $(SOSPackagePathPrefix)/linux-x64