|
From: <sv...@va...> - 2010-04-12 19:51:13
|
Author: sewardj
Date: 2010-04-12 20:51:04 +0100 (Mon, 12 Apr 2010)
New Revision: 11101
Log:
Take account the ABI-mandated stack redzone when changing stack
shvals. AFAIR this has never been handled correctly by Helgrind.
Modified:
trunk/helgrind/hg_main.c
Modified: trunk/helgrind/hg_main.c
===================================================================
--- trunk/helgrind/hg_main.c 2010-04-02 10:27:35 UTC (rev 11100)
+++ trunk/helgrind/hg_main.c 2010-04-12 19:51:04 UTC (rev 11101)
@@ -1501,6 +1501,16 @@
}
static
+void evh__new_mem_stack ( Addr a, SizeT len ) {
+ if (SHOW_EVENTS >= 2)
+ VG_(printf)("evh__new_mem_stack(%p, %lu)\n", (void*)a, len );
+ shadow_mem_make_New( get_current_Thread(),
+ -VG_STACK_REDZONE_SZB + a, len );
+ if (len >= SCE_BIGRANGE_T && (HG_(clo_sanity_flags) & SCE_BIGRANGE))
+ all__sanity_check("evh__new_mem_stack-post");
+}
+
+static
void evh__new_mem_w_tid ( Addr a, SizeT len, ThreadId tid ) {
if (SHOW_EVENTS >= 2)
VG_(printf)("evh__new_mem_w_tid(%p, %lu)\n", (void*)a, len );
@@ -2022,7 +2032,7 @@
/* ------------------------------------------------------- */
-/* -------------- events to do with mutexes -------------- */
+/* -------------- events to do with spinlocks ------------ */
/* ------------------------------------------------------- */
/* All a bit of a kludge. Pretend we're really dealing with ordinary
@@ -4810,7 +4820,7 @@
VG_(track_new_mem_stack_signal)( evh__new_mem_w_tid );
VG_(track_new_mem_brk) ( evh__new_mem_w_tid );
VG_(track_new_mem_mmap) ( evh__new_mem_w_perms );
- VG_(track_new_mem_stack) ( evh__new_mem );
+ VG_(track_new_mem_stack) ( evh__new_mem_stack );
// FIXME: surely this isn't thread-aware
VG_(track_copy_mem_remap) ( evh__copy_mem );
|