Files
clang-p2996/compiler-rt/test/fuzzer/focus-function.test
Max Moroz ad7b908b4e [libFuzzer] Make dataflow and focus functions more user friendly.
Summary:
- Fail loudly if SetFocusFunction failed when it should not. For more info see
  - https://github.com/google/oss-fuzz/issues/3311
  - https://github.com/google/sanitizers/issues/1190
- Fail loudly if CollectDataFlow is called without seed corpus.

Reviewers: kcc, metzman

Subscribers: #sanitizers, llvm-commits

Tags: #sanitizers, #llvm

Differential Revision: https://reviews.llvm.org/D73813
2020-02-03 08:36:03 -08:00

31 lines
1.2 KiB
Plaintext

# Tests -focus_function
#
# TODO: don't require linux.
# REQUIRES: linux
UNSUPPORTED: aarch64
RUN: %cpp_compiler %S/OnlySomeBytesTest.cpp -o %t-exe
RUN: %t-exe -runs=100 2>&1 | FileCheck %s --check-prefix=FOCUS_NONE
FOCUS_NONE-NOT: INFO: Focus function is set to
FOCUS_NONE-NOT: INFO: {{.*}} inputs touch the focus function
RUN: not %t-exe -runs=100 -focus_function=WRONG 2>&1 | FileCheck %s --check-prefix=FOCUS_WRONG
FOCUS_WRONG-NOT: INFO: Focus function is set to
FOCUS_WRONG: ERROR: Failed to set focus function
RUN: %t-exe -runs=100 -focus_function=f0 2>&1 | FileCheck %s --check-prefix=FOCUS_F0
FOCUS_F0: INFO: Focus function is set to 'f0'
FOCUS_F0: INFO: 0/1 inputs touch the focus function
RUN: rm -rf %t-corpus
RUN: mkdir %t-corpus
# ABC triggers the focus function, others don't.
RUN: echo ABC$(for((i=0;i<2048;i++)); do echo -n x; done) > %t-corpus/ABC
RUN: echo AXY$(for((i=0;i<2048;i++)); do echo -n x; done) > %t-corpus/AXY
RUN: echo ABX$(for((i=0;i<2048;i++)); do echo -n x; done) > %t-corpus/ABX
RUN: %t-exe -runs=10000 -focus_function=f0 %t-corpus 2>&1 | FileCheck %s --check-prefix=CORPUS_1_3
CORPUS_1_3: INFO: 1/3 inputs touch the focus function
CORPUS_1_3: DONE {{.*}} focus: