Skip to content

Commit 848c99e

Browse files
committed
Merge branch 'main' into zbs
Conflicts: src/coreclr/inc/jiteeversionguid.h
2 parents 4aead69 + e2ca190 commit 848c99e

File tree

2,286 files changed

+171091
-146362
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

2,286 files changed

+171091
-146362
lines changed

.github/workflows/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Please make sure to include the @dotnet/runtime-infrastructure group as a review
66

77
For workflows that are triggered by pull requests, refer to GitHub's documentation for the `pull_request` and `pull_request_target` events. The `pull_request_target` event is the more common use case in this repository as it runs the workflow in the context of the target branch instead of in the context of the pull request's fork or branch. However, workflows that need to consume the contents of the pull request need to use the `pull_request` event. There are security considerations with each of the events though.
88

9-
Most workflows are intended to run only in the `dotnet/runtime` repository and not in forks. To force workflow jobs to be skipped in forks, each job should apply an `if` statement that checks the repository name or owner. Either approach works, but checking only the repository owner allows the workflow to run in copies or forks withing the dotnet org.
9+
Most workflows are intended to run only in the `dotnet/runtime` repository and not in forks. To force workflow jobs to be skipped in forks, each job should apply an `if` statement that checks the repository name or owner. Either approach works, but checking only the repository owner allows the workflow to run in copies or forks within the dotnet org.
1010

1111
```yaml
1212
jobs:

docs/design/datacontracts/StackWalk.md

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,13 @@ This contract depends on the following descriptors:
4242
| `InlinedCallFrame` | `CallSiteSP` | SP saved in Frame |
4343
| `InlinedCallFrame` | `CallerReturnAddress` | Return address saved in Frame |
4444
| `InlinedCallFrame` | `CalleeSavedFP` | FP saved in Frame |
45+
| `InlinedCallFrame` (arm) | `SPAfterProlog` | Value of the SP after prolog. Used on ARM to maintain additional JIT invariant |
4546
| `SoftwareExceptionFrame` | `TargetContext` | Context object saved in Frame |
4647
| `SoftwareExceptionFrame` | `ReturnAddress` | Return address saved in Frame |
4748
| `FramedMethodFrame` | `TransitionBlockPtr` | Pointer to Frame's TransitionBlock |
4849
| `TransitionBlock` | `ReturnAddress` | Return address associated with the TransitionBlock |
4950
| `TransitionBlock` | `CalleeSavedRegisters` | Platform specific CalleeSavedRegisters struct associated with the TransitionBlock |
51+
| `TransitionBlock` (arm) | `ArgumentRegisters` | ARM specific `ArgumentRegisters` struct |
5052
| `FuncEvalFrame` | `DebuggerEvalPtr` | Pointer to the Frame's DebuggerEval object |
5153
| `DebuggerEval` | `TargetContext` | Context saved inside DebuggerEval |
5254
| `DebuggerEval` | `EvalDuringException` | Flag used in processing FuncEvalFrame |
@@ -56,7 +58,8 @@ This contract depends on the following descriptors:
5658
| `HijackFrame` | `HijackArgsPtr` | Pointer to the Frame's stored HijackArgs |
5759
| `HijackArgs` (amd64) | `CalleeSavedRegisters` | CalleeSavedRegisters data structure |
5860
| `HijackArgs` (amd64 Windows) | `Rsp` | Saved stack pointer |
59-
| `HijackArgs` (arm64/x86) | For each register `r` saved in HijackArgs, `r` | Register names associated with stored register values |
61+
| `HijackArgs` (arm/arm64/x86) | For each register `r` saved in HijackArgs, `r` | Register names associated with stored register values |
62+
| `ArgumentRegisters` (arm) | For each register `r` saved in ArgumentRegisters, `r` | Register names associated with stored register values |
6063
| `CalleeSavedRegisters` | For each callee saved register `r`, `r` | Register names associated with stored register values |
6164
| `TailCallFrame` (x86 Windows) | `CalleeSavedRegisters` | CalleeSavedRegisters data structure |
6265
| `TailCallFrame` (x86 Windows) | `ReturnAddress` | Frame's stored instruction pointer |
@@ -244,6 +247,8 @@ Most of the handlers are implemented in `BaseFrameHandler`. Platform specific co
244247

245248
InlinedCallFrames store and update only the IP, SP, and FP of a given context. If the stored IP (CallerReturnAddress) is 0 then the InlinedCallFrame does not have an active call and should not update the context.
246249

250+
* On ARM, the InlinedCallFrame stores the value of the SP after the prolog (`SPAfterProlog`) to allow unwinding for functions with stackalloc. When a function uses stackalloc, the CallSiteSP can already have been adjusted. This value should be placed in R9.
251+
247252
#### SoftwareExceptionFrame
248253

249254
SoftwareExceptionFrames store a copy of the context struct. The IP, SP, and all ABI specified (platform specific) callee-saved registers are copied from the stored context to the working context.
@@ -254,6 +259,8 @@ TransitionFrames hold a pointer to a `TransitionBlock`. The TransitionBlock hold
254259

255260
When updating the context from a TransitionFrame, the IP, SP, and all ABI specified callee-saved registers are copied over.
256261

262+
* On ARM, the additional register values stored in `ArgumentRegisters` are copied over. The `TransitionBlock` holds a pointer to the `ArgumentRegister` struct containing these values.
263+
257264
The following Frame types also use this mechanism:
258265
* FramedMethodFrame
259266
* CLRToCOMMethodFrame
@@ -289,7 +296,9 @@ HijackFrames carry a IP (ReturnAddress) and a pointer to `HijackArgs`. All platf
289296
* x64 - On x64, HijackArgs contains a CalleeSavedRegister struct. The saved registers values contained in the struct are copied over to the working context.
290297
* Windows - On Windows, HijackArgs also contains the SP value directly which is copied over to the working context.
291298
* Non-Windows - On OS's other than Windows, HijackArgs does not contain an SP value. Instead since the HijackArgs struct lives on the stack, the SP is `&hijackArgs + sizeof(HijackArgs)`. This value is also copied over.
292-
* arm64 - Unlike on x64, on arm64 HijackArgs contains a list of register values instead of the CalleeSavedRegister struct. These values are copied over to the working context. The SP is fetched using the same technique as on x64 non-Windows where `SP = &hijackArgs + sizeof(HijackArgs)` and is copied over to the working context.
299+
* x86 - On x86, HijackArgs contains a list of register values instead of the CalleeSavedRegister struct. These values are copied over to the working context. The SP copied over to the working context and found using `SP = &hijackArgs + sizeof(HijackArgs)`.
300+
* arm64 - Unlike on x64, on arm64 HijackArgs contains a list of register values instead of the CalleeSavedRegister struct. These values are copied over to the working context. The SP is fetched using the same technique as on x64 non-Windows where `SP = &hijackArgs + sizeof(HijackArgs) + (hijackArgsSize % 16)` and is copied over to the working context. Note: `HijackArgs` may be padded to maintain 16 byte stack alignment.
301+
* arm - Similar to arm64, HijackArgs contains a list of register values. These values are copied over to the working context. The SP is fetched using the same technique as arm64 where `SP = &hijackArgs + sizeof(HijackArgs) + (hijackArgsSize % 8)` and is copied over to the working context. Note: `HijackArgs` may be padded to maintain 8 byte stack alignment.
293302

294303
#### TailCallFrame
295304

docs/project/list-of-diagnostics.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -310,9 +310,9 @@ Diagnostic id values for experimental APIs must not be recycled, as that could s
310310

311311
| Diagnostic ID | Introduced | Removed | Description |
312312
| :---------------- | ---------: | ------: | :---------- |
313-
| __`SYSLIB5001`__ | .NET 9 | TBD | `Tensor<T>` and related APIs in System.Numerics.Tensors are experimental |
313+
| __`SYSLIB5001`__ | .NET 9 | .NET 10 | `Tensor<T>` and related APIs in System.Numerics.Tensors are experimental |
314314
| __`SYSLIB5002`__ | .NET 9 | TBD | `SystemColors` alternate colors are experimental |
315315
| __`SYSLIB5003`__ | .NET 9 | TBD | `System.Runtime.Intrinsics.Arm.Sve` is experimental |
316316
| __`SYSLIB5004`__ | .NET 9 | TBD | `X86Base.DivRem` is experimental since performance is not as optimized as `T.DivRem` |
317-
| __`SYSLIB5005`__ | .NET 9 | TBD | `System.Formats.Nrbf` is experimental |
317+
| __`SYSLIB5005`__ | .NET 9 | .NET 10 | `System.Formats.Nrbf` is experimental |
318318
| __`SYSLIB5006`__ | .NET 10 | TBD | Types for Post-Quantum Cryptography (PQC) are experimental. |

eng/CodeAnalysis.src.globalconfig

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,7 @@ dotnet_diagnostic.CA1860.severity = warning
480480
# CA1861: Avoid constant arrays as arguments
481481
dotnet_diagnostic.CA1861.severity = warning
482482

483-
# CA1862: Prefer using 'StringComparer'/'StringComparison' to perform case-insensitive string comparisons
483+
# CA1862: Use the 'StringComparison' method overloads to perform case-insensitive string comparisons
484484
dotnet_diagnostic.CA1862.severity = suggestion
485485

486486
# CA1863: Use 'CompositeFormat'
@@ -513,6 +513,15 @@ dotnet_diagnostic.CA1871.severity = warning
513513
# CA1872: Prefer 'Convert.ToHexString' and 'Convert.ToHexStringLower' over call chains based on 'BitConverter.ToString'
514514
dotnet_diagnostic.CA1872.severity = warning
515515

516+
# CA1873: Avoid potentially expensive logging
517+
dotnet_diagnostic.CA1873.severity = warning
518+
519+
# CA1874: Use 'Regex.IsMatch'
520+
dotnet_diagnostic.CA1874.severity = warning
521+
522+
# CA1875: Use 'Regex.Count'
523+
dotnet_diagnostic.CA1875.severity = warning
524+
516525
# CA2000: Dispose objects before losing scope
517526
dotnet_diagnostic.CA2000.severity = none
518527

@@ -564,7 +573,13 @@ dotnet_diagnostic.CA2021.severity = warning
564573
# CA2022: Avoid inexact read with 'Stream.Read'
565574
dotnet_diagnostic.CA2022.severity = warning
566575

567-
# CA2025: Ensure tasks using 'IDisposable' instances complete before the instances are disposed
576+
# CA2023: Invalid braces in message template
577+
dotnet_diagnostic.CA2023.severity = warning
578+
579+
# CA2024: Do not use 'StreamReader.EndOfStream' in async methods
580+
dotnet_diagnostic.CA2024.severity = warning
581+
582+
# CA2025: Do not pass 'IDisposable' instances into unawaited tasks
568583
dotnet_diagnostic.CA2025.severity = warning
569584

570585
# CA2100: Review SQL queries for security vulnerabilities

eng/packaging.targets

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,9 +250,9 @@
250250
<!-- Add ReferenceCopyLocalPaths for ProjectReferences which are flagged as Pack="true" into the package. -->
251251
<_projectReferenceCopyLocalPaths Include="@(ReferenceCopyLocalPaths->WithMetadataValue('ReferenceSourceTarget', 'ProjectReference')->WithMetadataValue('Pack', 'true'))" />
252252
<TfmSpecificPackageFile Include="@(_projectReferenceCopyLocalPaths)"
253-
PackagePath="$([MSBuild]::ValueOrDefault('%(ReferenceCopyLocalPaths.PackagePath)', '$(BuildOutputTargetFolder)\$(_referringTargetFramework)\'))" />
253+
PackagePath="$([MSBuild]::ValueOrDefault('%(ReferenceCopyLocalPaths.PackagePath)', '$(BuildOutputTargetFolder)/$(_referringTargetFramework)/'))" />
254254
<TfmSpecificDebugSymbolsFile Include="@(TfmSpecificPackageFile->WithMetadataValue('Extension', '.pdb'))"
255-
TargetPath="/%(TfmSpecificPackageFile.PackagePath)/%(Filename)%(Extension)"
255+
TargetPath="/%(TfmSpecificPackageFile.PackagePath)%(Filename)%(Extension)"
256256
TargetFramework="$(_referringTargetFramework)"
257257
Condition="'$(IncludeSymbols)' == 'true'" />
258258
<!-- Remove symbol from the non symbol package. -->

eng/pipelines/common/templates/pipeline-with-resources.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ extends:
6767
image: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-24.04
6868

6969
linux_musl_x64_dev_innerloop:
70-
image: mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.21-amd64
70+
image: mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.22-amd64
7171

7272
linux_x64_sanitizer:
7373
image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-cross-amd64-sanitizer

eng/pipelines/coreclr/templates/helix-queues-setup.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -77,30 +77,30 @@ jobs:
7777
# Linux musl x64
7878
- ${{ if eq(parameters.platform, 'linux_musl_x64') }}:
7979
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
80-
- (Alpine.321.Amd64.Open)AzureLinux.3[email protected]/dotnet-buildtools/prereqs:alpine-3.21-helix-amd64
80+
- (Alpine.322.Amd64.Open)Ubuntu.2204[email protected]/dotnet-buildtools/prereqs:alpine-3.22-helix-amd64
8181
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
82-
- (Alpine.321.Amd64)AzureLinux.3[email protected]/dotnet-buildtools/prereqs:alpine-3.21-helix-amd64
82+
- (Alpine.322.Amd64)Ubuntu.2204[email protected]/dotnet-buildtools/prereqs:alpine-3.22-helix-amd64
8383

8484
# Linux musl arm32
8585
- ${{ if eq(parameters.platform, 'linux_musl_arm') }}:
8686
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
87-
- (Alpine.321.Arm32.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.21-helix-arm32v7
87+
- (Alpine.322.Arm32.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.22-helix-arm32v7
8888
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
89-
- (Alpine.321.Arm32)[email protected]/dotnet-buildtools/prereqs:alpine-3.21-helix-arm32v7
89+
- (Alpine.322.Arm32)[email protected]/dotnet-buildtools/prereqs:alpine-3.22-helix-arm32v7
9090

9191
# Linux musl arm64
9292
- ${{ if eq(parameters.platform, 'linux_musl_arm64') }}:
9393
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
94-
- (Alpine.321.Arm64.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.21-helix-arm64v8
94+
- (Alpine.322.Arm64.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.22-helix-arm64v8
9595
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
96-
- (Alpine.321.Arm64)[email protected]/dotnet-buildtools/prereqs:alpine-3.21-helix-arm64v8
96+
- (Alpine.322.Arm64)[email protected]/dotnet-buildtools/prereqs:alpine-3.22-helix-arm64v8
9797

9898
# Linux x64
9999
- ${{ if eq(parameters.platform, 'linux_x64') }}:
100100
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
101-
- Ubuntu.2204.Amd64.Open
101+
- AzureLinux.3.Amd64.Open
102102
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
103-
- Ubuntu.2204.Amd64
103+
- AzureLinux.3.Amd64
104104

105105
# OSX arm64
106106
- ${{ if eq(parameters.platform, 'osx_arm64') }}:

eng/pipelines/installer/helix-queues-setup.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,19 +29,20 @@ jobs:
2929

3030
# Linux arm64
3131
- ${{ if eq(parameters.platform, 'linux_arm64') }}:
32-
- (Ubuntu.2504.Arm64.Open)[email protected]/dotnet-buildtools/prereqs:ubuntu-25.04-helix-arm64v8
32+
- (Ubuntu.2510.Arm64.Open)[email protected]/dotnet-buildtools/prereqs:ubuntu-25.10-helix-arm64v8
3333

3434
# Linux musl x64
3535
- ${{ if eq(parameters.platform, 'linux_musl_x64') }}:
36-
- (Alpine.321.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.21-helix-amd64
36+
- (Alpine.322.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.22-helix-amd64
3737

3838
# Linux musl arm64
3939
- ${{ if and(eq(parameters.platform, 'linux_musl_arm64'), or(eq(parameters.jobParameters.isExtraPlatformsBuild, true), eq(parameters.jobParameters.includeAllPlatforms, true))) }}:
40-
- (Alpine.321.Arm64.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.21-helix-arm64v8
40+
- (Alpine.322.Arm64.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.22-helix-arm64v8
4141

4242
# Linux x64
4343
- ${{ if eq(parameters.platform, 'linux_x64') }}:
4444
- AzureLinux.3.Amd64.Open
45+
- Ubuntu.2204.Amd64.Open
4546

4647
# OSX arm64
4748
- ${{ if eq(parameters.platform, 'osx_arm64') }}:

0 commit comments

Comments
 (0)