Files
wasmtime/crates/fuzzing/wasm-spec-interpreter
Alex Crichton f0fa01d552 Pin spec interpreter to a specific revision (#3868)
This commit updates the build script which clones the spec interpreter
for fuzzing to specifically pin at a hardcoded revision. This is
intended at improving reproducibility if we hit any issues while fuzzing
to ensure that the same wasmtime revision is always using the same spec
interpreter revision.
2022-03-02 10:54:05 -06:00
..

wasm-spec-interpreter

This project shows how to use ocaml-interop to call into the Wasm spec interpreter. There are several steps to making this work:

  • building the OCaml Wasm spec interpreter as a static library
  • building a Rust-to-OCaml FFI bridge using ocaml-interop and a custom OCaml wrapper
  • linking both things into a Rust crate

Dependencies

This crate only builds in an environment with:

  • make (the Wasm spec interpreter uses a Makefile)
  • ocamlopt, ocamlbuild (available with, e.g., dnf install ocaml)
  • Linux tools (e.g. ar); currently it is easiest to build the static libraries in a single environment but this could be fixed in the future (TODO)

Remember to retrieve the Wasm spec submodule:

git clone ... --recursive

Build

RUSTFLAGS=--cfg=fuzzing cargo build

Use FFI_LIB_DIR=path/to/lib/... to specify a different location for the static library (this is mainly for debugging). If the --cfg=fuzzing configuration is not provided, this crate will build successfully but fail at runtime.

Test

RUSTFLAGS=--cfg=fuzzing cargo test