Skip to content

[win][aarch64] Place catch objects in fixed stack locations #183

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 9, 2025

Conversation

dpaoliello
Copy link

This is a cherry-pick of llvm#147421

This fixes the rustc_thread_pool failure that is currently blocking enabling an Arm64 Windows CI runner for Rust: rust-lang/rust#142895 (comment)

From the original PR:

When an object with alignment requirements is placed on the stack, this causes a stack realignment which causes AArch64 to use x19 to refer to objects on the stack as there may be a gap between local variables and the Stack Pointer. This causes issues with the MSVC C++ exception personality as the offset to the catch object recorded in the handler table no longer matches the object being used in the catch block itself.

The fix for this is to place catch objects into the fixed object area.

@nikic nikic merged commit 99f0e05 into rust-lang:rustc/20.1-2025-02-13 Jul 9, 2025
@dpaoliello dpaoliello deleted the arm64catchobj branch July 9, 2025 19:50
bors added a commit to rust-lang/rust that referenced this pull request Jul 10, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants