[win] Fix truncated unwinds for Arm64 Windows

This commit is contained in:
Daniel Paoliello
2026-02-27 14:53:09 -08:00
parent 3a70d0349f
commit 614bac581b
2 changed files with 7 additions and 6 deletions
@@ -347,7 +347,13 @@ extern "C" LLVMTargetMachineRef LLVMRustCreateTargetMachine(
// option causes bugs in the LLVM WebAssembly backend. You should be able to
// remove this check when Rust's minimum supported LLVM version is >= 18
// https://github.com/llvm/llvm-project/pull/65876
if (!Trip.isWasm()) {
//
// Also keep traps after noreturn calls on Windows, because the trap is
// needed to keep the return address within the calling function's
// .pdata range. Without it, RtlLookupFunctionEntry resolves the wrong
// function and SEH unwinding (used for backtraces) terminates early.
// See https://github.com/rust-lang/rust/issues/140489
if (!Trip.isWasm() && !Trip.isOSWindows()) {
Options.NoTrapAfterNoreturn = true;
}
}
-5
View File
@@ -47,14 +47,9 @@ macro_rules! dump_and_die {
// there, even on i686-pc-windows-msvc. We do the best we can in
// rust-lang/rust to test it as well, but sometimes we just gotta keep
// landing PRs.
//
// aarch64-msvc/arm64ec-msvc is broken as its backtraces are truncated.
// See https://github.com/rust-lang/rust/issues/140489
if cfg!(any(target_os = "android",
all(target_os = "linux", target_arch = "arm"),
all(target_env = "msvc", target_arch = "x86"),
all(target_env = "msvc", target_arch = "aarch64"),
all(target_env = "msvc", target_arch = "arm64ec"),
target_os = "freebsd",
target_os = "dragonfly",
target_os = "openbsd")) {