Return DiaSymReader library for cross-arch crossgen to Runtime package #50149
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The
Microsoft.NETCore.App.Runtime.win-armpackage ships x86 and ARM versions ofcrossgen.exe, which require the corresponding versions of theMicrosoft.DiaSymReader.Native.*.dlllibrary. While .NET Core 3.1 and .NET 5 releases contained three different architectures for the DiaSymReader library (x86, amd64, and arm), changes made in .NET 6 caused to ship only the architecture used for cross-compilation, i.e. x86. PR #49739 replaced it with the native architecture (arm), which fixed the native compilation scenario, but broke the cross-architecture compilation scenario.This PR returns
Microsoft.DiaSymReader.Native.x86.dllto thewin-armpackage; however, this time it is placed in theruntimes\x86_arm\nativedirectory for cross-compilation libraries rather than theruntimes\win-arm\nativedirectory for native libraries.Below is the list of DiaSymReader library architectures shipped with different versions of the
win-armpackage. All package versions contain ARM-hostedcrossgen.exein thetoolsdirectory and x86-hostedcrossgen.exein thetools\x86_armdirectory.runtimes\win-arm\nativedirectory.runtimes\win-arm\nativedirectory.runtimes\win-arm\nativedirectory.runtimes\win-arm\nativedirectory and x86 in theruntimes\x86_arm\nativedirectory.Everything said above also applies to the
win-arm64package, which ships x64 and ARM64 versions ofcrossgen.exe. While .NET 5 releases contained three different architectures for the DiaSymReader library (x86, amd64, and arm, but no arm64), changes made in .NET 6 caused to ship only the architecture used for cross-compilation, i.e. amd64. PR #49739 replaced it with the native architecture (arm64), which fixed the native compilation scenario (together with theceeload.hfix in this PR), but broke the cross-architecture compilation scenario.This PR returns
Microsoft.DiaSymReader.Native.amd64.dllto thewin-arm64package; however, this time it is placed in theruntimes\x64_arm64\nativedirectory for cross-compilation libraries rather than theruntimes\win-arm64\nativedirectory for native libraries.Below is the list of DiaSymReader library architectures shipped with different versions of the
win-arm64package. All package versions contain ARM64-hostedcrossgen.exein thetoolsdirectory and x64-hostedcrossgen.exein thetools\x64_arm64directory.runtimes\win-arm64\nativedirectory.runtimes\win-arm64\nativedirectory.runtimes\win-arm64\nativedirectory.runtimes\win-arm64\nativedirectory and amd64 in theruntimes\x64_arm64\nativedirectory.