[Sanitizer][Ignorelist] Expanding =sanitize to mainfile. (#142472)
See https://github.com/llvm/llvm-project/issues/139128 If multiple entries match the source, than the latest entry takes the precedence.
This commit is contained in:
@@ -64,7 +64,7 @@ bool NoSanitizeList::containsFile(SanitizerMask Mask, StringRef FileName,
|
||||
|
||||
bool NoSanitizeList::containsMainFile(SanitizerMask Mask, StringRef FileName,
|
||||
StringRef Category) const {
|
||||
return SSCL->inSection(Mask, "mainfile", FileName, Category);
|
||||
return containsPrefix(Mask, "mainfile", FileName, Category);
|
||||
}
|
||||
|
||||
bool NoSanitizeList::containsLocation(SanitizerMask Mask, SourceLocation Loc,
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
/// Test mainfile in a sanitizer special case list.
|
||||
// RUN: rm -rf %t && split-file %s %t
|
||||
// RUN: %clang_cc1 -emit-llvm -triple x86_64 -fsanitize=address,alignment %t/a.c -o - | FileCheck %s --check-prefixes=CHECK,DEFAULT
|
||||
// RUN: %clang_cc1 -emit-llvm -triple x86_64 -fsanitize=address,alignment %t/a.c -o - | FileCheck %s --check-prefixes=CHECK,SANITIZE
|
||||
// RUN: %clang_cc1 -emit-llvm -triple x86_64 -fsanitize=address,alignment -fsanitize-ignorelist=%t/a.list %t/a.c -o - | FileCheck %s --check-prefixes=CHECK,IGNORE
|
||||
// RUN: %clang_cc1 -emit-llvm -triple x86_64 -fsanitize=address,alignment -fsanitize-ignorelist=%t/b.list %t/a.c -o - | FileCheck %s --check-prefixes=CHECK,IGNORE
|
||||
// RUN: %clang_cc1 -emit-llvm -triple x86_64 -fsanitize=address,alignment -fsanitize-ignorelist=%t/c.list %t/a.c -o - | FileCheck %s --check-prefixes=CHECK,SANITIZE
|
||||
// RUN: %clang_cc1 -emit-llvm -triple x86_64 -fsanitize=address,alignment -fsanitize-ignorelist=%t/d.list %t/a.c -o - | FileCheck %s --check-prefixes=CHECK,IGNORE
|
||||
|
||||
//--- a.list
|
||||
mainfile:*a.c
|
||||
@@ -14,6 +16,15 @@ mainfile:*a.c
|
||||
[alignment]
|
||||
mainfile:*.c
|
||||
|
||||
//--- c.list
|
||||
mainfile:*a.c
|
||||
mainfile:*a.c=sanitize
|
||||
|
||||
//--- d.list
|
||||
mainfile:*a.c
|
||||
mainfile:*a.c=sanitize
|
||||
mainfile:*a.c
|
||||
|
||||
//--- a.h
|
||||
int global_h;
|
||||
|
||||
@@ -30,12 +41,12 @@ int foo(void *x) {
|
||||
return load(x);
|
||||
}
|
||||
|
||||
// DEFAULT: @___asan_gen_{{.*}} = {{.*}} c"global_h\00"
|
||||
// DEFAULT: @___asan_gen_{{.*}} = {{.*}} c"global_c\00"
|
||||
// SANITIZE: @___asan_gen_{{.*}} = {{.*}} c"global_h\00"
|
||||
// SANITIZE: @___asan_gen_{{.*}} = {{.*}} c"global_c\00"
|
||||
// IGNORE-NOT: @___asan_gen_
|
||||
|
||||
// CHECK-LABEL: define {{.*}}@load(
|
||||
// DEFAULT: call void @__ubsan_handle_type_mismatch_v1_abort(
|
||||
// DEFAULT: call void @__asan_report_load4(
|
||||
// SANITIZE: call void @__ubsan_handle_type_mismatch_v1_abort(
|
||||
// SANITIZE: call void @__asan_report_load4(
|
||||
// IGNORE-NOT: call void @__ubsan_handle_type_mismatch_v1_abort(
|
||||
// IGNORE-NOT: call void @__asan_report_load4(
|
||||
|
||||
Reference in New Issue
Block a user