Port v8 fuzzer to the new framework (#4739)
* Port v8 fuzzer to the new framework This commit aims to improve the support for the new "meta" differential fuzzer added in #4515 by ensuring that all existing differential fuzzing is migrated to this new fuzzer. This PR includes features such as: * The V8 differential execution is migrated to the new framework. * `Config::set_differential_config` no longer force-disables wasm features, instead allowing them to be enabled as per the fuzz input. * `DiffInstance::{hash, hash}` was replaced with `DiffInstance::get_{memory,global}` to allow more fine-grained assertions. * Support for `FuncRef` and `ExternRef` have been added to `DiffValue` and `DiffValueType`. For now though generating an arbitrary `ExternRef` and `FuncRef` simply generates a null value. * Arbitrary `DiffValue::{F32,F64}` values are guaranteed to use canonical NaN representations to fix an issue with v8 where with the v8 engine we can't communicate non-canonical NaN values through JS. * `DiffEngine::evaluate` allows "successful failure" for cases where engines can't support that particular invocation, for example v8 can't support `v128` arguments or return values. * Smoke tests were added for each engine to ensure that a simple wasm module works at PR-time. * Statistics printed from the main fuzzer now include percentage-rates for chosen engines as well as percentage rates for styles-of-module. There's also a few small refactorings here and there but mostly just things I saw along the way. * Update the fuzzing README
This commit is contained in:
@@ -37,10 +37,8 @@ At the time of writing, we have the following fuzz targets:
|
||||
* `differential`: Generate a Wasm module, evaluate each exported function
|
||||
with random inputs, and check that Wasmtime returns the same results as a
|
||||
choice of another engine: the Wasm spec interpreter (see the
|
||||
`wasm-spec-interpreter` crate), the `wasmi` interpreter, or Wasmtime itself
|
||||
run with a different configuration.
|
||||
* `differential_v8`: Generate a Wasm module and check that Wasmtime returns
|
||||
the same results as V8.
|
||||
`wasm-spec-interpreter` crate), the `wasmi` interpreter, V8 (through the `v8`
|
||||
crate), or Wasmtime itself run with a different configuration.
|
||||
* `instantiate`: Generate a Wasm module and Wasmtime configuration and attempt
|
||||
to compile and instantiate with them.
|
||||
* `instantiate-many`: Generate many Wasm modules and attempt to compile and
|
||||
|
||||
Reference in New Issue
Block a user