Rowan Hart 0b25d723c0
Windows Support for LibAFL-LibFuzzer (#3130)
* Add windows build script and additional changes to support windows for libafl-libfuzzer

* Update build scripts and harness wrapping directives

* Resolve issue with corpus edge count calculation

* Add help message and make fork do nothing on Windows

* Format harness_wrap.cpp

* Clippy happiness pass

* Clippy happiness pass

* Clippy happiness pass

* Correct logic

* Correct logic

* Update help output and make runs argument work

* Add test for libafl_libfuzzer on windows

* Add workflow for libafl_libfuzzer test

* Fix copy without dependent task

* Add libafl_libfuzzer_windows to preflight list

* Format harness

* Explicitly ignore windows fuzzer

* Remove windows-specific copy from unix instructions

* Ensure using nightly

* Fix job name

* Update build to use libFuzzer.lib on Windows to keep consistent with Linux

* Remove nightly requirement

---------

Co-authored-by: Rowan Hart <rowanhart@microsoft.com>
2025-05-21 01:35:48 +02:00

30 lines
985 B
Makefile

import "../../../just/libafl.just"
FUZZER_NAME := "libafl_libfuzzer_windows"
FUZZER_NAME_WIN := "libafl_libfuzzer_windows.exe"
set windows-shell := ['cmd.exe', '/c']
set unstable
[windows]
libafl_libfuzzer:
powershell -File ..\..\..\libafl_libfuzzer_runtime\build.ps1
[windows]
harness: libafl_libfuzzer
copy ..\..\..\libafl_libfuzzer_runtime\libFuzzer.lib .
cl /c /O2 /EHsc /std:c++17 /MDd /fsanitize-coverage=inline-8bit-counters /fsanitize-coverage=edge /fsanitize-coverage=trace-cmp /fsanitize-coverage=trace-div /Fo:harness.obj harness.cc
link harness.obj libFuzzer.lib sancov.lib /OUT:libafl_libfuzzer_windows.exe
[windows]
run: harness
if not exist corpus mkdir corpus
{{FUZZER_NAME_WIN}} -use_value_profile=1 corpus
[windows]
[script("cmd.exe", "/c")]
test: harness
if exist corpus rd /s /q corpus
mkdir corpus
{{FUZZER_NAME_WIN}} -use_value_profile=1 -runs=30000 corpus
dir /a-d corpus && (echo Files exist) || (exit /b 1337)