oss-fuzz/infra/base-images/base-libfuzzer
Mike Aizatsky 5dfb810427 [infra] setting current directory to src checkout (#87) 2016-11-17 09:49:34 -08:00
..
Dockerfile rolling back trace pc guards 2016-11-14 12:21:02 -08:00
README.md Update README.md 2016-11-11 15:25:37 -08:00
compile [infra] setting current directory to src checkout (#87) 2016-11-17 09:49:34 -08:00
coverage_report folding coverage into base-libfuzzer since target images is where sources are 2016-11-03 20:13:29 -07:00
just_run Update just_run 2016-11-02 17:30:33 -07:00
reproduce [infra] reproduce command (#53) 2016-10-26 08:28:38 -07:00
run setting path in just_run 2016-11-02 16:33:21 -07:00
srcmap [infra] hg sourcemap 2016-10-20 14:31:20 -07:00
test [infra] less output 2016-11-15 12:09:06 -08:00

README.md

base-libfuzzer

Abstract base image for libfuzzer builders.

docker run -ti <image_name> <command> <arguments>

Supported Commands

Command Description
compile (default) build all fuzzers
reproduce <fuzzer_name> <fuzzer_options> build all fuzzers and run specified one with /testcase content.
run <fuzzer_name> <fuzzer_options...> build all fuzzers and run specified one with given options.
test build all fuzzers and run each one for a little while to verify it is working correctly.
/bin/bash drop into shell, execute compile script to start build.

Image Files Layout

Location Description
/out/ build artifacts should be copied here
/src/ place to checkout source files
/work/ used to store intermediate files
/usr/lib/libfuzzer.a libfuzzer static library

Provided Environment Variables

You must use special compiler flags to build your target and fuzzers. These flags are provided in following environment variables:

Env Variable Description
$CC The C compiler binary.
$CXX, $CCC The C++ compiler binary.
$CFLAGS C compiler flags.
$CXXFLAGS C++ compiler flags.
$FUZZER_LDFLAGS Linker flags for fuzzer binaries.

Many well-crafted build scripts will automatically use these variables. If not, passing them manually to a build tool might be required.

Child Image Interface

Sources

Child image has to checkout all sources it needs to compile fuzzers into /src/ directory. When the image is executed, a directory could be mounted on top of these with local checkouts using docker run -v $HOME/my_target:/src/my_target ....

Other Required Files

Following files have to be added by child images:

File Location Description
/src/build.sh build script to build the target and its fuzzers