diff options
author | Andres Noetzli <andres.noetzli@gmail.com> | 2018-10-17 21:21:00 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-17 21:21:00 -0700 |
commit | 62ed33cb855dc2c86d1fe4342b5cc6217e03910f (patch) | |
tree | 95362b97fe35947a2e6113ec67aec3e49e5aa62f /src | |
parent | f1a4096e579b101642c5a47eb5c8e90476ccc81a (diff) |
Show if ASAN build in --show-config (#2650)
This commit extends `--show-config` to show whether the current build is
an ASAN build or not. This is done by moving a detection that was
previously done for the unit tests into base/configuration_private.h.
In addition to being convenient, this allows us to easily exclude
regression tests from ASAN builds.
Diffstat (limited to 'src')
-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 | ||||
-rw-r--r-- | src/options/options_handler.cpp | 1 |
4 files changed, 21 insertions, 0 deletions
diff --git a/src/base/configuration.cpp b/src/base/configuration.cpp index 32ab85f96..a00cee856 100644 --- a/src/base/configuration.cpp +++ b/src/base/configuration.cpp @@ -82,6 +82,8 @@ bool Configuration::isProfilingBuild() { return IS_PROFILING_BUILD; } +bool Configuration::isAsanBuild() { return IS_ASAN_BUILD; } + bool Configuration::isCompetitionBuild() { return IS_COMPETITION_BUILD; } diff --git a/src/base/configuration.h b/src/base/configuration.h index a00a6c1d9..b6e2a1963 100644 --- a/src/base/configuration.h +++ b/src/base/configuration.h @@ -63,6 +63,8 @@ public: static bool isProfilingBuild(); + static bool isAsanBuild(); + static bool isCompetitionBuild(); static std::string getPackageName(); diff --git a/src/base/configuration_private.h b/src/base/configuration_private.h index e2974260c..5164d46bc 100644 --- a/src/base/configuration_private.h +++ b/src/base/configuration_private.h @@ -150,6 +150,22 @@ namespace CVC4 { # define IS_GPL_BUILD false #endif /* CVC4_GPL_DEPS */ +#define IS_ASAN_BUILD false + +// GCC test +#if defined(__SANITIZE_ADDRESS__) +# undef IS_ASAN_BUILD +# define IS_ASAN_BUILD true +#endif /* defined(__SANITIZE_ADDRESS__) */ + +// Clang test +#if defined(__has_feature) +# if __has_feature(address_sanitizer) +# undef IS_ASAN_BUILD +# define IS_ASAN_BUILD true +# endif /* __has_feature(address_sanitizer) */ +#endif /* defined(__has_feature) */ + }/* CVC4 namespace */ #endif /* __CVC4__CONFIGURATION_PRIVATE_H */ diff --git a/src/options/options_handler.cpp b/src/options/options_handler.cpp index 9cf5180e8..be2d7883d 100644 --- a/src/options/options_handler.cpp +++ b/src/options/options_handler.cpp @@ -1685,6 +1685,7 @@ void OptionsHandler::showConfiguration(std::string option) { print_config_cond("proof", Configuration::isProofBuild()); print_config_cond("coverage", Configuration::isCoverageBuild()); print_config_cond("profiling", Configuration::isProfilingBuild()); + print_config_cond("asan", Configuration::isAsanBuild()); print_config_cond("competition", Configuration::isCompetitionBuild()); std::cout << std::endl; |