https://github.com/zimirza updated https://github.com/llvm/llvm-project/pull/110366
From 4fb69942effb3cf34d07f33a14a95757b6ca5ee0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=97=D0=B8=D1=88=D0=B0=D0=BD=20=D0=9C=D0=B8=D1=80=D0=B7?= =?UTF-8?q?=D0=B0?= <zmi...@tutanota.de> Date: Sat, 28 Sep 2024 17:05:42 +0200 Subject: [PATCH 1/5] [clang-tidy] add `ctime` and `localtime` to `clang-tidy` Closes #107445 --- clang/docs/tools/clang-formatted-files.txt | 8 ++++++++ .../StaticAnalyzer/Checkers/cert/InvalidPtrChecker.cpp | 4 ++++ clang/lib/Tooling/Inclusions/Stdlib/CSymbolMap.inc | 4 ++++ clang/lib/Tooling/Inclusions/Stdlib/StdSymbolMap.inc | 6 ++++++ clang/test/Analysis/cert/env34-c.c | 9 ++++++++- 5 files changed, 30 insertions(+), 1 deletion(-) diff --git a/clang/docs/tools/clang-formatted-files.txt b/clang/docs/tools/clang-formatted-files.txt index 67ff085144f4de..5223ca82a5b575 100644 --- a/clang/docs/tools/clang-formatted-files.txt +++ b/clang/docs/tools/clang-formatted-files.txt @@ -3058,6 +3058,14 @@ libc/src/threads/linux/thrd_join.cpp libc/src/threads/linux/Thread.h libc/src/time/asctime.cpp libc/src/time/asctime.h +libc/src/time/ctime.cpp +libc/src/time/ctime.h +libc/src/time/ctime_r.cpp +libc/src/time/ctime_r.h +libc/src/time/localtime.cpp +libc/src/time/localtime.h +libc/src/time/localtime_r.cpp +libc/src/time/localtime_r.h libc/src/time/asctime_r.cpp libc/src/time/asctime_r.h libc/src/time/gmtime.cpp diff --git a/clang/lib/StaticAnalyzer/Checkers/cert/InvalidPtrChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/cert/InvalidPtrChecker.cpp index fefe846b6911f7..9c34d3636c8488 100644 --- a/clang/lib/StaticAnalyzer/Checkers/cert/InvalidPtrChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/cert/InvalidPtrChecker.cpp @@ -76,6 +76,10 @@ class InvalidPtrChecker &InvalidPtrChecker::postPreviousReturnInvalidatingCall}, {{CDM::CLibrary, {"asctime"}, 1}, &InvalidPtrChecker::postPreviousReturnInvalidatingCall}, + {{CDM::CLibrary, {"ctime"}, 1}, + &InvalidPtrChecker::postPreviousReturnInvalidatingCall}, + {{CDM::CLibrary, {"localtime"}, 1}, + &InvalidPtrChecker::postPreviousReturnInvalidatingCall}, }; // The private members of this checker corresponding to commandline options diff --git a/clang/lib/Tooling/Inclusions/Stdlib/CSymbolMap.inc b/clang/lib/Tooling/Inclusions/Stdlib/CSymbolMap.inc index 463ce921f0672f..aca22f869b5291 100644 --- a/clang/lib/Tooling/Inclusions/Stdlib/CSymbolMap.inc +++ b/clang/lib/Tooling/Inclusions/Stdlib/CSymbolMap.inc @@ -220,6 +220,10 @@ SYMBOL(and, None, <iso646.h>) SYMBOL(and_eq, None, <iso646.h>) SYMBOL(asctime, None, <time.h>) SYMBOL(asctime_s, None, <time.h>) +SYMBOL(ctime, None, <time.h>) +SYMBOL(ctime_s, None, <time.h>) +SYMBOL(localtime, None, <time.h>) +SYMBOL(localtime_s, None, <time.h>) SYMBOL(asin, None, <math.h>) SYMBOL(asinf, None, <math.h>) SYMBOL(asinh, None, <math.h>) diff --git a/clang/lib/Tooling/Inclusions/Stdlib/StdSymbolMap.inc b/clang/lib/Tooling/Inclusions/Stdlib/StdSymbolMap.inc index b46bd2e4d7a4b5..8e3471e2fc5729 100644 --- a/clang/lib/Tooling/Inclusions/Stdlib/StdSymbolMap.inc +++ b/clang/lib/Tooling/Inclusions/Stdlib/StdSymbolMap.inc @@ -617,6 +617,12 @@ SYMBOL(as_writable_bytes, std::, <span>) SYMBOL(asctime, std::, <ctime>) SYMBOL(asctime, None, <ctime>) SYMBOL(asctime, None, <time.h>) +SYMBOL(ctime, std::, <time.h>) +SYMBOL(ctime, None, <ctime>) +SYMBOL(ctime, None, <time.h>) +SYMBOL(localtime, std::, <ctime>) +SYMBOL(localtime, None, <ctime>) +SYMBOL(localtime, None, <time.h>) SYMBOL(asin, std::, <cmath>) SYMBOL(asin, None, <cmath>) SYMBOL(asin, None, <math.h>) diff --git a/clang/test/Analysis/cert/env34-c.c b/clang/test/Analysis/cert/env34-c.c index d307f0d8f4bb01..66ba0be4a67bba 100644 --- a/clang/test/Analysis/cert/env34-c.c +++ b/clang/test/Analysis/cert/env34-c.c @@ -15,7 +15,14 @@ lconv *localeconv(void); typedef struct { } tm; -char *asctime(const tm *timeptr); +char *asctime(const tm *timeptr) +; +typedef struct { +} tm; +char *ctime(const tm *timeptr); +typedef struct { +} tm; +struct tm *localtime(struct tm *tm); int strcmp(const char*, const char*); extern void foo(char *e); From 5be47623b21694a8f98eb6e5de0e536fdbb4ca0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=97=D0=B8=D1=88=D0=B0=D0=BD=20=D0=9C=D0=B8=D1=80=D0=B7?= =?UTF-8?q?=D0=B0?= <zmi...@tutanota.de> Date: Sat, 28 Sep 2024 17:20:00 +0200 Subject: [PATCH 2/5] [clang-tidy] add times to clang-tidy add `ctime` and `localtime` to unsafe functions check function --- clang-tools-extra/clang-tidy/bugprone/UnsafeFunctionsCheck.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/clang-tools-extra/clang-tidy/bugprone/UnsafeFunctionsCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/UnsafeFunctionsCheck.cpp index 604a7cac0e4903..f058e5ae40680f 100644 --- a/clang-tools-extra/clang-tidy/bugprone/UnsafeFunctionsCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/UnsafeFunctionsCheck.cpp @@ -50,6 +50,8 @@ static StringRef getReplacementFor(StringRef FunctionName, StringRef AnnexKReplacementFunction = StringSwitch<StringRef>(FunctionName) .Cases("asctime", "asctime_r", "asctime_s") + .Cases("ctime", "ctime_r") + .Cases("localtime", "localtime_r") .Case("gets", "gets_s") .Default({}); if (!AnnexKReplacementFunction.empty()) From 5deca5d7b330b6e8bdf27862813c7c2acb5c9f77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=97=D0=B8=D1=88=D0=B0=D0=BD=20=D0=9C=D0=B8=D1=80=D0=B7?= =?UTF-8?q?=D0=B0?= <zmi...@tutanota.de> Date: Mon, 30 Sep 2024 16:35:31 +0200 Subject: [PATCH 3/5] [clang-tidy] add `ctime` and `localtime` to `clang-tidy` add changes to release notes --- clang-tools-extra/docs/ReleaseNotes.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index 7d37a4b03222cf..42ddb3c1b76c87 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -97,6 +97,8 @@ The improvements are... Improvements to clang-tidy -------------------------- +- Added `ctime` and `localtime` to clang-tidy. + - Improved :program:`run-clang-tidy.py` script. Fixed minor shutdown noise happening on certain platforms when interrupting the script. From 377ef53a4e6b8c5f5c4af7c303dc8aae9deeaad4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=97=D0=B8=D1=88=D0=B0=D0=BD=20=D0=9C=D0=B8=D1=80=D0=B7?= =?UTF-8?q?=D0=B0?= <zmi...@tutanota.de> Date: Mon, 30 Sep 2024 16:42:07 +0200 Subject: [PATCH 4/5] [clang-tidy] add `ctime` and `localtime` to `clang-tidy` fix: tests --- clang/test/Analysis/cert/env34-c.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/clang/test/Analysis/cert/env34-c.c b/clang/test/Analysis/cert/env34-c.c index 66ba0be4a67bba..ae344a815679ec 100644 --- a/clang/test/Analysis/cert/env34-c.c +++ b/clang/test/Analysis/cert/env34-c.c @@ -15,13 +15,8 @@ lconv *localeconv(void); typedef struct { } tm; -char *asctime(const tm *timeptr) -; -typedef struct { -} tm; +char *asctime(const tm *timeptr); char *ctime(const tm *timeptr); -typedef struct { -} tm; struct tm *localtime(struct tm *tm); int strcmp(const char*, const char*); From 564c8577e002f40075306e2e351ab3d27eabe74b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=97=D0=B8=D1=88=D0=B0=D0=BD=20=D0=9C=D0=B8=D1=80=D0=B7?= =?UTF-8?q?=D0=B0?= <zmi...@tutanota.de> Date: Mon, 30 Sep 2024 16:58:06 +0200 Subject: [PATCH 5/5] undo symbols, since these should be automatically generated --- clang/lib/Tooling/Inclusions/Stdlib/CSymbolMap.inc | 4 ---- clang/lib/Tooling/Inclusions/Stdlib/StdSymbolMap.inc | 6 ------ 2 files changed, 10 deletions(-) diff --git a/clang/lib/Tooling/Inclusions/Stdlib/CSymbolMap.inc b/clang/lib/Tooling/Inclusions/Stdlib/CSymbolMap.inc index aca22f869b5291..463ce921f0672f 100644 --- a/clang/lib/Tooling/Inclusions/Stdlib/CSymbolMap.inc +++ b/clang/lib/Tooling/Inclusions/Stdlib/CSymbolMap.inc @@ -220,10 +220,6 @@ SYMBOL(and, None, <iso646.h>) SYMBOL(and_eq, None, <iso646.h>) SYMBOL(asctime, None, <time.h>) SYMBOL(asctime_s, None, <time.h>) -SYMBOL(ctime, None, <time.h>) -SYMBOL(ctime_s, None, <time.h>) -SYMBOL(localtime, None, <time.h>) -SYMBOL(localtime_s, None, <time.h>) SYMBOL(asin, None, <math.h>) SYMBOL(asinf, None, <math.h>) SYMBOL(asinh, None, <math.h>) diff --git a/clang/lib/Tooling/Inclusions/Stdlib/StdSymbolMap.inc b/clang/lib/Tooling/Inclusions/Stdlib/StdSymbolMap.inc index 8e3471e2fc5729..b46bd2e4d7a4b5 100644 --- a/clang/lib/Tooling/Inclusions/Stdlib/StdSymbolMap.inc +++ b/clang/lib/Tooling/Inclusions/Stdlib/StdSymbolMap.inc @@ -617,12 +617,6 @@ SYMBOL(as_writable_bytes, std::, <span>) SYMBOL(asctime, std::, <ctime>) SYMBOL(asctime, None, <ctime>) SYMBOL(asctime, None, <time.h>) -SYMBOL(ctime, std::, <time.h>) -SYMBOL(ctime, None, <ctime>) -SYMBOL(ctime, None, <time.h>) -SYMBOL(localtime, std::, <ctime>) -SYMBOL(localtime, None, <ctime>) -SYMBOL(localtime, None, <time.h>) SYMBOL(asin, std::, <cmath>) SYMBOL(asin, None, <cmath>) SYMBOL(asin, None, <math.h>) _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits