Fuzz using precompiled modules on CI (#3788)

In working on #3787 I see now that our coverage of loading precompiled
files specifically is somewhat lacking, so this adds a config option to
the fuzzers where, if enabled, will round-trip all compiled modules
through the filesystem to test out the mmapped-file case.
This commit is contained in:
Alex Crichton
2022-02-10 11:55:18 -06:00
committed by GitHub
parent f2bf254a79
commit 027dea549a
4 changed files with 44 additions and 10 deletions

View File

@@ -143,7 +143,7 @@ pub fn instantiate(wasm: &[u8], known_valid: bool, config: &generators::Config,
}
log_wasm(wasm);
let module = match Module::new(store.engine(), wasm) {
let module = match config.compile(store.engine(), wasm) {
Ok(module) => module,
Err(_) if !known_valid => return,
Err(e) => panic!("failed to compile module: {:?}", e),
@@ -222,7 +222,7 @@ pub fn differential_execution(
log::debug!("fuzz config: {:?}", fuzz_config);
let mut store = fuzz_config.to_store();
let module = Module::new(store.engine(), &wasm).unwrap();
let module = fuzz_config.compile(store.engine(), &wasm).unwrap();
// TODO: we should implement tracing versions of these dummy imports
// that record a trace of the order that imported functions were called
@@ -432,7 +432,7 @@ pub fn table_ops(mut fuzz_config: generators::Config, ops: generators::table_ops
let wasm = ops.to_wasm_binary();
log_wasm(&wasm);
let module = match Module::new(store.engine(), &wasm) {
let module = match fuzz_config.compile(store.engine(), &wasm) {
Ok(m) => m,
Err(_) => return,
};
@@ -736,7 +736,9 @@ fn differential_store(
fuzz_config: &generators::Config,
) -> (Module, Store<StoreLimits>) {
let store = fuzz_config.to_store();
let module = Module::new(store.engine(), &wasm).expect("Wasmtime can compile module");
let module = fuzz_config
.compile(store.engine(), wasm)
.expect("Wasmtime can compile module");
(module, store)
}