]> git.lizzy.rs Git - rust.git/commitdiff
Delegate to the actual panic runtime crate
authorAaron Hill <aa1ronham@gmail.com>
Tue, 19 Nov 2019 15:11:25 +0000 (10:11 -0500)
committerAaron Hill <aa1ronham@gmail.com>
Tue, 19 Nov 2019 15:11:25 +0000 (10:11 -0500)
src/shims/foreign_items.rs
src/shims/panic.rs

index 3a95ffd78e31a76d414321a4d7e59018ffa25ca6..130c5d28fff3a54cfbaffc9ec30f9e0a5bad5f85 100644 (file)
@@ -134,7 +134,8 @@ fn emulate_foreign_item(
             // that is, calls to `extern "Rust" { fn __rust_start_panic(...) }`.
             // We forward this to the underlying *implementation* in "libpanic_unwind".
             "__rust_start_panic" => {
-                let start_panic_instance = this.resolve_path(&["panic_unwind", "__rust_start_panic"])?;
+                let panic_runtime = tcx.crate_name(tcx.injected_panic_runtime().expect("No panic runtime found!"));
+                let start_panic_instance = this.resolve_path(&[&*panic_runtime.as_str(), "__rust_start_panic"])?;
                 return Ok(Some(this.load_mir(start_panic_instance.def, None)?));
             }
             // Similarly, we forward calls to the `panic_impl` foreign item to its implementation.
index 9c5c32491915bfcf50595b35d03ae5e62049cc36..ef9843056a08b56283b767fb82100c512d2067fb 100644 (file)
@@ -47,13 +47,6 @@ fn handle_miri_start_panic(
 
         trace!("miri_start_panic: {:?}", this.frame().span);
 
-        if this.tcx.tcx.sess.panic_strategy() == PanicStrategy::Abort  {
-            // FIXME: Add a better way of indicating 'abnormal' termination,
-            // since this is not really an 'unsupported' behavior
-            throw_unsup_format!("the evaluated program panicked");
-        }
-
-        // Get the raw pointer stored in arg[0] (the panic payload).
         let scalar = this.read_immediate(args[0])?;
         assert!(this.machine.panic_payload.is_none(), "the panic runtime should avoid double-panics");
         this.machine.panic_payload = Some(scalar);