]>
git.proxmox.com Git - rustc.git/blob - src/compiler-rt/test/asan/TestCases/coverage-order-pcs.cc
1 // Test coverage_order_pcs=1 flag which orders the PCs by their appearance.
2 // RUN: DIR=%T/coverage-order-pcs
5 // RUN: %clangxx_asan -fsanitize-coverage=func %s -o %t
6 // RUN: %env_asan_opts=coverage_dir=$DIR:coverage=1:coverage_order_pcs=0 %run %t
7 // RUN: mv $DIR/*sancov $DIR/A
9 // RUN: %env_asan_opts=coverage_dir=$DIR:coverage=1:coverage_order_pcs=0 %run %t 1
10 // RUN: mv $DIR/*sancov $DIR/B
12 // RUN: %env_asan_opts=coverage_dir=$DIR:coverage=1:coverage_order_pcs=1 %run %t
13 // RUN: mv $DIR/*sancov $DIR/C
15 // RUN: %env_asan_opts=coverage_dir=$DIR:coverage=1:coverage_order_pcs=1 %run %t 1
16 // RUN: mv $DIR/*sancov $DIR/D
18 // RUN: (%sancov print $DIR/A; %sancov print $DIR/B; %sancov print $DIR/C; %sancov print $DIR/D) | FileCheck %s
21 // Ordering works only in 64-bit mode for now.
22 // REQUIRES: asan-64-bits
23 // UNSUPPORTED: android
26 void foo() { fprintf(stderr
, "FOO\n"); }
27 void bar() { fprintf(stderr
, "BAR\n"); }
29 int main(int argc
, char **argv
) {
40 // CHECK: [[FOO:0x[0-9a-f]*]]
41 // CHECK-NEXT: [[BAR:0x[0-9a-f]*]]
42 // CHECK-NEXT: [[MAIN:0x[0-9a-f]*]]
44 // Run B: still no ordering
45 // CHECK-NEXT: [[FOO]]
46 // CHECK-NEXT: [[BAR]]
47 // CHECK-NEXT: [[MAIN]]
49 // Run C: MAIN, BAR, FOO
50 // CHECK-NEXT: [[MAIN]]
51 // CHECK-NEXT: [[BAR]]
52 // CHECK-NEXT: [[FOO]]
54 // Run D: MAIN, FOO, BAR
55 // CHECK-NEXT: [[MAIN]]
56 // CHECK-NEXT: [[FOO]]
57 // CHECK-NEXT: [[BAR]]