66 lines · cpp
1// RUN: rm -rf %t.dir && mkdir -p %t.dir && cd %t.dir2// RUN: %clangxx_asan -fsanitize-coverage=func,trace-pc-guard -DSHARED %s -shared -o %dynamiclib -fPIC %ld_flags_rpath_so3// RUN: %clangxx_asan -fsanitize-coverage=func,trace-pc-guard %s %ld_flags_rpath_exe -o %t.dir/coverage-reset4// RUN: %env_asan_opts=coverage=1:verbosity=1 %run %t.dir/coverage-reset 2>&1 | FileCheck %s5//6// UNSUPPORTED: ios7 8#include <stdio.h>9 10#include <sanitizer/coverage_interface.h>11 12#ifdef SHARED13void bar1() { printf("bar1\n"); }14void bar2() { printf("bar2\n"); }15#else16__attribute__((noinline)) void foo1() { printf("foo1\n"); }17__attribute__((noinline)) void foo2() { printf("foo2\n"); }18void bar1();19void bar2();20 21int main(int argc, char **argv) {22 fprintf(stderr, "RESET\n");23 __sanitizer_cov_reset();24 foo1();25 foo2();26 bar1();27 bar2();28 __sanitizer_cov_dump();29// CHECK: RESET30// CHECK-DAG: SanitizerCoverage: ./coverage-reset{{.*}}.sancov: 2 PCs written31// CHECK-DAG: SanitizerCoverage: ./libcoverage-reset.cpp{{.*}}.sancov: 2 PCs written32 33 fprintf(stderr, "RESET\n");34 __sanitizer_cov_reset();35 foo1();36 bar1();37 __sanitizer_cov_dump();38// CHECK: RESET39// CHECK-DAG: SanitizerCoverage: ./coverage-reset{{.*}}.sancov: 1 PCs written40// CHECK-DAG: SanitizerCoverage: ./libcoverage-reset.cpp{{.*}}.sancov: 1 PCs written41 42 fprintf(stderr, "RESET\n");43 __sanitizer_cov_reset();44 foo1();45 foo2();46 __sanitizer_cov_dump();47// CHECK: RESET48// CHECK: SanitizerCoverage: ./coverage-reset{{.*}}.sancov: 2 PCs written49 50 fprintf(stderr, "RESET\n");51 __sanitizer_cov_reset();52 bar1();53 bar2();54 __sanitizer_cov_dump();55// CHECK: RESET56// CHECK: SanitizerCoverage: ./libcoverage-reset.cpp{{.*}}.sancov: 2 PCs written57 58 fprintf(stderr, "RESET\n");59 __sanitizer_cov_reset();60// CHECK: RESET61 62 bar2();63// CHECK: SanitizerCoverage: ./libcoverage-reset.cpp{{.*}}.sancov: 1 PCs written64}65#endif66