Hello! 👋
To get started with Goblin, build using the instructions below and read through the Goblin tutorial.
-
Note: Goblin is supported on Ubuntu and macOS. Other versions of Linux may work but have not been tested. Windows is not supported (but you can try using WSL).
-
OCaml version ≥ 5.1.1
Install Opam and create a switch for version 5.1.1 in the top-level directory:
bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh)" opam init opam switch create 5.1.1 eval $(opam env) -
cvc5 version ≥ 1.3.0 (https://github.com/cvc5/cvc5/releases/tag/cvc5-1.3.0). You must make the cvc5 binary discoverable from
$PATH(update$PATHenvironment variable so thatwhich cvc5returns a valid path to cvc5) -
To download the required OPAM packages, run
opam install menhirLib cmdliner ocamlgraph bitstring yojson lwt batteries ppx_bitstring alcotest lwt_ppx menhir
Run make from the top-level directory
- To execute, run
goblin(after building) - To run tests, run
make test - Use
goblin --helpfor command-line arg documentation - Example invocation:
goblin --file ./test/test_cases/test2
See the files within the doc directory. In particular, we have a Goblin tutorial and an additional file describing Goblin syntax.
Do not hesitate to reach out to me at robert-lorch@uiowa.edu with any feedback, questions, or concerns.
Goblin is a work in progress, so I appreciate bug reports (include the input file and all the command-line options used).
Also, I am happy to assist with any questions regarding how to specify a certain input format in Goblin,
or how to integrate Goblin into your fuzzing workflow.
Details to come :)