// Test AllocToken respects ignorelist for functions and files. // // RUN: %clang_cc1 -fsanitize=alloc-token -triple x86_64-linux-gnu -emit-llvm %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-ALLOW // // RUN: echo "fun:excluded_by_all" > %t.func.ignorelist // RUN: %clang_cc1 -fsanitize=alloc-token -fsanitize-ignorelist=%t.func.ignorelist -triple x86_64-linux-gnu -emit-llvm %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-FUN // // RUN: echo "src:%s" | sed -e 's/\\/\\\\/g' > %t.file.ignorelist // RUN: %clang_cc1 -fsanitize=alloc-token -fsanitize-ignorelist=%t.file.ignorelist -triple x86_64-linux-gnu -emit-llvm %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-SRC extern void* malloc(unsigned long size); // CHECK-LABEL: define{{.*}} @excluded_by_all( void* excluded_by_all(unsigned long size) { // CHECK-ALLOW: call ptr @__alloc_token_malloc( // CHECK-FUN: call ptr @malloc( // CHECK-SRC: call ptr @malloc( return malloc(size); } // CHECK-LABEL: define{{.*}} @excluded_by_src( void* excluded_by_src(unsigned long size) { // CHECK-ALLOW: call ptr @__alloc_token_malloc( // CHECK-FUN: call ptr @__alloc_token_malloc( // CHECK-SRC: call ptr @malloc( return malloc(size); }