1 // Checks that dfsan works with trace-cmp instrumentation, even if some hooks
2 // are not defined (relies on week hooks implemented in dfsan).
4 // RUN: %clang_dfsan -fsanitize-coverage=trace-pc-guard,pc-table,func,trace-cmp %s -o %t
5 // RUN: %run %t 2>&1 | FileCheck %s
7 // REQUIRES: x86_64-target-arch
13 #include <sanitizer/dfsan_interface.h>
18 // Define just two hooks, and leave others undefined.
19 void __dfsw___sanitizer_cov_trace_const_cmp4(uint8_t a
, uint8_t b
,
20 dfsan_label l1
, dfsan_label l2
) {
21 printf("const_cmp4 %d %d\n", a
, b
);
23 void __dfsw___sanitizer_cov_trace_cmp8(uint8_t a
, uint8_t b
, dfsan_label l1
,
25 printf("cmp8 %d %d\n", a
, b
);
28 int main(int argc
, char **argv
) {
32 if (a4
!= b4
) abort();
33 if (a4
== 42) abort();
34 // CHECK: const_cmp4 42 0
35 if (a8
!= b8
) abort();
37 if (a8
== 66) abort();
39 switch (10 / (a4
+ 2)) {
43 printf("SWITCH OK\n");