diff options
author | Tor Egge <Tor.Egge@online.no> | 2022-11-15 14:36:46 +0100 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2022-11-15 14:36:46 +0100 |
commit | fc917da109cabf3c081f15ee3c59a93d022bd20c (patch) | |
tree | de2d8eb0905a02229937a398120b5035e3b59ff6 /defaults | |
parent | 4e3929bf1afe86916ada5bd05117e47dcfd8be24 (diff) |
Print active sanitizers.
Diffstat (limited to 'defaults')
-rw-r--r-- | defaults/src/apps/printdefault/printdefault.cpp | 5 | ||||
-rw-r--r-- | defaults/src/vespa/defaults.cpp | 34 | ||||
-rw-r--r-- | defaults/src/vespa/defaults.h | 2 |
3 files changed, 41 insertions, 0 deletions
diff --git a/defaults/src/apps/printdefault/printdefault.cpp b/defaults/src/apps/printdefault/printdefault.cpp index 1a2d4653a71..7fb7972874f 100644 --- a/defaults/src/apps/printdefault/printdefault.cpp +++ b/defaults/src/apps/printdefault/printdefault.cpp @@ -25,6 +25,7 @@ void dumpAllVars() { } v = vespa::Defaults::vespaConfigProxyRpcAddr(); printf("config proxy RPC addr = '%s'\n", v.c_str()); + printf("sanitizers = '%s'\n", vespa::Defaults::get_sanitizers().c_str()); printf("vespa version = '%s'\n", V_TAG_COMPONENT); } @@ -34,6 +35,7 @@ int main(int argc, char **argv) { fprintf(stderr, " variable names are: home, user, hostname, portbase, configservers,\n"); fprintf(stderr, " configserver_rpc_port, configservers_rpc,\n"); fprintf(stderr, " configservers_http, configsources, configproxy_rpc,\n"); + fprintf(stderr, " sanitizers,\n"); fprintf(stderr, " version\n"); return 1; } @@ -74,6 +76,9 @@ int main(int argc, char **argv) { } else if (strcmp(argv[1], "configproxy_rpc") == 0) { std::string v = vespa::Defaults::vespaConfigProxyRpcAddr(); printf("%s\n", v.c_str()); + } else if (strcmp(argv[1], "sanitizers") == 0) { + std::string v = vespa::Defaults::get_sanitizers(); + printf("%s\n", v.c_str()); } else if (strcmp(argv[1], "version") == 0) { printf("%s\n", V_TAG_COMPONENT); } else { diff --git a/defaults/src/vespa/defaults.cpp b/defaults/src/vespa/defaults.cpp index 7d1cd237ecd..a74e513cf4c 100644 --- a/defaults/src/vespa/defaults.cpp +++ b/defaults/src/vespa/defaults.cpp @@ -1,6 +1,7 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include "defaults.h" +#include <vespa/config.h> #include <stdlib.h> #include <dirent.h> #include <stdio.h> @@ -10,6 +11,7 @@ #include <unistd.h> #include <atomic> #include <pwd.h> +#include <sstream> namespace { @@ -358,4 +360,36 @@ Defaults::vespaConfigSourcesRpcAddrs() return ret; } +namespace { + +void +append_sanitizer(std::ostringstream& oss, const std::string& value) +{ + if (!oss.str().empty()) { + oss << ","; + } + oss << value; +} + +} + +std::string +Defaults::get_sanitizers() +{ + std::ostringstream oss; +#ifdef VESPA_USE_ADDRESS_SANITIZER + append_sanitizer(oss, "address"); +#endif +#ifdef VESPA_USE_THREAD_SANITIZER + append_sanitizer(oss, "thread"); +#endif +#ifdef VESPA_USE_UNDEFINED_SANITIZER + append_sanitizer(oss, "undefined"); +#endif + if (oss.str().empty()) { + append_sanitizer(oss, "none"); + } + return oss.str(); +} + } // namespace vespa diff --git a/defaults/src/vespa/defaults.h b/defaults/src/vespa/defaults.h index 4023a77c07b..201a3af5da3 100644 --- a/defaults/src/vespa/defaults.h +++ b/defaults/src/vespa/defaults.h @@ -94,6 +94,8 @@ public: * @return same as vespaConfigProxyRpcAddr + vespaConfigServerRpcAddrs **/ static std::vector<std::string> vespaConfigSourcesRpcAddrs(); + + static std::string get_sanitizers(); }; } // namespace vespa |