Auto merge of #76570 - cratelyn:implement-rfc-2945-c-unwind-abi, r=Amanieu
Implement RFC 2945: "C-unwind" ABI ## Implement RFC 2945: "C-unwind" ABI This branch implements [RFC 2945]. The tracking issue for this RFC is #74990. The feature gate for the issue is `#![feature(c_unwind)]`. This RFC was created as part of the ffi-unwind project group tracked at rust-lang/lang-team#19. ### Changes Further details will be provided in commit messages, but a high-level overview of the changes follows: * A boolean `unwind` payload is added to the `C`, `System`, `Stdcall`, and `Thiscall` variants, marking whether unwinding across FFI boundaries is acceptable. The cases where each of these variants' `unwind` member is true correspond with the `C-unwind`, `system-unwind`, `stdcall-unwind`, and `thiscall-unwind` ABI strings introduced in RFC 2945 [3]. * This commit adds a `c_unwind` feature gate for the new ABI strings. Tests for this feature gate are included in `src/test/ui/c-unwind/`, which ensure that this feature gate works correctly for each of the new ABIs. A new language features entry in the unstable book is added as well. * We adjust the `rustc_middle::ty::layout::fn_can_unwind` function, used to compute whether or not a `FnAbi` object represents a function that should be able to unwind when `panic=unwind` is in use. * Changes are also made to `rustc_mir_build::build::should_abort_on_panic` so that the function ABI is used to determind whether it should abort, assuming that the `panic=unwind` strategy is being used, and no explicit unwind attribute was provided. [RFC 2945]: https://github.com/rust-lang/rfcs/blob/master/text/2945-c-unwind-abi.md
This commit is contained in:
commit
17a07d71bf
43 changed files with 661 additions and 70 deletions
15
src/doc/unstable-book/src/language-features/c-unwind.md
Normal file
15
src/doc/unstable-book/src/language-features/c-unwind.md
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
# `c_unwind`
|
||||
|
||||
The tracking issue for this feature is: [#74990]
|
||||
|
||||
[#74990]: https://github.com/rust-lang/rust/issues/74990
|
||||
|
||||
------------------------
|
||||
|
||||
Introduces four new ABI strings: "C-unwind", "stdcall-unwind",
|
||||
"thiscall-unwind", and "system-unwind". These enable unwinding from other
|
||||
languages (such as C++) into Rust frames and from Rust into other languages.
|
||||
|
||||
See [RFC 2945] for more information.
|
||||
|
||||
[RFC 2945]: https://github.com/rust-lang/rfcs/blob/master/text/2945-c-unwind-abi.md
|
||||
Loading…
Add table
Add a link
Reference in a new issue