58 lines · cpp
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 %s5 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=IGNORELIST11 12int global;13int __attribute__((__section__("my_section"))) section_global;14int __attribute__((no_sanitize("memtag"))) attributed_global;15int __attribute__((disable_sanitizer_instrumentation)) disable_instrumentation_global;16int ignorelisted_global;17extern int external_global;18 19void func() {20 static int static_var = 0;21 const char *literal = "Hello, world!";22 external_global = 1;23}24 25// CHECK: @{{.*}}extra_global{{.*}} ={{.*}} sanitize_memtag26// CHECK: @{{.*}}global{{.*}} ={{.*}} sanitize_memtag27 28// This DOES NOT mean we are instrumenting the section global,29// but we are ignoring it in AsmPrinter rather than in clang.30// CHECK: @{{.*}}section_global{{.*}} ={{.*}} sanitize_memtag31// CHECK: @{{.*}}attributed_global{{.*}} =32// CHECK-NOT: sanitize_memtag33// CHECK: @{{.*}}disable_instrumentation_global{{.*}} =34// CHECK-NOT: sanitize_memtag35// CHECK: @{{.*}}ignorelisted_global{{.*}} =36// CHECK-NOT: sanitize_memtag37 38// CHECK: @{{.*}}static_var{{.*}} ={{.*}} sanitize_memtag39// CHECK: @{{.*}} = {{.*}} c"Hello, world!\00"{{.*}} sanitize_memtag40// CHECK: @{{.*}}external_global{{.*}} ={{.*}} sanitize_memtag41 42// IGNORELIST: @{{.*}}extra_global{{.*}} ={{.*}} sanitize_memtag43 44// IGNORELIST: @{{.*}}global{{.*}} =45// IGNORELIST-NOT: sanitize_memtag46// IGNORELIST: @{{.*}}attributed_global{{.*}} =47// IGNORELIST-NOT: sanitize_memtag48// IGNORELIST: @{{.*}}disable_instrumentation_global{{.*}} =49// IGNORELIST-NOT: sanitize_memtag50// IGNORELIST: @{{.*}}ignorelisted_globa{{.*}} =51// IGNORELIST-NOT: sanitize_memtag52// IGNORELIST: @{{.*}}static_var{{.*}} =53// IGNORELIST-NOT: sanitize_memtag54// IGNORELIST: @{{.*}} = {{.*}} c"Hello, world!\00"{{.*}}55// IGNORELIST-NOT: sanitize_memtag56// IGNORELIST: @{{.*}}external_global{{.*}} =57// IGNORELIST-NOT: sanitize_memtag58