diff options
author | Andres Noetzli <andres.noetzli@gmail.com> | 2019-11-16 22:38:34 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-16 22:38:34 -0800 |
commit | 990ff24487fd0b6998231894825eb9cd4610494e (patch) | |
tree | 46c037f9feb147de353f906666c8099028e392d6 /src/base | |
parent | 6a24e015ca539d80317276761a42f0117dd43575 (diff) |
Add support for ThreadSanitizer instrumentation (#3467)
This commit adds support for compiling CVC4 with ThreadSanitizer
instrumentation. This is useful for debugging issues when CVC4 is used
in a multi-threaded context (e.g. #3292).
Diffstat (limited to 'src/base')
-rw-r--r-- | src/base/configuration.cpp | 2 | ||||
-rw-r--r-- | src/base/configuration.h | 2 | ||||
-rw-r--r-- | src/base/configuration_private.h | 16 |
3 files changed, 20 insertions, 0 deletions
diff --git a/src/base/configuration.cpp b/src/base/configuration.cpp index 0400a4e4d..fb4d94f9d 100644 --- a/src/base/configuration.cpp +++ b/src/base/configuration.cpp @@ -86,6 +86,8 @@ bool Configuration::isAsanBuild() { return IS_ASAN_BUILD; } bool Configuration::isUbsanBuild() { return IS_UBSAN_BUILD; } +bool Configuration::isTsanBuild() { return IS_TSAN_BUILD; } + bool Configuration::isCompetitionBuild() { return IS_COMPETITION_BUILD; } diff --git a/src/base/configuration.h b/src/base/configuration.h index db0cd5cde..60cdd5a9c 100644 --- a/src/base/configuration.h +++ b/src/base/configuration.h @@ -67,6 +67,8 @@ public: static bool isUbsanBuild(); + static bool isTsanBuild(); + static bool isCompetitionBuild(); static std::string getPackageName(); diff --git a/src/base/configuration_private.h b/src/base/configuration_private.h index 82938adb9..f3e76d53b 100644 --- a/src/base/configuration_private.h +++ b/src/base/configuration_private.h @@ -178,6 +178,22 @@ namespace CVC4 { #define IS_UBSAN_BUILD false #endif /* CVC4_USE_UBSAN */ +#define IS_TSAN_BUILD false + +// GCC test +#if defined(__SANITIZE_THREAD__) +#undef IS_TSAN_BUILD +#define IS_TSAN_BUILD true +#endif /* defined(__SANITIZE_THREAD__) */ + +// Clang test +#if defined(__has_feature) +#if __has_feature(thread_sanitizer) +#undef IS_TSAN_BUILD +#define IS_TSAN_BUILD true +#endif /* __has_feature(thread_sanitizer) */ +#endif /* defined(__has_feature) */ + }/* CVC4 namespace */ #endif /* CVC4__CONFIGURATION_PRIVATE_H */ |