mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-27 18:57:42 +03:00
[win] Fix truncated unwinds for Arm64 Windows
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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")) {
|
||||
|
||||
Reference in New Issue
Block a user