)]}'
{
  "commit": "5e6417b7df8443c8d7d22196b387de5add4399bc",
  "tree": "928e8c949f29c9c5510afe3f2703b1e216ec9e3f",
  "parents": [
    "97a7674c408a39f830f05904fb8a182b3240f340",
    "59653288008cccb16e31d6300ab833e2e5231fc0"
  ],
  "author": {
    "name": "Jacob Pratt",
    "email": "jacob@jhpratt.dev",
    "time": "Thu Aug 27 00:40:21 2026 -0400"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Aug 27 00:40:21 2026 -0400"
  },
  "message": "Rollup merge of #161628 - RalfJung:no-unwind-abi-check, r\u003dsaethlin\n\ninterpret: ensure that calls via no-unwind ABIs do not unwind\n\nAccording to our [ABI docs](https://doc.rust-lang.org/nightly/std/primitive.fn.html#abi-compatibility), programs like this are okay:\n```rust\nextern \"C-unwind\" fn does_not_unwind_but_could() {}\n\nfn main() {\n    let f: extern \"C-unwind\" fn() \u003d does_not_unwind_but_could;\n    let f: extern \"C\" fn() \u003d unsafe { std::mem::transmute(f) };\n    f();\n}\n```\nSo let\u0027s add a test for that.\n\nAnd also, let\u0027s adjust the checks in Miri\u0027s shims accordingly (see `src/tools/miri/src/shims/sig.rs`). We used to reject calls to functions that *might* unwind with a signature that does not allow unwinding, even if no unwinding occurred. I don\u0027t think we have an actual example of a potentially-unwinding shim with an ABI that has a compatible ABI that does not allow unwinding (\"C-unwind\" and \"C\"), so we can\u0027t add a test for this.\n",
  "tree_diff": []
}
