50 lines · cpp
1// RUN: %clangxx_msan -O0 -g %s -o %t && %run %t >%t.out 2>&12// RUN: FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-NO-ORIGINS < %t.out3 4// RUN: %clangxx_msan -fsanitize-memory-track-origins -O0 -g %s -o %t && %run %t >%t.out 2>&15// RUN: FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-ORIGINS < %t.out6 7// RUN: %clangxx_msan -fsanitize-memory-track-origins=2 -O0 -g %s -o %t && %run %t >%t.out 2>&18// RUN: FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-ORIGINS < %t.out9 10#include <sanitizer/msan_interface.h>11 12int main(void) {13 char *p = new char[16];14 __msan_print_shadow(p, 1);15 __msan_print_shadow(p+1, 1);16 __msan_print_shadow(p+3, 1);17 __msan_print_shadow(p+15, 1);18 __msan_print_shadow(p, 0);19 delete[] p;20 int x = 0;21 __msan_print_shadow(&x, 3);22 return 0;23}24 25// CHECK: Shadow map [0x{{.*}}, 0x{{.*}}) of [0x{{.*}}, 0x{{.*}}), 1 bytes:26// CHECK-NO-ORIGINS: 0x{{.*}}: ff...... ........ ........ ........27// CHECK-ORIGINS: 0x{{.*}}: ff...... ........ ........ ........ |A . . .|28// CHECK-ORIGINS: Origin A (origin_id {{.*}}):29 30// CHECK: Shadow map [0x{{.*}}, 0x{{.*}}) of [0x{{.*}}, 0x{{.*}}), 1 bytes:31// CHECK-NO-ORIGINS: 0x{{.*}}: ..ff.... ........ ........ ........32// CHECK-ORIGINS: 0x{{.*}}: ..ff.... ........ ........ ........ |A . . .|33// CHECK-ORIGINS: Origin A (origin_id {{.*}}):34 35// CHECK: Shadow map [0x{{.*}}, 0x{{.*}}) of [0x{{.*}}, 0x{{.*}}), 1 bytes:36// CHECK-NO-ORIGINS: 0x{{.*}}: ......ff ........ ........ ........37// CHECK-ORIGINS: 0x{{.*}}: ......ff ........ ........ ........ |A . . .|38// CHECK-ORIGINS: Origin A (origin_id {{.*}}):39 40// CHECK: Shadow map [0x{{.*}}, 0x{{.*}}) of [0x{{.*}}, 0x{{.*}}), 1 bytes:41// CHECK-NO-ORIGINS: 0x{{.*}}: ......ff ........ ........ ........42// CHECK-ORIGINS: 0x{{.*}}: ......ff ........ ........ ........ |A . . .|43// CHECK-ORIGINS: Origin A (origin_id {{.*}}):44 45// CHECK: Shadow map [0x{{.*}}, 0x{{.*}}) of [0x{{.*}}, 0x{{.*}}), 0 bytes:46 47// CHECK: Shadow map [0x{{.*}}, 0x{{.*}}) of [0x{{.*}}, 0x{{.*}}), 3 bytes:48// CHECK-NO-ORIGINS: 0x{{.*}}: 000000.. ........ ........ ........49// CHECK-ORIGINS: 0x{{.*}}: 000000.. ........ ........ ........ |. . . .|50