A reproducible lab for generating a RISC-V (RV32IM) program corpus from seven
upstream seed/fuzzer tools. The generated programs (.S / ELF32) feed the
zkvmBlast SPE seed_loader/seed_lifter pipeline.
The tools: aapg, ctg (riscv-ctg), tests (riscv-tests), torture
(riscv-torture), dv (riscv-dv), cascade (an in-repo Cascade-inspired
generator), archtest (riscv-arch-test). See corpus/README.md
for the per-tool program breakdown and caveats.
The corpus is already committed under corpus/, so you only need these to
regenerate it. Install (macOS / Homebrew shown):
brew install bash git python uv make sbt openjdk@21 \
riscv-gnu-toolchain riscv-isa-sim # gcc/objdump + spikeNotes:
uvmanages the per-tool Python 3.11 venvs.- The RISC-V GNU toolchain provides
riscv64-unknown-elf-gcc/objdump;spikeis used to verify generated programs.
setup_and_generate.sh checks all host prerequisites up front and prints
warnings accordingly.
./setup_and_generate.shThis installs each tool from its pinned commit, generates all seven corpora, and verifies each tool met its expected program count (356 programs total).
./setup_and_generate.sh aapg ctgValid names: aapg ctg tests torture dv cascade archtest.
Skip the install layer and re-run the generators directly:
bash corpus/scripts/generate_corpus.sh # all tools
bash corpus/scripts/generate_corpus.sh aapg # one toolEach gen_<tool>.sh is self-contained (activates its own <tool>/.venv / repo),
a failure in one tool does not abort the others.
setup_and_generate.sh installation script
corpus/
README.md per-tool program breakdown, counts, and caveats
scripts/
generate_corpus.sh generation script
gen_<tool>.sh seven per-tool generators
torture-rv32im.patch patches riscv-torture from RV64 → RV32IM
rv32im_babybear.cgf field-prime coverpoints for the ctg BabyBear seeds
<tool>/ generated programs (.S / ELF32), committed
<tool>/ upstream clones + venvs (gitignored, not vendored)