Merge in the DATASYMS branch.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7540 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/helgrind/hg_main.c b/helgrind/hg_main.c
index 664c449..b0a0cff 100644
--- a/helgrind/hg_main.c
+++ b/helgrind/hg_main.c
@@ -48,6 +48,7 @@
#include "pub_tool_options.h"
#include "pub_tool_xarray.h"
#include "pub_tool_stacktrace.h"
+#include "pub_tool_debuginfo.h" /* VG_(get_data_description) */
#include "helgrind.h"
@@ -7828,6 +7829,8 @@
SVal old_state;
ExeContext* mb_lastlock;
Thread* thr;
+ Char descr1[96];
+ Char descr2[96];
} Race;
struct {
Thread* thr; /* doing the freeing */
@@ -7917,6 +7920,20 @@
// FIXME: tid vs thr
tl_assert(isWrite == False || isWrite == True);
tl_assert(szB == 8 || szB == 4 || szB == 2 || szB == 1);
+
+ tl_assert(sizeof(xe.XE.Race.descr1) == sizeof(xe.XE.Race.descr2));
+ xe.XE.Race.descr1[0] = xe.XE.Race.descr2[0] = 0;
+ if (VG_(get_data_description)(
+ &xe.XE.Race.descr1[0],
+ &xe.XE.Race.descr2[0],
+ sizeof(xe.XE.Race.descr1)-1,
+ data_addr )) {
+ tl_assert( xe.XE.Race.descr1
+ [ sizeof(xe.XE.Race.descr1)-1 ] == 0);
+ tl_assert( xe.XE.Race.descr2
+ [ sizeof(xe.XE.Race.descr2)-1 ] == 0);
+ }
+
VG_(maybe_record_error)( map_threads_reverse_lookup_SLOW(thr),
XE_Race, data_addr, NULL, &xe );
}
@@ -8452,6 +8469,12 @@
old_state, old_buf, new_state, new_buf);
}
+ /* If we have a better description of the address, show it. */
+ if (xe->XE.Race.descr1[0] != 0)
+ VG_(message)(Vg_UserMsg, " %s", &xe->XE.Race.descr1);
+ if (xe->XE.Race.descr2[0] != 0)
+ VG_(message)(Vg_UserMsg, " %s", &xe->XE.Race.descr2);
+
break; /* case XE_Race */
} /* case XE_Race */
@@ -8801,7 +8824,7 @@
hg_cli__realloc,
HG_CLI__MALLOC_REDZONE_SZB );
- VG_(needs_data_syms)();
+ VG_(needs_var_info)();
//VG_(needs_xml_output) ();