diff options
Diffstat (limited to 'llvm/lib/Fuzzer/test')
-rw-r--r-- | llvm/lib/Fuzzer/test/DSO1.cpp | 1 | ||||
-rw-r--r-- | llvm/lib/Fuzzer/test/DSO2.cpp | 1 | ||||
-rw-r--r-- | llvm/lib/Fuzzer/test/DSOTestMain.cpp | 16 | ||||
-rw-r--r-- | llvm/lib/Fuzzer/test/coverage.test | 12 |
4 files changed, 24 insertions, 6 deletions
diff --git a/llvm/lib/Fuzzer/test/DSO1.cpp b/llvm/lib/Fuzzer/test/DSO1.cpp index c362593f779..4a293890f4b 100644 --- a/llvm/lib/Fuzzer/test/DSO1.cpp +++ b/llvm/lib/Fuzzer/test/DSO1.cpp @@ -9,3 +9,4 @@ int DSO1(int a) { return 1; } +void Uncovered1() { } diff --git a/llvm/lib/Fuzzer/test/DSO2.cpp b/llvm/lib/Fuzzer/test/DSO2.cpp index 46c80e4b6fe..04b308d193a 100644 --- a/llvm/lib/Fuzzer/test/DSO2.cpp +++ b/llvm/lib/Fuzzer/test/DSO2.cpp @@ -9,3 +9,4 @@ int DSO2(int a) { return 1; } +void Uncovered2() {} diff --git a/llvm/lib/Fuzzer/test/DSOTestMain.cpp b/llvm/lib/Fuzzer/test/DSOTestMain.cpp index 49cd185e97d..3e225d88612 100644 --- a/llvm/lib/Fuzzer/test/DSOTestMain.cpp +++ b/llvm/lib/Fuzzer/test/DSOTestMain.cpp @@ -11,17 +11,21 @@ extern int DSO1(int a); extern int DSO2(int a); extern int DSOTestExtra(int a); +static volatile int *nil = 0; extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { - if (Size < sizeof(int) * 3) return 0; int x, y, z; - memcpy(&x, Data + 0 * sizeof(int), sizeof(int)); - memcpy(&y, Data + 1 * sizeof(int), sizeof(int)); - memcpy(&z, Data + 2 * sizeof(int), sizeof(int)); - int sum = DSO1(x) + DSO2(y) + DSOTestExtra(z); + if (Size < sizeof(int) * 3) { + x = y = z = 0; + } else { + memcpy(&x, Data + 0 * sizeof(int), sizeof(int)); + memcpy(&y, Data + 1 * sizeof(int), sizeof(int)); + memcpy(&z, Data + 2 * sizeof(int), sizeof(int)); + } + int sum = DSO1(x) + DSO2(y) + (z ? DSOTestExtra(z) : 0); if (sum == 3) { fprintf(stderr, "BINGO %d %d %d\n", x, y, z); - exit(1); + *nil = 0; } return 0; } diff --git a/llvm/lib/Fuzzer/test/coverage.test b/llvm/lib/Fuzzer/test/coverage.test index f6b43048417..b41a262c462 100644 --- a/llvm/lib/Fuzzer/test/coverage.test +++ b/llvm/lib/Fuzzer/test/coverage.test @@ -4,3 +4,15 @@ CHECK-DAG: COVERED: {{.*}}in LLVMFuzzerTestOneInput {{.*}}NullDerefTest.cpp:14 CHECK-DAG: COVERED: {{.*}}in LLVMFuzzerTestOneInput {{.*}}NullDerefTest.cpp:16 CHECK-DAG: COVERED: {{.*}}in LLVMFuzzerTestOneInput {{.*}}NullDerefTest.cpp:19 RUN: not LLVMFuzzer-NullDerefTest-TracePC -print_coverage=1 2>&1 | FileCheck %s + +RUN: LLVMFuzzer-DSOTest -print_coverage=1 -runs=0 2>&1 | FileCheck %s --check-prefix=DSO +DSO: COVERAGE: +DSO-DAG: COVERED:{{.*}}DSO1{{.*}}DSO1.cpp +DSO-DAG: COVERED:{{.*}}DSO2{{.*}}DSO2.cpp +DSO-DAG: COVERED:{{.*}}LLVMFuzzerTestOneInput{{.*}}DSOTestMain +DSO-DAG: UNCOVERED_LINE:{{.*}}DSO1{{.*}}DSO1.cpp +DSO-DAG: UNCOVERED_LINE:{{.*}}DSO2{{.*}}DSO2.cpp +DSO-DAG: UNCOVERED_FUNC: in Uncovered1 +DSO-DAG: UNCOVERED_FUNC: in Uncovered2 +DSO-DAG: UNCOVERED_LINE: in LLVMFuzzerTestOneInput +DSO-DAG: UNCOVERED_FILE:{{.*}}DSOTestExtra.cpp |