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
11 #include <sanitizer/dfsan_interface.h>
16 // Define just two hooks, and leave others undefined.
17 void __dfsw___sanitizer_cov_trace_const_cmp4(uint8_t a
, uint8_t b
,
18 dfsan_label l1
, dfsan_label l2
) {
19 printf("const_cmp4 %d %d\n", a
, b
);
21 void __dfsw___sanitizer_cov_trace_cmp8(uint8_t a
, uint8_t b
, dfsan_label l1
,
23 printf("cmp8 %d %d\n", a
, b
);
26 int main(int argc
, char **argv
) {
30 if (a4
!= b4
) abort();
31 if (a4
== 42) abort();
32 // CHECK: const_cmp4 42 0
33 if (a8
!= b8
) abort();
35 if (a8
== 66) abort();
37 switch (10 / (a4
+ 2)) {
41 printf("SWITCH OK\n");