]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Added command-line option --show-confl-seg (show conflicting segments).
authorBart Van Assche <bvanassche@acm.org>
Tue, 18 Mar 2008 17:08:08 +0000 (17:08 +0000)
committerBart Van Assche <bvanassche@acm.org>
Tue, 18 Mar 2008 17:08:08 +0000 (17:08 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7733

exp-drd/drd_error.c
exp-drd/drd_error.h
exp-drd/drd_main.c

index e68e6a604fc62e0de84d5afd444bd596a6d9a0d1..d895a022d466fb0ce12e0ae716e50d8db4e49381 100644 (file)
 #include "pub_tool_tooliface.h"   // VG_(needs_tool_errors)()
 
 
+/* Local type definitions. */
+
 typedef enum {
   ConflictingAccessSupp
 } DRD_SuppKind;
 
 
+/* Local variables. */
+
+static Bool s_drd_show_conflicting_segments = True;
+
+
+void set_show_conflicting_segments(const Bool scs)
+{
+  s_drd_show_conflicting_segments = scs;
+}
+
 /* Describe a data address range [a,a+len[ as good as possible, for error */
 /* messages, putting the result in ai. */
 static
@@ -105,8 +117,11 @@ void drd_report_data_race2(Error* const err, const DataRaceErrInfo* const dri)
   {
     VG_(message)(Vg_UserMsg, "Allocation context: unknown.");
   }
-  thread_report_conflicting_segments(dri->tid,
-                                     dri->addr, dri->size, dri->access_type);
+  if (s_drd_show_conflicting_segments)
+  {
+    thread_report_conflicting_segments(dri->tid,
+                                       dri->addr, dri->size, dri->access_type);
+  }
 }
 
 static Bool drd_tool_error_eq(VgRes res, Error* e1, Error* e2)
index 5da18b5cc38d77e669ffe8e575e7669b859cbb89..1bbd066a22d61bd690ecedcf9f3723bd191ac70c 100644 (file)
@@ -120,9 +120,8 @@ typedef struct {
 typedef struct {
 } GenericErrInfo;
 
-void describe_addr(Addr const a, SizeT const len, AddrInfo* const ai);
-Char* describe_addr_text(Addr const a, SizeT const len, AddrInfo* const ai,
-                         Char* const buf, UInt const n_buf);
+
+void set_show_conflicting_segments(const Bool scs);
 void drd_register_error_handlers(void);
 
 
index bec8d81a3ebaf72f773ab0a133e75b6294309d03..758edc40a9b606f970aa2e3f63484bdc01ddc359 100644 (file)
@@ -71,6 +71,7 @@ static Addr drd_trace_address = 0;
 
 static Bool drd_process_cmd_line_option(Char* arg)
 {
+  Bool show_confl_seg    = True;
   Bool trace_barrier     = False;
   Bool trace_clientobj   = False;
   Bool trace_cond        = False;
@@ -84,6 +85,7 @@ static Bool drd_process_cmd_line_option(Char* arg)
   Char* trace_address    = 0;
 
   VG_BOOL_CLO     (arg, "--drd-stats",         drd_print_stats)
+  else VG_BOOL_CLO(arg, "--show-confl-seg",    show_confl_seg)
   else VG_BOOL_CLO(arg, "--trace-barrier",     trace_barrier)
   else VG_BOOL_CLO(arg, "--trace-clientobj",   trace_clientobj)
   else VG_BOOL_CLO(arg, "--trace-cond",        trace_cond)
@@ -100,6 +102,8 @@ static Bool drd_process_cmd_line_option(Char* arg)
   else
     return False;
 
+  if (! show_confl_seg)
+    set_show_conflicting_segments(show_confl_seg);
   if (trace_address)
   {
     drd_trace_address = VG_(strtoll16)(trace_address, 0);