1 // RUN: %clang_cc1 -triple aarch64-linux-android34 \ 2 // RUN: -include %S/Inputs/sanitizer-extra-source.cpp \ 3 // RUN: -fsanitize-ignorelist=%S/Inputs/sanitizer-ignorelist-global.txt \ 4 // RUN: -fsanitize=memtag-globals -emit-llvm -o - %s | FileCheck %s 5 6 // RUN: %clang_cc1 -triple aarch64-linux-android34 \ 7 // RUN: -include %S/Inputs/sanitizer-extra-source.cpp \ 8 // RUN: -fsanitize-ignorelist=%S/Inputs/sanitizer-ignorelist-src.txt \ 9 // RUN: -fsanitize=memtag-globals -emit-llvm -o - %s | \ 10 // RUN: FileCheck %s --check-prefix=IGNORELIST 11 12 int global; 13 int __attribute__((__section__("my_section"))) section_global; 14 int __attribute__((no_sanitize("memtag"))) attributed_global; 15 int __attribute__((disable_sanitizer_instrumentation)) disable_instrumentation_global; 16 int ignorelisted_global; 17 extern int external_global; 18 19 void func() { 20 static int static_var = 0; 21 const char *literal = "Hello, world!"; 22 external_global = 1; 23 } 24 25 // CHECK: @{{.*}}extra_global{{.*}} ={{.*}} sanitize_memtag 26 // CHECK: @{{.*}}global{{.*}} ={{.*}} sanitize_memtag 27 28 // CHECK: @{{.*}}section_global{{.*}} = 29 // CHECK-NOT: sanitize_memtag 30 // CHECK: @{{.*}}attributed_global{{.*}} = 31 // CHECK-NOT: sanitize_memtag 32 // CHECK: @{{.*}}disable_instrumentation_global{{.*}} = 33 // CHECK-NOT: sanitize_memtag 34 // CHECK: @{{.*}}ignorelisted_global{{.*}} = 35 // CHECK-NOT: sanitize_memtag 36 37 // CHECK: @{{.*}}static_var{{.*}} ={{.*}} sanitize_memtag 38 // CHECK: @{{.*}} = {{.*}} c"Hello, world!\00"{{.*}} 39 // CHECK: @{{.*}}external_global{{.*}} ={{.*}} sanitize_memtag 40 41 // IGNORELIST: @{{.*}}extra_global{{.*}} ={{.*}} sanitize_memtag 42 43 // IGNORELIST: @{{.*}}global{{.*}} = 44 // IGNORELIST-NOT: sanitize_memtag 45 // IGNORELIST: @{{.*}}attributed_global{{.*}} = 46 // IGNORELIST-NOT: sanitize_memtag 47 // IGNORELIST: @{{.*}}disable_instrumentation_global{{.*}} = 48 // IGNORELIST-NOT: sanitize_memtag 49 // IGNORELIST: @{{.*}}ignorelisted_globa{{.*}} = 50 // IGNORELIST-NOT: sanitize_memtag 51 // IGNORELIST: @{{.*}}static_var{{.*}} = 52 // IGNORELIST-NOT: sanitize_memtag 53 // IGNORELIST: @{{.*}} = {{.*}} c"Hello, world!\00"{{.*}} 54 // IGNORELIST-NOT: sanitize_memtag 55 // IGNORELIST: @{{.*}}external_global{{.*}} = 56 // IGNORELIST-NOT: sanitize_memtag 57