diff --git a/NuGet.config b/NuGet.config
index cc821d0d5225..4b98d4115eb7 100644
--- a/NuGet.config
+++ b/NuGet.config
@@ -24,6 +24,7 @@
+
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 7f415f551985..d08305d6613b 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -15,42 +15,42 @@
9887f549bbf4a5eb3796e3d783826a3758b6b1a9
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
@@ -59,18 +59,18 @@
https://github.com/dotnet/core-setup
7d57652f33493fa022125b7f63aad0d70c52d810
-
+
https://github.com/dotnet/emsdk
- b65413ac057eb0a54c51b76b1855bc377c2132c3
+ f364bf26bf50d8cbdd8652d284d25a8ccb55039a
-
+
https://github.com/dotnet/emsdk
- b65413ac057eb0a54c51b76b1855bc377c2132c3
+ f364bf26bf50d8cbdd8652d284d25a8ccb55039a
-
+
https://github.com/dotnet/emsdk
- b65413ac057eb0a54c51b76b1855bc377c2132c3
+ f364bf26bf50d8cbdd8652d284d25a8ccb55039a
@@ -135,13 +135,13 @@
https://github.com/dotnet/roslyn
fc52718eccdb37693a40a518b1178b1e23114e68
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- d3aba8fe1a0d0f5c145506f292b72ea9d28406fc
+ f736effe82a61eb6f5eba46e4173eae3b7d3dffd
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- d3aba8fe1a0d0f5c145506f292b72ea9d28406fc
+ f736effe82a61eb6f5eba46e4173eae3b7d3dffd
https://github.com/nuget/nuget.client
@@ -230,99 +230,99 @@
bc9161306b23641b0364b8f93d546da4d48da1eb
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop
- 6c65543c1f1eb7afc55533a107775e6e5004f023
+ 9b9a26408ddd07dc51c232082af1ca6863af7bc9
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop
- 6c65543c1f1eb7afc55533a107775e6e5004f023
+ 9b9a26408ddd07dc51c232082af1ca6863af7bc9
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop
- 6c65543c1f1eb7afc55533a107775e6e5004f023
+ 9b9a26408ddd07dc51c232082af1ca6863af7bc9
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop
- 6c65543c1f1eb7afc55533a107775e6e5004f023
+ 9b9a26408ddd07dc51c232082af1ca6863af7bc9
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-wpf
- 88a1aae37eae3f1a0fb51bc828a9b302df178b2a
+ 58060180f2776452976616ae4894118dfd21f8d5
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- d3aba8fe1a0d0f5c145506f292b72ea9d28406fc
+ f736effe82a61eb6f5eba46e4173eae3b7d3dffd
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- d3aba8fe1a0d0f5c145506f292b72ea9d28406fc
+ f736effe82a61eb6f5eba46e4173eae3b7d3dffd
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- d3aba8fe1a0d0f5c145506f292b72ea9d28406fc
+ f736effe82a61eb6f5eba46e4173eae3b7d3dffd
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- d3aba8fe1a0d0f5c145506f292b72ea9d28406fc
+ f736effe82a61eb6f5eba46e4173eae3b7d3dffd
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- d3aba8fe1a0d0f5c145506f292b72ea9d28406fc
+ f736effe82a61eb6f5eba46e4173eae3b7d3dffd
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- d3aba8fe1a0d0f5c145506f292b72ea9d28406fc
+ f736effe82a61eb6f5eba46e4173eae3b7d3dffd
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- d3aba8fe1a0d0f5c145506f292b72ea9d28406fc
+ f736effe82a61eb6f5eba46e4173eae3b7d3dffd
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- d3aba8fe1a0d0f5c145506f292b72ea9d28406fc
+ f736effe82a61eb6f5eba46e4173eae3b7d3dffd
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- d3aba8fe1a0d0f5c145506f292b72ea9d28406fc
+ f736effe82a61eb6f5eba46e4173eae3b7d3dffd
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- d3aba8fe1a0d0f5c145506f292b72ea9d28406fc
+ f736effe82a61eb6f5eba46e4173eae3b7d3dffd
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- d3aba8fe1a0d0f5c145506f292b72ea9d28406fc
+ f736effe82a61eb6f5eba46e4173eae3b7d3dffd
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- d3aba8fe1a0d0f5c145506f292b72ea9d28406fc
+ f736effe82a61eb6f5eba46e4173eae3b7d3dffd
@@ -343,21 +343,21 @@
2920c71a15b90cb85e1847a32dfe9f13b1d77da2
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- d3aba8fe1a0d0f5c145506f292b72ea9d28406fc
+ f736effe82a61eb6f5eba46e4173eae3b7d3dffd
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- d3aba8fe1a0d0f5c145506f292b72ea9d28406fc
+ f736effe82a61eb6f5eba46e4173eae3b7d3dffd
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- d3aba8fe1a0d0f5c145506f292b72ea9d28406fc
+ f736effe82a61eb6f5eba46e4173eae3b7d3dffd
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- d3aba8fe1a0d0f5c145506f292b72ea9d28406fc
+ f736effe82a61eb6f5eba46e4173eae3b7d3dffd
https://github.com/dotnet/test-templates
@@ -390,13 +390,13 @@
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-winforms
- 3bcdfce6d4b5e6825ae33f1e464b73264e36017f
+ b05fe71693c6c70b537911f88865ea456a9015f5
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-wpf
- 88a1aae37eae3f1a0fb51bc828a9b302df178b2a
+ 58060180f2776452976616ae4894118dfd21f8d5
https://github.com/dotnet/xdt
@@ -503,89 +503,89 @@
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- d3aba8fe1a0d0f5c145506f292b72ea9d28406fc
+ f736effe82a61eb6f5eba46e4173eae3b7d3dffd
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
@@ -619,9 +619,9 @@
7d6bcdd1e851735273e4eed39e40366d48f335c9
-
+
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- fa7cdded37981a97cec9a3e233c4a6af58a91c57
+ 2f124007573374800632d39177cde00ca9fe1ef0
https://github.com/dotnet/arcade-services
diff --git a/eng/Versions.props b/eng/Versions.props
index f3cbe517e066..10a472949a42 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -77,7 +77,7 @@
- 9.0.11-servicing.25519.1
+ 9.0.12-servicing.25608.3
@@ -86,54 +86,54 @@
- 9.0.11
- 9.0.11-servicing.25517.16
- 9.0.11
- 9.0.11
- 9.0.11-servicing.25517.16
- 9.0.11
- 9.0.11
- 9.0.11
- 9.0.11
- 9.0.11
- 9.0.11
+ 9.0.12
+ 9.0.12-servicing.25606.9
+ 9.0.12
+ 9.0.12
+ 9.0.12-servicing.25606.9
+ 9.0.12
+ 9.0.12
+ 9.0.12
+ 9.0.12
+ 9.0.12
+ 9.0.12
8.0.0-rc.1.23414.4
- 9.0.11-servicing.25517.16
- 9.0.11-servicing.25517.16
- 9.0.11
- 9.0.11
- 9.0.11
- 9.0.11
+ 9.0.12-servicing.25606.9
+ 9.0.12-servicing.25606.9
+ 9.0.12
+ 9.0.12
+ 9.0.12
+ 9.0.12
2.1.0
- 9.0.11
+ 9.0.12
8.0.0
- 9.0.11
- 9.0.11
- 9.0.11
- 9.0.11
- 9.0.11
- 9.0.11
- 9.0.11
+ 9.0.12
+ 9.0.12
+ 9.0.12
+ 9.0.12
+ 9.0.12
+ 9.0.12
+ 9.0.12
8.0.0
- 9.0.11
- 9.0.11
- 9.0.11
- 9.0.11
- 9.0.11
- 9.0.11
- 9.0.11
+ 9.0.12
+ 9.0.12
+ 9.0.12
+ 9.0.12
+ 9.0.12
+ 9.0.12
+ 9.0.12
8.0.5
- 9.0.11
- 9.0.11
+ 9.0.12
+ 9.0.12
- 9.0.11-servicing.25520.1
- 9.0.11-servicing.25520.1
- 9.0.11
- 9.0.11
+ 9.0.12-servicing.25609.4
+ 9.0.12-servicing.25609.4
+ 9.0.12
+ 9.0.12
@@ -215,19 +215,19 @@
- 9.0.11
- 9.0.11-servicing.25520.6
- 9.0.11-servicing.25520.6
- 9.0.11-servicing.25520.6
- 9.0.11-servicing.25520.6
- 9.0.11-servicing.25520.6
- 9.0.11
- 9.0.11
- 9.0.11-servicing.25520.6
- 9.0.11-servicing.25520.6
- 9.0.11-servicing.25520.6
- 9.0.11-servicing.25520.6
- 9.0.11-servicing.25520.6
+ 9.0.12
+ 9.0.12-servicing.25609.3
+ 9.0.12-servicing.25609.3
+ 9.0.12-servicing.25609.3
+ 9.0.12-servicing.25609.3
+ 9.0.12-servicing.25609.3
+ 9.0.12
+ 9.0.12
+ 9.0.12-servicing.25609.3
+ 9.0.12-servicing.25609.3
+ 9.0.12-servicing.25609.3
+ 9.0.12-servicing.25609.3
+ 9.0.12-servicing.25609.3
@@ -237,8 +237,8 @@
- 9.0.11-rtm.25520.2
- 9.0.11-rtm.25520.2
+ 9.0.12-rtm.25609.3
+ 9.0.12-rtm.25609.3
@@ -317,8 +317,8 @@
15.0.9617
18.0.9617
- 9.0.11-servicing.25516.4
- 9.0.11
+ 9.0.12-servicing.25602.39
+ 9.0.12
$(MicrosoftNETWorkloadEmscriptenCurrentManifest90100PackageVersion)
9.0.100$([System.Text.RegularExpressions.Regex]::Match($(EmscriptenWorkloadManifestVersion), `-(?!rtm)[A-z]*[\.]*\d*`))
diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/SdkContentTests/SdkFileDiffExclusions.txt b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/SdkContentTests/SdkFileDiffExclusions.txt
index d10fb0eca178..33a1265a0d38 100644
--- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/SdkContentTests/SdkFileDiffExclusions.txt
+++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/SdkContentTests/SdkFileDiffExclusions.txt
@@ -20,7 +20,7 @@
./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/|msft # Intentional - explicitly excluded from source-build
# netfx tooling and tasks, not building in source-build - https://github.com/dotnet/source-build/issues/3514
-./sdk/x.y.z/Sdks/Microsoft.Build.Tasks.Git/tools/netframework/|msft
+./sdk/x.y.z/Sdks/Microsoft.Build.Tasks.Git/tools/net*/|msft
./sdk/x.y.z/Sdks/Microsoft.NET.Sdk/tools/net472/|msft
./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.BlazorWebAssembly/tools/net472/|msft
./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/|msft
@@ -30,11 +30,11 @@
./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Web.ProjectSystem/tools/net472/|msft
./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/tools/net472/|msft
./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Worker/tools/net472/|msft
-./sdk/x.y.z/Sdks/Microsoft.SourceLink.AzureRepos.Git/tools/netframework/|msft
-./sdk/x.y.z/Sdks/Microsoft.SourceLink.Bitbucket.Git/tools/netframework/|msft
-./sdk/x.y.z/Sdks/Microsoft.SourceLink.Common/tools/netframework/|msft
-./sdk/x.y.z/Sdks/Microsoft.SourceLink.GitHub/tools/netframework/|msft
-./sdk/x.y.z/Sdks/Microsoft.SourceLink.GitLab/tools/netframework/|msft
+./sdk/x.y.z/Sdks/Microsoft.SourceLink.AzureRepos.Git/tools/net*/|msft
+./sdk/x.y.z/Sdks/Microsoft.SourceLink.Bitbucket.Git/tools/net*/|msft
+./sdk/x.y.z/Sdks/Microsoft.SourceLink.Common/tools/net*/|msft
+./sdk/x.y.z/Sdks/Microsoft.SourceLink.GitHub/tools/net*/|msft
+./sdk/x.y.z/Sdks/Microsoft.SourceLink.GitLab/tools/net*/|msft
# vstest localization is disabled in Linux builds - https://github.com/dotnet/source-build/issues/3517
./sdk/x.y.z/*/Microsoft.CodeCoverage.IO.resources.dll|msft
diff --git a/src/SourceBuild/patches/runtime/0001-release-9.0-staging-Add-flags-when-the-clang-s-major.patch b/src/SourceBuild/patches/runtime/0001-release-9.0-staging-Add-flags-when-the-clang-s-major.patch
deleted file mode 100644
index 395dea35c1ae..000000000000
--- a/src/SourceBuild/patches/runtime/0001-release-9.0-staging-Add-flags-when-the-clang-s-major.patch
+++ /dev/null
@@ -1,145 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Aaron R Robinson
-Date: Fri, 14 Nov 2025 11:01:28 -0800
-Subject: [PATCH] [release/9.0-staging] Add flags when the clang's major
- version is > 20.0 (#121151)
-Backport: https://github.com/dotnet/runtime/pull/121151
-
-## Customer Impact
-
-- [x] Customer reported
-- [ ] Found internally
-
-These issues were reported in
-https://github.com/dotnet/runtime/issues/119706 as problems with
-clang-21 on Fedora 43. The investigation uncovered that clang introduced
-a potentially breaking change in clang-20 that we do not currently
-consume. These build changes impact VMR related builds when linux
-distrobutions performing source build adopt clang-21.
-
-clang-20 breaking change log -
-https://releases.llvm.org/20.1.0/tools/clang/docs/ReleaseNotes.html#potentially-breaking-changes.
-
-This PR contains the minimal changes needed to fix issues from the
-following PR https://github.com/dotnet/runtime/pull/120775.
-
-.NET 10: https://github.com/dotnet/runtime/pull/121124
-.NET 8: https://github.com/dotnet/runtime/pull/121150
-
-## Regression
-
-- [ ] Yes
-- [x] No
-
-Build with the new clang-21 compiler will cause the runtime to crash.
-
-## Testing
-
-This has been validated using various legs and examples to demonstrate
-the usage of undefined behavior these flags convert into "defined"
-behavior in C/C++.
-
-## Risk
-
-Low. This has zero impact on our production build since we specifically
-target clang-18. This is only valid for those partners that are using
-clang-20+.
----
- eng/native/configurecompiler.cmake | 18 +++++++++++++++---
- src/coreclr/debug/di/rspriv.h | 4 ++--
- src/coreclr/debug/di/rsthread.cpp | 12 ++++++------
- 3 files changed, 23 insertions(+), 11 deletions(-)
-
-diff --git a/eng/native/configurecompiler.cmake b/eng/native/configurecompiler.cmake
-index 109b947e4eb..c114c03a9a1 100644
---- a/eng/native/configurecompiler.cmake
-+++ b/eng/native/configurecompiler.cmake
-@@ -526,9 +526,21 @@ if (CLR_CMAKE_HOST_UNIX)
- # Disable frame pointer optimizations so profilers can get better call stacks
- add_compile_options(-fno-omit-frame-pointer)
-
-- # Make signed arithmetic overflow of addition, subtraction, and multiplication wrap around
-- # using twos-complement representation (this is normally undefined according to the C++ spec).
-- add_compile_options(-fwrapv)
-+ if((CMAKE_C_COMPILER_ID STREQUAL "Clang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 20.0) OR
-+ (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 20.0))
-+ # Make signed overflow well-defined. Implies the following flags in clang-20 and above.
-+ # -fwrapv - Make signed arithmetic overflow of addition, subtraction, and multiplication wrap around
-+ # using twos-complement representation (this is normally undefined according to the C++ spec).
-+ # -fwrapv-pointer - The same as -fwrapv but for pointers.
-+ add_compile_options(-fno-strict-overflow)
-+
-+ # Suppress C++ strict aliasing rules. This matches our use of MSVC.
-+ add_compile_options(-fno-strict-aliasing)
-+ else()
-+ # Make signed arithmetic overflow of addition, subtraction, and multiplication wrap around
-+ # using twos-complement representation (this is normally undefined according to the C++ spec).
-+ add_compile_options(-fwrapv)
-+ endif()
-
- if(CLR_CMAKE_HOST_APPLE)
- # Clang will by default emit objc_msgSend stubs in Xcode 14, which ld from earlier Xcodes doesn't understand.
-diff --git a/src/coreclr/debug/di/rspriv.h b/src/coreclr/debug/di/rspriv.h
-index 7e2b49b3170..119ca6f7c08 100644
---- a/src/coreclr/debug/di/rspriv.h
-+++ b/src/coreclr/debug/di/rspriv.h
-@@ -6404,8 +6404,8 @@ private:
- // Lazily initialized.
- EXCEPTION_RECORD * m_pExceptionRecord;
-
-- static const CorDebugUserState kInvalidUserState = CorDebugUserState(-1);
-- CorDebugUserState m_userState; // This is the current state of the
-+ static const int kInvalidUserState = -1;
-+ int m_userState; // This is the current state of the
- // thread, at the time that the
- // left side synchronized
-
-diff --git a/src/coreclr/debug/di/rsthread.cpp b/src/coreclr/debug/di/rsthread.cpp
-index cd7f79867a5..8c4f3317eff 100644
---- a/src/coreclr/debug/di/rsthread.cpp
-+++ b/src/coreclr/debug/di/rsthread.cpp
-@@ -783,7 +783,7 @@ CorDebugUserState CordbThread::GetUserState()
- m_userState = pDAC->GetUserState(m_vmThreadToken);
- }
-
-- return m_userState;
-+ return (CorDebugUserState)m_userState;
- }
-
-
-@@ -887,7 +887,7 @@ HRESULT CordbThread::CreateStepper(ICorDebugStepper ** ppStepper)
- //Returns true if current user state of a thread is USER_WAIT_SLEEP_JOIN
- bool CordbThread::IsThreadWaitingOrSleeping()
- {
-- CorDebugUserState userState = m_userState;
-+ int userState = m_userState;
- if (userState == kInvalidUserState)
- {
- //If m_userState is not ready, we'll read from DAC only part of it which
-@@ -3721,14 +3721,14 @@ HRESULT CordbUnmanagedThread::SetupFirstChanceHijackForSync()
- LOG((LF_CORDB, LL_INFO10000, "CUT::SFCHFS: hijackCtx started as:\n"));
- LogContext(GetHijackCtx());
-
-- // Save the thread's full context for all platforms except for x86 because we need the
-+ // Save the thread's full context for all platforms except for x86 because we need the
- // DT_CONTEXT_EXTENDED_REGISTERS to avoid getting incomplete information and corrupt the thread context
- DT_CONTEXT context;
--#ifdef TARGET_X86
-+#ifdef TARGET_X86
- context.ContextFlags = DT_CONTEXT_FULL | DT_CONTEXT_EXTENDED_REGISTERS;
- #else
- context.ContextFlags = DT_CONTEXT_FULL;
--#endif
-+#endif
-
- BOOL succ = DbiGetThreadContext(m_handle, &context);
- _ASSERTE(succ);
-@@ -3739,7 +3739,7 @@ HRESULT CordbUnmanagedThread::SetupFirstChanceHijackForSync()
- LOG((LF_CORDB, LL_ERROR, "CUT::SFCHFS: DbiGetThreadContext error=0x%x\n", error));
- }
-
--#ifdef TARGET_X86
-+#ifdef TARGET_X86
- GetHijackCtx()->ContextFlags = DT_CONTEXT_FULL | DT_CONTEXT_EXTENDED_REGISTERS;
- #else
- GetHijackCtx()->ContextFlags = DT_CONTEXT_FULL;