<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/src/test/codegen/catch-unwind.rs, branch 1.66.1</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=1.66.1</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=1.66.1'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2022-03-16T12:12:30+00:00</updated>
<entry>
<title>resolve the conflict in compiler/rustc_session/src/parse.rs</title>
<updated>2022-03-16T12:12:30+00:00</updated>
<author>
<name>codehorseman</name>
<email>cricis@yeah.net</email>
</author>
<published>2022-03-16T12:12:30+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=01dbfb3eb264135c432cef223848416f90dac290'/>
<id>urn:sha1:01dbfb3eb264135c432cef223848416f90dac290</id>
<content type='text'>
Signed-off-by: codehorseman &lt;cricis@yeah.net&gt;
</content>
</entry>
<entry>
<title>rustc: Fill out remaining parts of C-unwind ABI</title>
<updated>2021-08-03T14:06:19+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2021-06-08T18:23:58+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=1c07096a45a15de64216f12ec726333870e372b1'/>
<id>urn:sha1:1c07096a45a15de64216f12ec726333870e372b1</id>
<content type='text'>
This commit intends to fill out some of the remaining pieces of the
C-unwind ABI. This has a number of other changes with it though to move
this design space forward a bit. Notably contained within here is:

* On `panic=unwind`, the `extern "C"` ABI is now considered as "may
  unwind". This fixes a longstanding soundness issue where if you
  `panic!()` in an `extern "C"` function defined in Rust that's actually
  UB because the LLVM representation for the function has the `nounwind`
  attribute, but then you unwind.

* Whether or not a function unwinds now mainly considers the ABI of the
  function instead of first checking the panic strategy. This fixes a
  miscompile of `extern "C-unwind"` with `panic=abort` because that ABI
  can still unwind.

* The aborting stub for non-unwinding ABIs with `panic=unwind` has been
  reimplemented. Previously this was done as a small tweak during MIR
  generation, but this has been moved to a separate and dedicated MIR
  pass. This new pass will, for appropriate functions and function
  calls, insert a `cleanup` landing pad for any function call that may
  unwind within a function that is itself not allowed to unwind. Note
  that this subtly changes some behavior from before where previously on
  an unwind which was caught-to-abort it would run active destructors in
  the function, and now it simply immediately aborts the process.

* The `#[unwind]` attribute has been removed and all users in tests and
  such are now using `C-unwind` and `#![feature(c_unwind)]`.

I think this is largely the last piece of the RFC to implement.
Unfortunately I believe this is still not stabilizable as-is because
activating the feature gate changes the behavior of the existing `extern
"C"` ABI in a way that has no replacement. My thinking for how to enable
this is that we add support for the `C-unwind` ABI on stable Rust first,
and then after it hits stable we change the behavior of the `C` ABI.
That way anyone straddling stable/beta/nightly can switch to `C-unwind`
safely.
</content>
</entry>
<entry>
<title>test: codegen: skip catch-unwind on riscv64</title>
<updated>2020-06-04T11:15:26+00:00</updated>
<author>
<name>Tom Eccles</name>
<email>tom.eccles@codethink.co.uk</email>
</author>
<published>2020-06-04T11:13:36+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=08529aff80e2fb955ff295a1cb600c4401d47d9c'/>
<id>urn:sha1:08529aff80e2fb955ff295a1cb600c4401d47d9c</id>
<content type='text'>
It isn't clear to me if this is a bug or not, hence the FIXME
</content>
</entry>
<entry>
<title>Test catch_unwind vanishing</title>
<updated>2020-03-02T11:43:07+00:00</updated>
<author>
<name>Amanieu d'Antras</name>
<email>amanieu@gmail.com</email>
</author>
<published>2019-12-26T15:37:48+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=919c5fe6b9e052eb243e0e7ceb99d2e6986b4115'/>
<id>urn:sha1:919c5fe6b9e052eb243e0e7ceb99d2e6986b4115</id>
<content type='text'>
We execpt the try intrinsic to be a direct call if in -Cpanic=abort mode, and
that catch_unwind optimizes out if calling a function that does not unwind.
</content>
</entry>
</feed>
