| // RUN: %clang_cc1 -include %S/Inputs/sanitizer-extra-source.cpp \ |
| // RUN: -fsanitize-ignorelist=%S/Inputs/sanitizer-ignorelist-global.txt \ |
| // RUN: -fsanitize=memtag-globals -emit-llvm -o - %s | FileCheck %s |
| |
| // RUN: %clang_cc1 -include %S/Inputs/sanitizer-extra-source.cpp \ |
| // RUN: -fsanitize-ignorelist=%S/Inputs/sanitizer-ignorelist-src.txt \ |
| // RUN: -fsanitize=memtag-globals -emit-llvm -o - %s | \ |
| // RUN: FileCheck %s --check-prefix=IGNORELIST |
| |
| int global; |
| int __attribute__((no_sanitize("memtag"))) attributed_global; |
| int __attribute__((disable_sanitizer_instrumentation)) disable_instrumentation_global; |
| int ignorelisted_global; |
| extern int external_global; |
| |
| void func() { |
| static int static_var = 0; |
| const char *literal = "Hello, world!"; |
| external_global = 1; |
| } |
| |
| // CHECK: @{{.*}}extra_global{{.*}} ={{.*}} sanitize_memtag |
| // CHECK: @{{.*}}global{{.*}} ={{.*}} sanitize_memtag |
| |
| // CHECK: @{{.*}}attributed_global{{.*}} = |
| // CHECK-NOT: sanitize_memtag |
| // CHECK: @{{.*}}disable_instrumentation_global{{.*}} = |
| // CHECK-NOT: sanitize_memtag |
| // CHECK: @{{.*}}ignorelisted_global{{.*}} = |
| // CHECK-NOT: sanitize_memtag |
| |
| // CHECK: @{{.*}}static_var{{.*}} ={{.*}} sanitize_memtag |
| // CHECK: @{{.*}} = {{.*}} c"Hello, world!\00"{{.*}} sanitize_memtag |
| // CHECK: @{{.*}}external_global{{.*}} ={{.*}} sanitize_memtag |
| |
| // IGNORELIST: @{{.*}}extra_global{{.*}} ={{.*}} sanitize_memtag |
| |
| // IGNORELIST: @{{.*}}global{{.*}} = |
| // IGNORELIST-NOT: sanitize_memtag |
| // IGNORELIST: @{{.*}}attributed_global{{.*}} = |
| // IGNORELIST-NOT: sanitize_memtag |
| // IGNORELIST: @{{.*}}disable_instrumentation_global{{.*}} = |
| // IGNORELIST-NOT: sanitize_memtag |
| // IGNORELIST: @{{.*}}ignorelisted_globa{{.*}} = |
| // IGNORELIST-NOT: sanitize_memtag |
| // IGNORELIST: @{{.*}}static_var{{.*}} = |
| // IGNORELIST-NOT: sanitize_memtag |
| // IGNORELIST: @{{.*}} = {{.*}} c"Hello, world!\00"{{.*}} |
| // IGNORELIST-NOT: sanitize_memtag |
| // IGNORELIST: @{{.*}}external_global{{.*}} = |
| // IGNORELIST-NOT: sanitize_memtag |