Skip to content

Commit 43bb68b

Browse files
authored
[Sanitizer][Ignorelist] Expanding =sanitize to mainfile. (#142472)
See #139128 If multiple entries match the source, than the latest entry takes the precedence.
1 parent 43c2234 commit 43bb68b

File tree

2 files changed

+17
-6
lines changed

2 files changed

+17
-6
lines changed

clang/lib/Basic/NoSanitizeList.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ bool NoSanitizeList::containsFile(SanitizerMask Mask, StringRef FileName,
6464

6565
bool NoSanitizeList::containsMainFile(SanitizerMask Mask, StringRef FileName,
6666
StringRef Category) const {
67-
return SSCL->inSection(Mask, "mainfile", FileName, Category);
67+
return containsPrefix(Mask, "mainfile", FileName, Category);
6868
}
6969

7070
bool NoSanitizeList::containsLocation(SanitizerMask Mask, SourceLocation Loc,

clang/test/CodeGen/sanitize-ignorelist-mainfile.c

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
/// Test mainfile in a sanitizer special case list.
22
// RUN: rm -rf %t && split-file %s %t
3-
// RUN: %clang_cc1 -emit-llvm -triple x86_64 -fsanitize=address,alignment %t/a.c -o - | FileCheck %s --check-prefixes=CHECK,DEFAULT
3+
// RUN: %clang_cc1 -emit-llvm -triple x86_64 -fsanitize=address,alignment %t/a.c -o - | FileCheck %s --check-prefixes=CHECK,SANITIZE
44
// 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
55
// 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
6+
// 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
7+
// 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
68

79
//--- a.list
810
mainfile:*a.c
@@ -14,6 +16,15 @@ mainfile:*a.c
1416
[alignment]
1517
mainfile:*.c
1618

19+
//--- c.list
20+
mainfile:*a.c
21+
mainfile:*a.c=sanitize
22+
23+
//--- d.list
24+
mainfile:*a.c
25+
mainfile:*a.c=sanitize
26+
mainfile:*a.c
27+
1728
//--- a.h
1829
int global_h;
1930

@@ -30,12 +41,12 @@ int foo(void *x) {
3041
return load(x);
3142
}
3243

33-
// DEFAULT: @___asan_gen_{{.*}} = {{.*}} c"global_h\00"
34-
// DEFAULT: @___asan_gen_{{.*}} = {{.*}} c"global_c\00"
44+
// SANITIZE: @___asan_gen_{{.*}} = {{.*}} c"global_h\00"
45+
// SANITIZE: @___asan_gen_{{.*}} = {{.*}} c"global_c\00"
3546
// IGNORE-NOT: @___asan_gen_
3647

3748
// CHECK-LABEL: define {{.*}}@load(
38-
// DEFAULT: call void @__ubsan_handle_type_mismatch_v1_abort(
39-
// DEFAULT: call void @__asan_report_load4(
49+
// SANITIZE: call void @__ubsan_handle_type_mismatch_v1_abort(
50+
// SANITIZE: call void @__asan_report_load4(
4051
// IGNORE-NOT: call void @__ubsan_handle_type_mismatch_v1_abort(
4152
// IGNORE-NOT: call void @__asan_report_load4(

0 commit comments

Comments
 (0)