From: Bart Van Assche Date: Fri, 8 Aug 2014 16:17:58 +0000 (+0000) Subject: drd: Add command-line option --verify-conflict-set X-Git-Tag: svn/VALGRIND_3_10_0~216 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6822f42ee1d3b7275206945857f1bda73f139d0e;p=thirdparty%2Fvalgrind.git drd: Add command-line option --verify-conflict-set git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14242 --- diff --git a/drd/drd_main.c b/drd/drd_main.c index 2104ea3799..1a2060ba43 100644 --- a/drd/drd_main.c +++ b/drd/drd_main.c @@ -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" ); } diff --git a/drd/drd_thread.c b/drd/drd_thread.c index 2c2e96cd91..d9cb0a9d2b 100644 --- a/drd/drd_thread.c +++ b/drd/drd_thread.c @@ -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); diff --git a/drd/drd_thread.h b/drd/drd_thread.h index a4b68c0a9b..690133bcf0 100644 --- a/drd/drd_thread.h +++ b/drd/drd_thread.h @@ -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. */