From: George Karpenkov Date: Fri, 11 Aug 2017 17:23:45 +0000 (+0000) Subject: Update libFuzzer documentation for -fsanitize=fuzzer-no-link flag X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=41ae6058c043fe1e3d777d4e88a218c8041891ae;p=llvm Update libFuzzer documentation for -fsanitize=fuzzer-no-link flag Differential Revision: https://reviews.llvm.org/D36602 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310734 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/docs/LibFuzzer.rst b/docs/LibFuzzer.rst index e22ed388e40..d9c7966a721 100644 --- a/docs/LibFuzzer.rst +++ b/docs/LibFuzzer.rst @@ -90,12 +90,24 @@ Some important things to remember about fuzz targets: 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: