]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
drd: Add command-line option --verify-conflict-set
authorBart Van Assche <bvanassche@acm.org>
Fri, 8 Aug 2014 16:17:58 +0000 (16:17 +0000)
committerBart Van Assche <bvanassche@acm.org>
Fri, 8 Aug 2014 16:17:58 +0000 (16:17 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14242

drd/drd_main.c
drd/drd_thread.c
drd/drd_thread.h

index 2104ea3799f534998f6c74a243cb9efb89baef04..1a2060ba435e2634fa382b20c4ccdc47f739af68 100644 (file)
@@ -121,6 +121,8 @@ static Bool DRD_(process_cmd_line_option)(const HChar* arg)
    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)    {}
@@ -262,6 +264,7 @@ static void DRD_(print_debug_usage)(void)
 "                              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"
 );
 }
 
index 2c2e96cd91bfb9e01a6b179105f23f1cff22546f..d9cb0a9d2bca4e492b4a6055c3edb65db859b538 100644 (file)
@@ -68,6 +68,7 @@ static ThreadId s_vg_running_tid  = VG_INVALID_THREADID;
 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;
@@ -1347,14 +1348,13 @@ void DRD_(thread_report_conflicting_segments)(const DrdThreadId tid,
  */
 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);
index a4b68c0a9b7b1dedaa0756111e6456f2d99910d6..690133bcf03fb03b654ee3882cc8c35fe60e3abe 100644 (file)
@@ -116,6 +116,7 @@ extern DrdThreadId    DRD_(g_drd_running_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. */