Index: llvm/trunk/docs/LibFuzzer.rst =================================================================== --- llvm/trunk/docs/LibFuzzer.rst +++ llvm/trunk/docs/LibFuzzer.rst @@ -90,12 +90,24 @@ Fuzzer Usage ------------ -Very recent versions of Clang (> April 20 2017) include libFuzzer, +Very recent versions of Clang (after April 20 2017) include libFuzzer, and no installation is necessary. In order to fuzz your binary, use the `-fsanitize=fuzzer` flag during the compilation:: clang -fsanitize=fuzzer,address mytarget.c +This will perform the necessary instrumentation, as well as linking in libFuzzer +library. +Note that linking in libFuzzer defines the ``main`` symbol. +If modifying ``CFLAGS`` of a large project, which also compiles executables +requiring their own ``main`` symbol, it may be desirable to request just the +instrumentation without linking:: + + clang -fsanitize=fuzzer-no-link mytarget.c + +Then libFuzzer can be linked to the desired driver by passing in +``-fsanitize=fuzzer`` during the linking stage. + Otherwise, build the libFuzzer library as a static archive, without any sanitizer options. Note that the libFuzzer library contains the ``main()`` function: