else if VG_BOOL_CLO(arg, "--trace-semaphore", trace_semaphore) {}
else if VG_BOOL_CLO(arg, "--trace-suppr", trace_suppression) {}
else if VG_BOOL_CLO(arg, "--var-info", s_var_info) {}
+ else if VG_BOOL_CLO(arg, "--verify-conflict-set", DRD_(verify_conflict_set))
+ {}
else if VG_INT_CLO (arg, "--exclusive-threshold", exclusive_threshold_ms) {}
else if VG_STR_CLO (arg, "--ptrace-addr", ptrace_address) {}
else if VG_INT_CLO (arg, "--shared-threshold", shared_threshold_ms) {}
" which data race detection is suppressed.\n"
" --trace-segment=yes|no Trace segment actions [no].\n"
" --trace-suppr=yes|no Trace all address suppression actions [no].\n"
+" --verify-conflict-set=yes|no Verify conflict set consistency [no].\n"
);
}
DrdThreadId DRD_(g_drd_running_tid) = DRD_INVALID_THREADID;
ThreadInfo DRD_(g_threadinfo)[DRD_N_THREADS];
struct bitmap* DRD_(g_conflict_set);
+int DRD_(verify_conflict_set) = -1;
static Bool s_trace_context_switches = False;
static Bool s_trace_conflict_set = False;
static Bool s_trace_conflict_set_bm = False;
*/
static Bool thread_conflict_set_up_to_date(const DrdThreadId tid)
{
- static int do_verify_conflict_set = -1;
Bool result;
struct bitmap* computed_conflict_set = 0;
- if (do_verify_conflict_set < 0)
- do_verify_conflict_set = VG_(getenv)("DRD_VERIFY_CONFLICT_SET") != 0;
+ if (DRD_(verify_conflict_set) < 0)
+ DRD_(verify_conflict_set) = VG_(getenv)("DRD_VERIFY_CONFLICT_SET") != 0;
- if (do_verify_conflict_set == 0)
+ if (DRD_(verify_conflict_set) == 0)
return True;
thread_compute_conflict_set(&computed_conflict_set, tid);
extern ThreadInfo DRD_(g_threadinfo)[DRD_N_THREADS];
/** Conflict set for the currently running thread. */
extern struct bitmap* DRD_(g_conflict_set);
+extern int DRD_(verify_conflict_set);
/* Function declarations. */