[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