mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-20 03:55:48 -04:00

Summary: This test instruments the following code with coverage, runs the fuzzer once, and asserts that there are uncovered PCs. The ARM64 backend optimizes this code using the `csel` (Conditional select) instruction, which removes all branching from the resulting machine code. The test then fails because we do not have any uncovered PCs. The easiest solution for now is to turn off optimization for the DSOs used in this test. ``` int DSO1(int a) { if (a < 123456) return 0; return 1; } ``` rdar://47646400 Reviewers: kcc Tags: #sanitizers, #llvm Differential Revision: https://reviews.llvm.org/D58087 llvm-svn: 353780
21 lines
1.1 KiB
Plaintext
21 lines
1.1 KiB
Plaintext
# FIXME: Disabled on Windows because -fPIC cannot be used to compile for Windows.
|
|
UNSUPPORTED: windows
|
|
RUN: %cpp_compiler -mllvm -use-unknown-locations=Disable %S/NullDerefTest.cpp -o %t-NullDerefTest
|
|
RUN: %cpp_compiler -mllvm -use-unknown-locations=Disable %S/DSO1.cpp -fPIC %ld_flags_rpath_so1 -O0 -shared -o %dynamiclib1
|
|
RUN: %cpp_compiler -mllvm -use-unknown-locations=Disable %S/DSO2.cpp -fPIC %ld_flags_rpath_so2 -O0 -shared -o %dynamiclib2
|
|
RUN: %cpp_compiler -mllvm -use-unknown-locations=Disable %S/DSOTestMain.cpp %S/DSOTestExtra.cpp %ld_flags_rpath_exe1 %ld_flags_rpath_exe2 -o %t-DSOTest
|
|
|
|
CHECK: COVERAGE:
|
|
CHECK: COVERED_FUNC: {{.*}}LLVMFuzzerTestOneInput {{.*}}NullDerefTest.cpp:14
|
|
RUN: not %run %t-NullDerefTest -print_coverage=1 2>&1 | FileCheck %s
|
|
|
|
RUN: %run %t-DSOTest -print_coverage=1 -runs=0 2>&1 | FileCheck %s --check-prefix=DSO
|
|
DSO: COVERAGE:
|
|
DSO-DAG: COVERED_FUNC:{{.*}}DSO1
|
|
DSO-DAG: COVERED_FUNC:{{.*}}DSO2
|
|
DSO-DAG: COVERED_FUNC:{{.*}}LLVMFuzzerTestOneInput{{.*}}DSOTestMain
|
|
DSO-DAG: UNCOVERED_PC:{{.*}}DSO1
|
|
DSO-DAG: UNCOVERED_PC:{{.*}}DSO2
|
|
DSO-DAG: UNCOVERED_PC:{{.*}}DSOTestMain
|
|
DSO-DAG: UNCOVERED_FUNC:{{.*}}Uncovered1
|