[clang-tools-extra] 322d019 - [clang-tidy] Do not flag strerror in concurrency-mt-unsafe (#140520)
via cfe-commits
cfe-commits at lists.llvm.org
Mon May 19 12:27:40 PDT 2025
Author: Carlos Galvez
Date: 2025-05-19T21:27:37+02:00
New Revision: 322d0197f5c5d4cf3a6bb2d86a0112788fd6c529
URL: https://github.com/llvm/llvm-project/commit/322d0197f5c5d4cf3a6bb2d86a0112788fd6c529
DIFF: https://github.com/llvm/llvm-project/commit/322d0197f5c5d4cf3a6bb2d86a0112788fd6c529.diff
LOG: [clang-tidy] Do not flag strerror in concurrency-mt-unsafe (#140520)
The docs of the check state:
> Glibc’s list is compiled from GNU web documentation with a search for
MT-Safe tag
And strerror fulfills exactly that:
https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html
> Function: char * strerror (int errnum)
> Preliminary: | MT-Safe | AS-Unsafe heap i18n | AC-Unsafe mem | See
POSIX Safety Concepts.
So concurrency-mt-unsafe should not flag it.
Fixes #140515
---------
Co-authored-by: Carlos Gálvez <carlos.galvez at zenseact.com>
Co-authored-by: EugeneZelenko <eugene.zelenko at gmail.com>
Added:
Modified:
clang-tools-extra/clang-tidy/concurrency/MtUnsafeCheck.cpp
clang-tools-extra/docs/ReleaseNotes.rst
clang-tools-extra/test/clang-tidy/checkers/concurrency/mt-unsafe-glibc.cpp
Removed:
################################################################################
diff --git a/clang-tools-extra/clang-tidy/concurrency/MtUnsafeCheck.cpp b/clang-tools-extra/clang-tidy/concurrency/MtUnsafeCheck.cpp
index acffaa30d418e..cf076bb40484f 100644
--- a/clang-tools-extra/clang-tidy/concurrency/MtUnsafeCheck.cpp
+++ b/clang-tools-extra/clang-tidy/concurrency/MtUnsafeCheck.cpp
@@ -153,7 +153,6 @@ static const clang::StringRef GlibcFunctions[] = {
"::sigsuspend",
"::sleep",
"::srand48",
- "::strerror",
"::strsignal",
"::strtok",
"::tcflow",
diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst
index 9b29ab12e1bfa..99e07ad10bd6d 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -172,6 +172,10 @@ Changes in existing checks
<clang-tidy/checks/cert/err33-c>` check by fixing false positives when
a function name is just prefixed with a targeted function name.
+- Improved :doc:`concurrency-mt-unsafe
+ <clang-tidy/checks/concurrency/mt-unsafe>` check by fixing a false positive
+ where ``strerror`` was flagged as MT-unsafe.
+
- Improved :doc:`misc-const-correctness
<clang-tidy/checks/misc/const-correctness>` check by adding the option
`AllowedTypes`, that excludes specified types from const-correctness
diff --git a/clang-tools-extra/test/clang-tidy/checkers/concurrency/mt-unsafe-glibc.cpp b/clang-tools-extra/test/clang-tidy/checkers/concurrency/mt-unsafe-glibc.cpp
index 8b137de005a47..14d1912683795 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/concurrency/mt-unsafe-glibc.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/concurrency/mt-unsafe-glibc.cpp
@@ -3,6 +3,7 @@
extern unsigned int sleep (unsigned int __seconds);
extern int *gmtime (const int *__timer);
extern char *dirname (char *__path);
+extern char *strerror(int errnum);
void foo() {
sleep(2);
@@ -12,4 +13,6 @@ void foo() {
// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: function is not thread safe [concurrency-mt-unsafe]
dirname(nullptr);
+
+ strerror(0);
}
More information about the cfe-commits
mailing list