Merge branches/OTRACK_BY_INSTRUMENTATION into the trunk. This adds
support to Memcheck for tracking the origin of uninitialised values,
if you use the --track-origins=yes flag.
This currently causes some Memcheck regression tests to fail, because
they now print an extra line of advisory text in their output. This
will be fixed.
The core-tool interface is slightly changed. The version number for
the interface needs to be incremented.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7982 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/exp-drd/drd_main.c b/exp-drd/drd_main.c
index 3b9563a..bdb13b5 100644
--- a/exp-drd/drd_main.c
+++ b/exp-drd/drd_main.c
@@ -497,6 +497,20 @@
}
}
+static void drd_start_using_mem_w_ecu(const Addr a1,
+ const SizeT len,
+ UInt ec_uniq)
+{
+ drd_start_using_mem(a1, len);
+}
+
+static void drd_start_using_mem_w_tid(const Addr a1,
+ const SizeT len,
+ ThreadId tid)
+{
+ drd_start_using_mem(a1, len);
+}
+
static __inline__
void drd_stop_using_mem(const Addr a1, const SizeT len,
const Bool is_stack_mem)
@@ -538,7 +552,8 @@
static void drd_start_using_mem_stack(const Addr a, const SizeT len)
{
thread_set_stack_min(thread_get_running_tid(), a - VG_STACK_REDZONE_SZB);
- drd_start_using_mem(a - VG_STACK_REDZONE_SZB, len + VG_STACK_REDZONE_SZB);
+ drd_start_using_mem(a - VG_STACK_REDZONE_SZB,
+ len + VG_STACK_REDZONE_SZB);
}
/* Called by the core when the stack of a thread shrinks, to indicate that */
@@ -552,7 +567,9 @@
True);
}
-static void drd_start_using_mem_stack_signal(const Addr a, const SizeT len)
+static void drd_start_using_mem_stack_signal(
+ const Addr a, const SizeT len,
+ ThreadId tid_for_whom_the_signal_frame_is_being_constructed)
{
thread_set_vg_running_tid(VG_(get_running_tid)());
drd_start_using_mem(a, len);
@@ -945,6 +962,7 @@
case Ist_IMark:
instrument = VG_(seginfo_sect_kind)(NULL, 0, st->Ist.IMark.addr)
!= Vg_SectPLT;
+ addStmtToIRSB(bb, st);
break;
case Ist_MBE:
@@ -1125,7 +1143,7 @@
VG_(track_pre_mem_read) (drd_pre_mem_read);
VG_(track_pre_mem_read_asciiz) (drd_pre_mem_read_asciiz);
VG_(track_post_mem_write) (drd_post_mem_write);
- VG_(track_new_mem_brk) (drd_start_using_mem);
+ VG_(track_new_mem_brk) (drd_start_using_mem_w_tid);
VG_(track_new_mem_mmap) (drd_start_using_mem_w_perms);
VG_(track_new_mem_stack) (drd_start_using_mem_stack);
VG_(track_new_mem_stack_signal) (drd_start_using_mem_stack_signal);
@@ -1140,7 +1158,7 @@
VG_(track_pre_thread_ll_exit) (drd_thread_finished);
// Other stuff.
- drd_register_malloc_wrappers(drd_start_using_mem,
+ drd_register_malloc_wrappers(drd_start_using_mem_w_ecu,
drd_stop_using_nonstack_mem);
drd_clientreq_init();