(store: &mut Store<()>, funcs: &[TestFunc], addr: u32, mem: &Memory)
| 72 | } |
| 73 | |
| 74 | fn test_traps(store: &mut Store<()>, funcs: &[TestFunc], addr: u32, mem: &Memory) { |
| 75 | let mem_size = mem.data_size(&store) as u64; |
| 76 | for func in funcs { |
| 77 | let result = func.func.call(&mut *store, addr); |
| 78 | let base = u64::from(func.offset) + u64::from(addr); |
| 79 | let range = base..base + u64::from(func.width); |
| 80 | if range.start >= mem_size || range.end >= mem_size { |
| 81 | assert!( |
| 82 | result.is_err(), |
| 83 | "access at {}+{}+{} succeeded but should have failed when memory has {} bytes", |
| 84 | addr, |
| 85 | func.offset, |
| 86 | func.width, |
| 87 | mem_size |
| 88 | ); |
| 89 | } else { |
| 90 | assert!(result.is_ok()); |
| 91 | } |
| 92 | } |
| 93 | } |
| 94 | |
| 95 | #[wasmtime_test(wasm_features(simd))] |
| 96 | #[cfg_attr(miri, ignore)] |
no test coverage detected