[llvm-branch-commits] [clang] Implement src:*=sanitize for UBSan. (PR #140489)
Qinkun Bao via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Sun May 18 20:20:57 PDT 2025
https://github.com/qinkunbao updated https://github.com/llvm/llvm-project/pull/140489
>From d383fc3d23c0c302d134a76d39491c87547526a1 Mon Sep 17 00:00:00 2001
From: Qinkun Bao <qinkun at google.com>
Date: Mon, 19 May 2025 02:45:30 +0000
Subject: [PATCH 1/2] fix format
Created using spr 1.3.6
---
clang/include/clang/Basic/SanitizerSpecialCaseList.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/clang/include/clang/Basic/SanitizerSpecialCaseList.h b/clang/include/clang/Basic/SanitizerSpecialCaseList.h
index dd01a786dee01..25d518e7128cf 100644
--- a/clang/include/clang/Basic/SanitizerSpecialCaseList.h
+++ b/clang/include/clang/Basic/SanitizerSpecialCaseList.h
@@ -44,9 +44,9 @@ class SanitizerSpecialCaseList : public llvm::SpecialCaseList {
StringRef Category = StringRef()) const;
// Query ignorelisted entries if any bit in Mask matches the entry's section.
- // Return 0 if not found. If found, return the line number (starts with 1).
+ // Return 0 if not found. If found, return the line number (starts with 1).
unsigned inSectionBlame(SanitizerMask Mask, StringRef Prefix, StringRef Query,
- StringRef Category = StringRef()) const;
+ StringRef Category = StringRef()) const;
protected:
// Initialize SanitizerSections.
@@ -54,7 +54,7 @@ class SanitizerSpecialCaseList : public llvm::SpecialCaseList {
struct SanitizerSection {
SanitizerSection(SanitizerMask SM, SectionEntries &E)
- : Mask(SM), Entries(E){};
+ : Mask(SM), Entries(E) {};
SanitizerMask Mask;
SectionEntries &Entries;
>From da2f95e6399b539e45ec9235f5751cb6c98acf77 Mon Sep 17 00:00:00 2001
From: Qinkun Bao <qinkun at google.com>
Date: Mon, 19 May 2025 03:20:43 +0000
Subject: [PATCH 2/2] fix tests
Created using spr 1.3.6
---
clang/lib/Basic/SanitizerSpecialCaseList.cpp | 7 ++++++-
clang/test/CodeGen/ubsan-src-ignorelist-category.test | 2 +-
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/clang/lib/Basic/SanitizerSpecialCaseList.cpp b/clang/lib/Basic/SanitizerSpecialCaseList.cpp
index 3bf79876235db..7da36f3801453 100644
--- a/clang/lib/Basic/SanitizerSpecialCaseList.cpp
+++ b/clang/lib/Basic/SanitizerSpecialCaseList.cpp
@@ -56,7 +56,12 @@ void SanitizerSpecialCaseList::createSanitizerSections() {
bool SanitizerSpecialCaseList::inSection(SanitizerMask Mask, StringRef Prefix,
StringRef Query,
StringRef Category) const {
- return inSectionBlame(Mask, Prefix, Query, Category) > 0;
+ for (auto &S : SanitizerSections)
+ if ((S.Mask & Mask) &&
+ SpecialCaseList::inSectionBlame(S.Entries, Prefix, Query, Category))
+ return true;
+
+ return false;
}
unsigned SanitizerSpecialCaseList::inSectionBlame(SanitizerMask Mask,
diff --git a/clang/test/CodeGen/ubsan-src-ignorelist-category.test b/clang/test/CodeGen/ubsan-src-ignorelist-category.test
index f32dc5cbb9e13..e0efd65df8652 100644
--- a/clang/test/CodeGen/ubsan-src-ignorelist-category.test
+++ b/clang/test/CodeGen/ubsan-src-ignorelist-category.test
@@ -17,7 +17,7 @@ src:*
src:*/test1.c=sanitize
src:*/test1.c
-//--- src.ignorelist.contradict1
+//--- src.ignorelist.contradict2
src:*
src:*/test1.c
src:*/test1.c=sanitize
More information about the llvm-branch-commits
mailing list