Report traps in functions invoked from the command line.
This commit is contained in:
@@ -56,7 +56,7 @@ use std::io::stdout;
|
|||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use std::process::exit;
|
use std::process::exit;
|
||||||
use wasmtime_execute::{Code, InstanceWorld, NullResolver};
|
use wasmtime_execute::{ActionOutcome, Code, InstanceWorld, NullResolver};
|
||||||
|
|
||||||
static LOG_FILENAME_PREFIX: &str = "cranelift.dbg.";
|
static LOG_FILENAME_PREFIX: &str = "cranelift.dbg.";
|
||||||
|
|
||||||
@@ -151,7 +151,12 @@ fn handle_module(args: &Args, path: &Path, isa: &TargetIsa) -> Result<(), String
|
|||||||
let mut world = InstanceWorld::new(&mut code, isa, &data, &mut resolver)?;
|
let mut world = InstanceWorld::new(&mut code, isa, &data, &mut resolver)?;
|
||||||
|
|
||||||
if let Some(ref f) = args.flag_function {
|
if let Some(ref f) = args.flag_function {
|
||||||
world.invoke(&mut code, isa, &f, &[])?;
|
match world.invoke(&mut code, isa, &f, &[])? {
|
||||||
|
ActionOutcome::Returned { .. } => {}
|
||||||
|
ActionOutcome::Trapped { message } => {
|
||||||
|
return Err(format!("Trap from within function {}: {}", f, message));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if args.flag_memory {
|
if args.flag_memory {
|
||||||
|
|||||||
Reference in New Issue
Block a user