diff options
author | Kostya Serebryany <kcc@google.com> | 2019-05-14 21:47:35 +0000 |
---|---|---|
committer | Kostya Serebryany <kcc@google.com> | 2019-05-14 21:47:35 +0000 |
commit | 27d22b6b7a6ed030d38e6149e2542add6b83c172 (patch) | |
tree | 166f3b715d6d03675a0a585896206813a28f2ceb /compiler-rt/test/fuzzer/dataflow.test | |
parent | 025df3b8270083666c5e091810216d1bc9e7fe6e (diff) | |
download | bcm5719-llvm-27d22b6b7a6ed030d38e6149e2542add6b83c172.tar.gz bcm5719-llvm-27d22b6b7a6ed030d38e6149e2542add6b83c172.zip |
[libFuzzer] reimplement DFT's collect_data_flow inside libFuzzer so that we don't need external python scripts
llvm-svn: 360712
Diffstat (limited to 'compiler-rt/test/fuzzer/dataflow.test')
-rw-r--r-- | compiler-rt/test/fuzzer/dataflow.test | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/compiler-rt/test/fuzzer/dataflow.test b/compiler-rt/test/fuzzer/dataflow.test index 45e683a7864..5f728a8fbe1 100644 --- a/compiler-rt/test/fuzzer/dataflow.test +++ b/compiler-rt/test/fuzzer/dataflow.test @@ -74,6 +74,11 @@ RUN:%libfuzzer_src/scripts/merge_data_flow.py %t-merge-* | sort | FileCheck %s # Test collect_data_flow RUN: %libfuzzer_src/scripts/collect_data_flow.py %t-ThreeFunctionsTestDF %t/IN/FUZZMU | sort | FileCheck %s --check-prefix=IN_FUZZMU +# Test libFuzzer's built in DFT collection. +RUN: rm -rf %t-DFT +RUN: %t-ThreeFunctionsTest -collect_data_flow=%t-ThreeFunctionsTestDF -data_flow_trace=%t-DFT %t/IN/FUZZMU +RUN: cat %t-DFT/* | sort | FileCheck %s --check-prefix=IN_FUZZMU + IN_FUZZMU: F0 1111001 IN_FUZZMU: F1 0000100 IN_FUZZMU: F2 0000011 @@ -88,10 +93,19 @@ RUN: %t-ExplodeDFSanLabelsTestDF 4 6 %t/IN/1234567890123456 # Or we can use collect_data_flow RUN: %libfuzzer_src/scripts/collect_data_flow.py %t-ExplodeDFSanLabelsTestDF %t/IN/1234567890123456 +# Test libFuzzer's builtin collect_data_flow. +RUN: %t-ThreeFunctionsTest -collect_data_flow=%t-ThreeFunctionsTestDF -data_flow_trace=%t-DFT %t/IN/1234567890123456 + # Test that we can run collect_data_flow on the entire corpus dir RUN: rm -rf %t/OUT RUN: %libfuzzer_src/scripts/collect_data_flow.py %t-ThreeFunctionsTestDF %t/IN %t/OUT RUN: %t-ThreeFunctionsTest -data_flow_trace=%t/OUT -runs=0 -focus_function=Func2 2>&1 | FileCheck %s --check-prefix=USE_DATA_FLOW_TRACE + +RUN: rm -rf %t/OUT +RUN: %t-ThreeFunctionsTest -collect_data_flow=%t-ThreeFunctionsTestDF -data_flow_trace=%t/OUT %t/IN +RUN: %t-ThreeFunctionsTest -data_flow_trace=%t/OUT -runs=0 -focus_function=Func2 2>&1 | FileCheck %s --check-prefix=USE_DATA_FLOW_TRACE + + USE_DATA_FLOW_TRACE: INFO: DataFlowTrace: reading from {{.*}}/OUT USE_DATA_FLOW_TRACE-DAG: ca8eefe2fd5d6b32028f355fafa3e739a6bf5edc => |000001| USE_DATA_FLOW_TRACE-DAG: d28cb407e8e1a702c72d25473f0553d3ec172262 => |0000011| @@ -99,12 +113,14 @@ USE_DATA_FLOW_TRACE: INFO: DataFlowTrace: 6 trace files, 3 functions, 2 traces w USE_DATA_FLOW_TRACE: INFO: Focus function is set to 'Func2' # Test that we can run collect_data_flow on a long input (>2**16 bytes) -RUN: rm -rf %t/OUT RUN: printf "%0.sA" {1..150001} > %t/IN/very_long_input +RUN: rm -rf %t/OUT RUN: %libfuzzer_src/scripts/collect_data_flow.py %t-ThreeFunctionsTestDF %t/IN/very_long_input %t/OUT | FileCheck %s --check-prefix=COLLECT_TRACE_FOR_LONG_INPUT +RUN: rm -rf %t/OUT +RUN: %t-ThreeFunctionsTest -collect_data_flow=%t-ThreeFunctionsTestDF -data_flow_trace=%t/OUT %t/IN/very_long_input 2>&1 | FileCheck %s --check-prefix=COLLECT_TRACE_FOR_LONG_INPUT RUN: rm %t/IN/very_long_input -COLLECT_TRACE_FOR_LONG_INPUT: ******* Trying:{{[ ]+}}[0, 150001] -COLLECT_TRACE_FOR_LONG_INPUT: ******* Trying:{{[ ]+}}[75000, 150001] -COLLECT_TRACE_FOR_LONG_INPUT: ******* Trying:{{[ ]+}}[112500, 150001] -COLLECT_TRACE_FOR_LONG_INPUT: ******* Success:{{[ ]+}}[{{[0123456789]+}}, 150001] -COLLECT_TRACE_FOR_LONG_INPUT: ******* Success:{{[ ]+}}[0, {{[0123456789]+}}] +COLLECT_TRACE_FOR_LONG_INPUT: ******* Trying:{{[ ]+}}[0, 150001 +COLLECT_TRACE_FOR_LONG_INPUT-DAG: ******* Trying:{{[ ]+}}[75000, 150001 +COLLECT_TRACE_FOR_LONG_INPUT-DAG: ******* Trying:{{[ ]+}}[112500, 150001 +COLLECT_TRACE_FOR_LONG_INPUT-DAG: ******* Success:{{[ ]+}}[{{[0123456789]+}}, 150001 +COLLECT_TRACE_FOR_LONG_INPUT-DAG: ******* Success:{{[ ]+}}[0, {{[0123456789]+}} |