1
0
mirror of https://github.com/SoftEtherVPN/SoftEtherVPN.git synced 2026-02-11 13:10:08 +03:00

Add macro to disable thread sanitizer

Define ATTRIBUTE_NO_TSAN as __attribute__((no_sanitize(\"thread\")))
when building with thread sanitizer enabled. Falls back to empty
definition when thread sanitizer is not active or not supported
compiler.
This commit is contained in:
synqa
2026-02-08 23:08:13 +09:00
parent 9d27b935b7
commit 0a87ff8fbd

View File

@ -72,11 +72,26 @@ int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, char *CmdLine, int CmdShow)
// Compiler dependent // Compiler dependent
#ifndef OS_WIN32 #ifndef OS_WIN32
// Gcc compiler // GCC or Clang compiler
#define GCC_PACKED __attribute__ ((__packed__)) #define GCC_PACKED __attribute__ ((__packed__))
// Clang compiler
#if defined(__has_feature)
#if __has_feature(thread_sanitizer)
#define ATTRIBUTE_NO_TSAN __attribute__((no_sanitize("thread")))
#endif // __has_feature(thread_sanitizer)
#endif // __has_feature
// GCC compiler
#if defined(__SANITIZE_THREAD__) && !defined(ATTRIBUTE_NO_TSAN)
#define ATTRIBUTE_NO_TSAN __attribute__((no_sanitize("thread")))
#endif // __SANITIZE_THREAD__
// Other or older Clang/GCC compiler
#ifndef ATTRIBUTE_NO_TSAN
#define ATTRIBUTE_NO_TSAN
#endif // ATTRIBUTE_NO_TSAN
#else // OS_WIN32 #else // OS_WIN32
// VC++ compiler // VC++ compiler
#define GCC_PACKED #define GCC_PACKED
#define ATTRIBUTE_NO_TSAN
#endif // OS_WIN32 #endif // OS_WIN32
// Macro that displays the current file name and line number // Macro that displays the current file name and line number