Skip to content

Commit e2b1f40

Browse files
committed
Auto merge of #127360 - GuillaumeGomez:rollup-f0zs1qr, r=GuillaumeGomez
Rollup of 7 pull requests Successful merges: - #124290 (DependencyList: removed outdated comment) - #126709 (Migrate `include_bytes_deps`, `optimization-remarks-dir-pgo`, `optimization-remarks-dir`, `issue-40535` and `rmeta-preferred` `run-make` tests to rmake) - #127214 (Use the native unwind function in miri where possible) - #127320 (Update windows-bindgen to 0.58.0) - #127349 (Tweak `-1 as usize` suggestion) - #127352 (coverage: Rename `mir::coverage::BranchInfo` to `CoverageInfoHi`) - #127359 (Improve run make llvm ident code) r? `@ghost` `@rustbot` modify labels: rollup
2 parents 1656be9 + f01cc63 commit e2b1f40

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

src/shims/windows/foreign_items.rs

+16
Original file line numberDiff line numberDiff line change
@@ -758,6 +758,22 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
758758
this.write_null(dest)?;
759759
}
760760

761+
"_Unwind_RaiseException" => {
762+
// This is not formally part of POSIX, but it is very wide-spread on POSIX systems.
763+
// It was originally specified as part of the Itanium C++ ABI:
764+
// https://itanium-cxx-abi.github.io/cxx-abi/abi-eh.html#base-throw.
765+
// MinGW implements _Unwind_RaiseException on top of SEH exceptions.
766+
if this.tcx.sess.target.env != "gnu" {
767+
throw_unsup_format!(
768+
"`_Unwind_RaiseException` is not supported on non-MinGW Windows",
769+
);
770+
}
771+
// This function looks and behaves excatly like miri_start_unwind.
772+
let [payload] = this.check_shim(abi, Abi::C { unwind: true }, link_name, args)?;
773+
this.handle_miri_start_unwind(payload)?;
774+
return Ok(EmulateItemResult::NeedsUnwind);
775+
}
776+
761777
_ => return Ok(EmulateItemResult::NotSupported),
762778
}
763779

0 commit comments

Comments
 (0)