1// Test various levels of coverage 2// 3// RUN: %clangxx_asan -O1 -fsanitize-coverage=1 %s -o %t 4// RUN: ASAN_OPTIONS=coverage=1:coverage_bitset=1:verbosity=1 %run %t 2>&1 | FileCheck %s --check-prefix=CHECK1 5// RUN: %clangxx_asan -O1 -fsanitize-coverage=2 %s -o %t 6// RUN: ASAN_OPTIONS=coverage=1:coverage_bitset=1:verbosity=1 %run %t 2>&1 | FileCheck %s --check-prefix=CHECK2 7// RUN: %clangxx_asan -O1 -fsanitize-coverage=3 %s -o %t 8// RUN: ASAN_OPTIONS=coverage=1:coverage_bitset=1:verbosity=1 %run %t 2>&1 | FileCheck %s --check-prefix=CHECK3 9// RUN: %clangxx_asan -O1 -fsanitize-coverage=3 -mllvm -sanitizer-coverage-block-threshold=0 %s -o %t 10// RUN: ASAN_OPTIONS=coverage=1:coverage_bitset=1:verbosity=1 %run %t 2>&1 | FileCheck %s --check-prefix=CHECK3 11// RUN: %clangxx_asan -O1 -fsanitize-coverage=3 -mllvm -sanitizer-coverage-8bit-counters=1 %s -o %t 12// RUN: ASAN_OPTIONS=coverage=1:coverage_counters=1:verbosity=1 %run %t 2>&1 | FileCheck %s --check-prefix=CHECK_COUNTERS 13 14// RUN: ASAN_OPTIONS=coverage=1:coverage_bitset=0:verbosity=1 %run %t 2>&1 | FileCheck %s --check-prefix=CHECK3_NOBITSET 15// RUN: ASAN_OPTIONS=coverage=1:verbosity=1 %run %t 2>&1 | FileCheck %s --check-prefix=CHECK3_NOBITSET 16// RUN: ASAN_OPTIONS=coverage=1:coverage_pcs=0:verbosity=1 %run %t 2>&1 | FileCheck %s --check-prefix=CHECK3_NOPCS 17// 18// REQUIRES: asan-64-bits 19 20volatile int sink; 21int main(int argc, char **argv) { 22 if (argc == 0) 23 sink = 0; 24} 25 26// CHECK1: CovDump: bitset of 1 bits written for '{{.*}}', 1 bits are set 27// CHECK1: 1 PCs written 28// CHECK2: CovDump: bitset of 3 bits written for '{{.*}}', 2 bits are set 29// CHECK2: 2 PCs written 30// CHECK3: CovDump: bitset of 4 bits written for '{{.*}}', 3 bits are set 31// CHECK3: 3 PCs written 32// CHECK3_NOBITSET-NOT: bitset of 33// CHECK3_NOPCS-NOT: PCs written 34// CHECK_COUNTERS: CovDump: 4 counters written for 35