summaryrefslogtreecommitdiffstats
path: root/defaults
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2022-11-15 14:36:46 +0100
committerTor Egge <Tor.Egge@online.no>2022-11-15 14:36:46 +0100
commitfc917da109cabf3c081f15ee3c59a93d022bd20c (patch)
treede2d8eb0905a02229937a398120b5035e3b59ff6 /defaults
parent4e3929bf1afe86916ada5bd05117e47dcfd8be24 (diff)
Print active sanitizers.
Diffstat (limited to 'defaults')
-rw-r--r--defaults/src/apps/printdefault/printdefault.cpp5
-rw-r--r--defaults/src/vespa/defaults.cpp34
-rw-r--r--defaults/src/vespa/defaults.h2
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