@@ -58,8 +58,13 @@ void polytracker_parse_env() {
5858 get_polytracker_db_name () = pdb;
5959 }
6060
61- get_polytracker_stdout_sink () = getenv (" POLYTRACKER_STDOUT_SINK" );
62- get_polytracker_stderr_sink () = getenv (" POLYTRACKER_STDERR_SINK" );
61+ if (auto out = getenv (" POLYTRACKER_STDOUT_SINK" )) {
62+ get_polytracker_stdout_sink () = out;
63+ }
64+
65+ if (auto err = getenv (" POLYTRACKER_STDERR_SINK" )) {
66+ get_polytracker_stderr_sink () = err;
67+ }
6368}
6469
6570/*
@@ -87,17 +92,26 @@ void polytracker_end() {
8792}
8893
8994void polytracker_print_settings () {
95+ // db name
9096 printf (" POLYDB: %s\n " , get_polytracker_db_name ().c_str ());
91- printf (" POLYTRACKER_STDOUT_SINK: %s\n " ,
92- get_polytracker_stdout_sink ().c_str ());
93- printf (" POLYTRACKER_STDERR_SINK: %s\n " ,
94- get_polytracker_stderr_sink ().c_str ());
97+ // stdout sink flag
98+ if (!get_polytracker_stdout_sink ().empty ()) {
99+ printf (" POLYTRACKER_STDOUT_SINK: %s\n " ,
100+ get_polytracker_stdout_sink ().c_str ());
101+ }
102+ // stderr sink flag
103+ if (!get_polytracker_stderr_sink ().empty ()) {
104+ printf (" POLYTRACKER_STDERR_SINK: %s\n " ,
105+ get_polytracker_stderr_sink ().c_str ());
106+ }
95107}
96108
97109void polytracker_start (func_mapping const *globals, uint64_t globals_count,
98110 block_mapping const *block_map, uint64_t block_map_count,
99111 bool control_flow_tracking) {
100112 DO_EARLY_DEFAULT_CONSTRUCT (std::string, polytracker_db_name)
113+ DO_EARLY_DEFAULT_CONSTRUCT (std::string, polytracker_stderr_sink);
114+ DO_EARLY_DEFAULT_CONSTRUCT (std::string, polytracker_stdout_sink);
101115 DO_EARLY_DEFAULT_CONSTRUCT (std::unordered_set<std::string>, target_sources);
102116
103117 get_target_sources ();
0 commit comments