use wasmtime::*; #[test] #[cfg_attr(miri, ignore)] fn test_tail_call_default() -> Result<()> { for (line, expected, cfg) in [ ( line!(), true, Config::new() .strategy(Strategy::Cranelift) .target("x86_64")?, ), ( line!(), true, Config::new() .strategy(Strategy::Cranelift) .target("aarch64")?, ), ( line!(), true, Config::new() .strategy(Strategy::Cranelift) .target("riscv64")?, ), ( line!(), true, Config::new() .strategy(Strategy::Cranelift) .target("s390x")?, ), ( line!(), false, Config::new().strategy(Strategy::Winch).target("x86_64")?, ), ( line!(), false, Config::new().strategy(Strategy::Winch).target("aarch64")?, ), ( line!(), false, Config::new() .strategy(Strategy::Cranelift) .wasm_tail_call(false) .target("x86_64")?, ), ] { cfg.signals_based_traps(true); let engine = Engine::new(cfg)?; eprintln!("running config on line {line}"); let wat = r#" (module $from_name_section (func (export "run") (return_call 0)) ) "#; let result = engine.precompile_module(wat.as_bytes()).map(|_| ()); eprintln!("got: {result:?}"); assert_eq!(expected, result.is_ok()); } Ok(()) }