1 // RUN: %clang_cc1 -triple x86_64-linux-unknown -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=NOTIGNORELISTED %s 2 3 // RUN: %clang_cc1 -D ATTR -triple x86_64-linux-unknown -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=IGNORELISTED %s 4 5 // RUN: echo -e "[shadow-call-stack]\nfun:foo" > %t 6 // RUN: %clang_cc1 -fsanitize-ignorelist=%t -triple x86_64-linux-unknown -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=IGNORELISTED %s 7 8 // RUN: %clang_cc1 -triple riscv32-linux-gnu -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=NOTIGNORELISTED %s 9 10 // RUN: %clang_cc1 -D ATTR -triple riscv32-linux-gnu -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=IGNORELISTED %s 11 12 // RUN: echo -e "[shadow-call-stack]\nfun:foo" > %t 13 // RUN: %clang_cc1 -fsanitize-ignorelist=%t -triple riscv32-linux-gnu -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=IGNORELISTED %s 14 15 // RUN: %clang_cc1 -triple riscv64-linux-gnu -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=NOTIGNORELISTED %s 16 17 // RUN: %clang_cc1 -D ATTR -triple riscv64-linux-gnu -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=IGNORELISTED %s 18 19 // RUN: echo -e "[shadow-call-stack]\nfun:foo" > %t 20 // RUN: %clang_cc1 -fsanitize-ignorelist=%t -triple riscv64-linux-gnu -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=IGNORELISTED %s 21 22 #ifdef ATTR 23 __attribute__((no_sanitize("shadow-call-stack"))) 24 #endif 25 int foo(int *a) { return *a; } 26 27 // CHECK: define i32 @foo(i32* %a) 28 29 // IGNORELISTED-NOT: attributes {{.*}}shadowcallstack{{.*}} 30 // NOTIGNORELISTED: attributes {{.*}}shadowcallstack{{.*}} 31