summaryrefslogtreecommitdiff
path: root/src/base
diff options
context:
space:
mode:
authorAndres Noetzli <andres.noetzli@gmail.com>2019-11-16 22:38:34 -0800
committerGitHub <noreply@github.com>2019-11-16 22:38:34 -0800
commit990ff24487fd0b6998231894825eb9cd4610494e (patch)
tree46c037f9feb147de353f906666c8099028e392d6 /src/base
parent6a24e015ca539d80317276761a42f0117dd43575 (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.cpp2
-rw-r--r--src/base/configuration.h2
-rw-r--r--src/base/configuration_private.h16
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 */
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback