[release/9.0] Fix compilation of runtime with Xcode 16 #106800
Merged
+24
−5
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.
Backport of #106744 and #106442 to release/9.0
/cc @jkotas
Customer Impact
Apple build tools (Xcode) are updated annually. Customers are expected to use up to date version to build applications, which is often enforced through policies on Apple systems and tooling (eg. uploading to App Store or signing and notarizing may enforce minimum Xcode version necessary for building apps). Xcode 16, currently at beta 6, started enforcing restriction on correct layout of unwinding information in relation to publicly exported symbols. In order to allow compilation with the new tooling we need to mark some of the runtime symbols with
.alt_entry
to signify they are not function entrypoints but rather just labels pointing at specific instruction in a given function. Apple has a release scheduled closely aligned with the .NET release schedule with the major releases happening in autumn. We should ensure the .NET 9 release compiles with the up-to-date tooling at the time of the release.Regression
Testing
The runtime repository was built on Apple machine with Xcode 16 beta 6 and it no longer produces compilation errors. NativeAOT smoke tests were used to verify that the code still links and runs as it should.
Risk
Low