[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:
Qinkun Bao
2025-06-02 17:48:59 -04:00
committed by GitHub
parent 43c2234249
commit 43bb68b455
2 changed files with 17 additions and 6 deletions

View File

@@ -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,

View File

@@ -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(