[libFuzzer] Experimental data flow tracer for fuzz targets.
authorKostya Serebryany <kcc@google.com>
Thu, 10 May 2018 19:59:01 +0000 (19:59 +0000)
committerKostya Serebryany <kcc@google.com>
Thu, 10 May 2018 19:59:01 +0000 (19:59 +0000)
commitf489e2bfef7fca1959ad7e5cb223edc13cc1bc18
treec157ff8803119ede3ad8e83a08700fdf9b9e8a0c
parent85ba3321c6253846dd597c8d8291c999f969ff45
[libFuzzer] Experimental data flow tracer for fuzz targets.

Summary:
Experimental data flow tracer for fuzz targets.
Allows to tell which bytes of the input affect which functions of the fuzz target.

We previously attempted to use DFSan directly in the libFuzzer process,
and that didn't work nicely.
Now we will try to collect the data flow information for the seed corpus
in a separate process (using this tracer), and then use it in the regular libFuzzer runs.

Reviewers: morehouse, pcc, Dor1s

Reviewed By: morehouse, Dor1s

Subscribers: delcypher, #sanitizers, llvm-commits

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

llvm-svn: 332029
compiler-rt/lib/fuzzer/dataflow/DataFlow.cpp [new file with mode: 0644]
compiler-rt/test/fuzzer/ThreeFunctionsTest.cpp [new file with mode: 0644]
compiler-rt/test/fuzzer/dataflow.test [new file with mode: 0644]