Update libFuzzer documentation for -fsanitize=fuzzer-no-link flag

Differential Revision: https://reviews.llvm.org/D36602

llvm-svn: 310734
This commit is contained in:
George Karpenkov 2017-08-11 17:23:45 +00:00
parent 33613f63f6
commit 73b7e78350
1 changed files with 13 additions and 1 deletions

View File

@ -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: