|
From: <sv...@va...> - 2008-04-20 10:27:55
|
Author: sewardj
Date: 2008-04-20 11:27:59 +0100 (Sun, 20 Apr 2008)
New Revision: 7896
Log:
In the core/tool interface, duplicate the new_mem_stack functions for
the case with & without origin tracking, and propagate this
everywhere.
Modified:
branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_main.c
branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_stacks.c
branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_tooliface.c
branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_translate.c
branches/OTRACK_BY_INSTRUMENTATION/coregrind/pub_core_tooliface.h
branches/OTRACK_BY_INSTRUMENTATION/exp-drd/drd_main.c
branches/OTRACK_BY_INSTRUMENTATION/helgrind/hg_main.c
branches/OTRACK_BY_INSTRUMENTATION/include/pub_tool_tooliface.h
branches/OTRACK_BY_INSTRUMENTATION/massif/ms_main.c
branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_main.c
branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_translate.c
Modified: branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_main.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_main.c 2008-04-20 08:33:10 UTC (rev 7895)
+++ branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_main.c 2008-04-20 10:27:59 UTC (rev 7896)
@@ -1556,16 +1556,8 @@
// p: setup_client_stack() [for 'VG_(client_arg[cv]']
// p: setup_file_descriptors() [for 'VG_(fd_xxx_limit)']
//--------------------------------------------------------------
- {
- Char* s;
- Bool ok;
- VG_(debugLog)(1, "main", "Initialise the tool part 1 (pre_clo_init)\n");
- (VG_(tool_info).tl_pre_clo_init)();
- ok = VG_(sanity_check_needs)( &s );
- if (!ok) {
- VG_(tool_panic)(s);
- }
- }
+ VG_(debugLog)(1, "main", "Initialise the tool part 1 (pre_clo_init)\n");
+ (VG_(tool_info).tl_pre_clo_init)();
//--------------------------------------------------------------
// If --tool and --help/--help-debug was given, now give the core+tool
@@ -1614,6 +1606,17 @@
//--------------------------------------------------------------
VG_(debugLog)(1, "main", "Initialise the tool part 2 (post_clo_init)\n");
VG_TDICT_CALL(tool_post_clo_init);
+ {
+ /* The tool's "needs" will by now be finalised, since it has no
+ further opportunity to specify them. So now sanity check
+ them. */
+ Char* s;
+ Bool ok;
+ ok = VG_(sanity_check_needs)( &s );
+ if (!ok) {
+ VG_(tool_panic)(s);
+ }
+ }
//--------------------------------------------------------------
// Initialise translation table and translation cache
Modified: branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_stacks.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_stacks.c 2008-04-20 08:33:10 UTC (rev 7895)
+++ branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_stacks.c 2008-04-20 10:27:59 UTC (rev 7896)
@@ -315,7 +315,8 @@
"will not be shown.");
}
} else if (delta < 0) {
- VG_TRACK( new_mem_stack, new_SP, -delta, otag );
+ VG_TRACK( new_mem_stack_w_otag, new_SP, -delta, otag );
+ VG_TRACK( new_mem_stack, new_SP, -delta );
} else if (delta > 0) {
VG_TRACK( die_mem_stack, old_SP, delta );
Modified: branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_tooliface.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_tooliface.c 2008-04-20 08:33:10 UTC (rev 7895)
+++ branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_tooliface.c 2008-04-20 10:27:59 UTC (rev 7896)
@@ -100,9 +100,13 @@
/* static */
Bool VG_(sanity_check_needs)(Char** failmsg)
{
+ Bool any_new_mem_stack_N, any_new_mem_stack_N_w_otag;
+ Bool any_new_mem_stack_w_conflicting_otags;
+ Bool any_die_mem_stack_N;
+
#define CHECK_NOT(var, value) \
if ((var)==(value)) { \
- *failmsg = "Tool error: '" #var "' not initialised\n"; \
+ *failmsg = "Tool error: '" #var "' not initialised\n"; \
return False; \
}
@@ -113,35 +117,82 @@
CHECK_NOT(VG_(details).copyright_author, NULL);
CHECK_NOT(VG_(details).bug_reports_to, NULL);
- if ( (VG_(tdict).track_new_mem_stack_4 ||
- VG_(tdict).track_new_mem_stack_8 ||
- VG_(tdict).track_new_mem_stack_12 ||
- VG_(tdict).track_new_mem_stack_16 ||
- VG_(tdict).track_new_mem_stack_32 ||
- VG_(tdict).track_new_mem_stack_112 ||
- VG_(tdict).track_new_mem_stack_128 ||
- VG_(tdict).track_new_mem_stack_144 ||
- VG_(tdict).track_new_mem_stack_160 ) &&
- ! VG_(tdict).track_new_mem_stack)
- {
- *failmsg = "Tool error: one of the specialised 'new_mem_stack_n'\n"
+ /* Check that new_mem_stack is defined if any new_mem_stack_N
+ are. */
+ any_new_mem_stack_N
+ = VG_(tdict).track_new_mem_stack_4 ||
+ VG_(tdict).track_new_mem_stack_8 ||
+ VG_(tdict).track_new_mem_stack_12 ||
+ VG_(tdict).track_new_mem_stack_16 ||
+ VG_(tdict).track_new_mem_stack_32 ||
+ VG_(tdict).track_new_mem_stack_112 ||
+ VG_(tdict).track_new_mem_stack_128 ||
+ VG_(tdict).track_new_mem_stack_144 ||
+ VG_(tdict).track_new_mem_stack_160;
+
+ if (any_new_mem_stack_N && ! VG_(tdict).track_new_mem_stack) {
+ *failmsg = "Tool error: one of the specialised 'new_mem_stack_N'\n"
" events tracked, but not the generic 'new_mem_stack' one.\n"
" 'new_mem_stack' should be defined\n";
return False;
}
- if ( (VG_(tdict).track_die_mem_stack_4 ||
- VG_(tdict).track_die_mem_stack_8 ||
- VG_(tdict).track_die_mem_stack_12 ||
- VG_(tdict).track_die_mem_stack_16 ||
- VG_(tdict).track_die_mem_stack_32 ||
- VG_(tdict).track_die_mem_stack_112 ||
- VG_(tdict).track_die_mem_stack_128 ||
- VG_(tdict).track_die_mem_stack_144 ||
- VG_(tdict).track_die_mem_stack_160 ) &&
- ! VG_(tdict).track_die_mem_stack)
- {
- *failmsg = "Tool error: one of the specialised 'die_mem_stack_n'\n"
+ /* Check that new_mem_stack_w_otag is defined if any
+ new_mem_stack_N_w_otag are. */
+ any_new_mem_stack_N_w_otag
+ = VG_(tdict).track_new_mem_stack_4_w_otag ||
+ VG_(tdict).track_new_mem_stack_8_w_otag ||
+ VG_(tdict).track_new_mem_stack_12_w_otag ||
+ VG_(tdict).track_new_mem_stack_16_w_otag ||
+ VG_(tdict).track_new_mem_stack_32_w_otag ||
+ VG_(tdict).track_new_mem_stack_112_w_otag ||
+ VG_(tdict).track_new_mem_stack_128_w_otag ||
+ VG_(tdict).track_new_mem_stack_144_w_otag ||
+ VG_(tdict).track_new_mem_stack_160_w_otag;
+
+ if (any_new_mem_stack_N_w_otag && ! VG_(tdict).track_new_mem_stack_w_otag) {
+ *failmsg = "Tool error: one of the specialised 'new_mem_stack_N_w_otag'\n"
+ " events tracked, but not the generic 'new_mem_stack_w_otag' one.\n"
+ " 'new_mem_stack_w_otag' should be defined\n";
+ return False;
+ }
+
+ /* Check that in no cases are both with- and without-otag versions of the
+ same new_mem_stack_ function defined. */
+ any_new_mem_stack_w_conflicting_otags
+ = (VG_(tdict).track_new_mem_stack_4 && VG_(tdict).track_new_mem_stack_4_w_otag) ||
+ (VG_(tdict).track_new_mem_stack_8 && VG_(tdict).track_new_mem_stack_8_w_otag) ||
+ (VG_(tdict).track_new_mem_stack_12 && VG_(tdict).track_new_mem_stack_12_w_otag) ||
+ (VG_(tdict).track_new_mem_stack_16 && VG_(tdict).track_new_mem_stack_16_w_otag) ||
+ (VG_(tdict).track_new_mem_stack_32 && VG_(tdict).track_new_mem_stack_32_w_otag) ||
+ (VG_(tdict).track_new_mem_stack_112 && VG_(tdict).track_new_mem_stack_112_w_otag) ||
+ (VG_(tdict).track_new_mem_stack_128 && VG_(tdict).track_new_mem_stack_128_w_otag) ||
+ (VG_(tdict).track_new_mem_stack_144 && VG_(tdict).track_new_mem_stack_144_w_otag) ||
+ (VG_(tdict).track_new_mem_stack_160 && VG_(tdict).track_new_mem_stack_160_w_otag) ||
+ (VG_(tdict).track_new_mem_stack && VG_(tdict).track_new_mem_stack_w_otag);
+
+ if (any_new_mem_stack_w_conflicting_otags) {
+ *failmsg = "Tool error: tool supplies both a 'new_mem_stack_N' and a\n"
+ " 'new_mem_stack_N_w_otag' function for some N (or none),\n"
+ " but you can only have one or the other (not both)\n";
+ return False;
+ }
+
+ /* Check that die_mem_stack is defined if any die_mem_stack_N
+ are. */
+ any_die_mem_stack_N
+ = VG_(tdict).track_die_mem_stack_4 ||
+ VG_(tdict).track_die_mem_stack_8 ||
+ VG_(tdict).track_die_mem_stack_12 ||
+ VG_(tdict).track_die_mem_stack_16 ||
+ VG_(tdict).track_die_mem_stack_32 ||
+ VG_(tdict).track_die_mem_stack_112 ||
+ VG_(tdict).track_die_mem_stack_128 ||
+ VG_(tdict).track_die_mem_stack_144 ||
+ VG_(tdict).track_die_mem_stack_160;
+
+ if (any_die_mem_stack_N && ! VG_(tdict).track_die_mem_stack) {
+ *failmsg = "Tool error: one of the specialised 'die_mem_stack_N'\n"
" events tracked, but not the generic 'die_mem_stack' one.\n"
" 'die_mem_stack' should be defined\n";
return False;
@@ -300,17 +351,28 @@
DEF0(track_die_mem_brk, Addr, SizeT)
DEF0(track_die_mem_munmap, Addr, SizeT)
-DEF2(track_new_mem_stack_4, Addr, UInt)
-DEF2(track_new_mem_stack_8, Addr, UInt)
-DEF2(track_new_mem_stack_12, Addr, UInt)
-DEF2(track_new_mem_stack_16, Addr, UInt)
-DEF2(track_new_mem_stack_32, Addr, UInt)
-DEF2(track_new_mem_stack_112, Addr, UInt)
-DEF2(track_new_mem_stack_128, Addr, UInt)
-DEF2(track_new_mem_stack_144, Addr, UInt)
-DEF2(track_new_mem_stack_160, Addr, UInt)
-DEF0(track_new_mem_stack, Addr, SizeT, UInt)
+DEF2(track_new_mem_stack_4_w_otag, Addr, UInt)
+DEF2(track_new_mem_stack_8_w_otag, Addr, UInt)
+DEF2(track_new_mem_stack_12_w_otag, Addr, UInt)
+DEF2(track_new_mem_stack_16_w_otag, Addr, UInt)
+DEF2(track_new_mem_stack_32_w_otag, Addr, UInt)
+DEF2(track_new_mem_stack_112_w_otag, Addr, UInt)
+DEF2(track_new_mem_stack_128_w_otag, Addr, UInt)
+DEF2(track_new_mem_stack_144_w_otag, Addr, UInt)
+DEF2(track_new_mem_stack_160_w_otag, Addr, UInt)
+DEF0(track_new_mem_stack_w_otag, Addr, SizeT, UInt)
+DEF1(track_new_mem_stack_4, Addr)
+DEF1(track_new_mem_stack_8, Addr)
+DEF1(track_new_mem_stack_12, Addr)
+DEF1(track_new_mem_stack_16, Addr)
+DEF1(track_new_mem_stack_32, Addr)
+DEF1(track_new_mem_stack_112, Addr)
+DEF1(track_new_mem_stack_128, Addr)
+DEF1(track_new_mem_stack_144, Addr)
+DEF1(track_new_mem_stack_160, Addr)
+DEF0(track_new_mem_stack, Addr, SizeT)
+
DEF1(track_die_mem_stack_4, Addr)
DEF1(track_die_mem_stack_8, Addr)
DEF1(track_die_mem_stack_12, Addr)
Modified: branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_translate.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_translate.c 2008-04-20 08:33:10 UTC (rev 7895)
+++ branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_translate.c 2008-04-20 10:27:59 UTC (rev 7896)
@@ -275,20 +275,34 @@
# define DO_NEW(syze, tmpp) \
do { \
+ Bool vanilla, w_otag; \
vg_assert(curr_IP_known); \
- if (!VG_(tdict).track_new_mem_stack_##syze) \
+ vanilla = NULL != VG_(tdict).track_new_mem_stack_##syze; \
+ w_otag = NULL != VG_(tdict).track_new_mem_stack_##syze##_w_otag; \
+ vg_assert(!(vanilla && w_otag)); /* can't have both */ \
+ if (!(vanilla || w_otag)) \
goto generic; \
\
/* I don't know if it's really necessary to say that the */ \
/* call reads the stack pointer. But anyway, we do. */ \
- dcall = unsafeIRDirty_0_N( \
- 2/*regparms*/, \
- "track_new_mem_stack_" #syze, \
- VG_(fnptr_to_fnentry)( \
- VG_(tdict).track_new_mem_stack_##syze ), \
- mkIRExprVec_2(IRExpr_RdTmp(tmpp), \
- mk_otag_Expr(curr_IP)) \
- ); \
+ if (w_otag) { \
+ dcall = unsafeIRDirty_0_N( \
+ 2/*regparms*/, \
+ "track_new_mem_stack_" #syze "_w_otag", \
+ VG_(fnptr_to_fnentry)( \
+ VG_(tdict).track_new_mem_stack_##syze##_w_otag ), \
+ mkIRExprVec_2(IRExpr_RdTmp(tmpp), \
+ mk_otag_Expr(curr_IP)) \
+ ); \
+ } else { \
+ dcall = unsafeIRDirty_0_N( \
+ 1/*regparms*/, \
+ "track_new_mem_stack_" #syze , \
+ VG_(fnptr_to_fnentry)( \
+ VG_(tdict).track_new_mem_stack_##syze ), \
+ mkIRExprVec_1(IRExpr_RdTmp(tmpp)) \
+ ); \
+ } \
dcall->nFxState = 1; \
dcall->fxState[0].fx = Ifx_Read; \
dcall->fxState[0].offset = layout->offset_SP; \
@@ -456,14 +470,15 @@
we must assume it can be anything allowed in flat IR (tmp
or const).
*/
- IRTemp old_SP;
+ IRTemp old_SP;
n_SP_updates_generic_unknown++;
// Nb: if all is well, this generic case will typically be
// called something like every 1000th SP update. If it's more than
// that, the above code may be missing some cases.
generic:
- /* Pass both the old and new SP values to this helper. */
+ /* Pass both the old and new SP values to this helper. Also,
+ pass an origin tag, even if it isn't needed. */
old_SP = newIRTemp(bb->tyenv, typeof_SP);
addStmtToIRSB(
bb,
@@ -517,7 +532,7 @@
VG_(fnptr_to_fnentry)( &VG_(unknown_SP_update) ),
mkIRExprVec_3( IRExpr_RdTmp(old_SP),
IRExpr_RdTmp(new_SP),
- mk_otag_Expr(curr_IP))
+ mk_otag_Expr(curr_IP) )
);
addStmtToIRSB( bb, IRStmt_Dirty(dcall) );
/* 5 */
Modified: branches/OTRACK_BY_INSTRUMENTATION/coregrind/pub_core_tooliface.h
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/coregrind/pub_core_tooliface.h 2008-04-20 08:33:10 UTC (rev 7895)
+++ branches/OTRACK_BY_INSTRUMENTATION/coregrind/pub_core_tooliface.h 2008-04-20 10:27:59 UTC (rev 7896)
@@ -172,17 +172,28 @@
void (*track_die_mem_brk) (Addr, SizeT);
void (*track_die_mem_munmap) (Addr, SizeT);
- void VG_REGPARM(2) (*track_new_mem_stack_4) (Addr,UInt);
- void VG_REGPARM(2) (*track_new_mem_stack_8) (Addr,UInt);
- void VG_REGPARM(2) (*track_new_mem_stack_12) (Addr,UInt);
- void VG_REGPARM(2) (*track_new_mem_stack_16) (Addr,UInt);
- void VG_REGPARM(2) (*track_new_mem_stack_32) (Addr,UInt);
- void VG_REGPARM(2) (*track_new_mem_stack_112)(Addr,UInt);
- void VG_REGPARM(2) (*track_new_mem_stack_128)(Addr,UInt);
- void VG_REGPARM(2) (*track_new_mem_stack_144)(Addr,UInt);
- void VG_REGPARM(2) (*track_new_mem_stack_160)(Addr,UInt);
- void (*track_new_mem_stack)(Addr,SizeT,UInt);
+ void VG_REGPARM(2) (*track_new_mem_stack_4_w_otag) (Addr,UInt);
+ void VG_REGPARM(2) (*track_new_mem_stack_8_w_otag) (Addr,UInt);
+ void VG_REGPARM(2) (*track_new_mem_stack_12_w_otag) (Addr,UInt);
+ void VG_REGPARM(2) (*track_new_mem_stack_16_w_otag) (Addr,UInt);
+ void VG_REGPARM(2) (*track_new_mem_stack_32_w_otag) (Addr,UInt);
+ void VG_REGPARM(2) (*track_new_mem_stack_112_w_otag)(Addr,UInt);
+ void VG_REGPARM(2) (*track_new_mem_stack_128_w_otag)(Addr,UInt);
+ void VG_REGPARM(2) (*track_new_mem_stack_144_w_otag)(Addr,UInt);
+ void VG_REGPARM(2) (*track_new_mem_stack_160_w_otag)(Addr,UInt);
+ void (*track_new_mem_stack_w_otag)(Addr,SizeT,UInt);
+ void VG_REGPARM(1) (*track_new_mem_stack_4) (Addr);
+ void VG_REGPARM(1) (*track_new_mem_stack_8) (Addr);
+ void VG_REGPARM(1) (*track_new_mem_stack_12) (Addr);
+ void VG_REGPARM(1) (*track_new_mem_stack_16) (Addr);
+ void VG_REGPARM(1) (*track_new_mem_stack_32) (Addr);
+ void VG_REGPARM(1) (*track_new_mem_stack_112)(Addr);
+ void VG_REGPARM(1) (*track_new_mem_stack_128)(Addr);
+ void VG_REGPARM(1) (*track_new_mem_stack_144)(Addr);
+ void VG_REGPARM(1) (*track_new_mem_stack_160)(Addr);
+ void (*track_new_mem_stack)(Addr,SizeT);
+
void VG_REGPARM(1) (*track_die_mem_stack_4) (Addr);
void VG_REGPARM(1) (*track_die_mem_stack_8) (Addr);
void VG_REGPARM(1) (*track_die_mem_stack_12) (Addr);
Modified: branches/OTRACK_BY_INSTRUMENTATION/exp-drd/drd_main.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/exp-drd/drd_main.c 2008-04-20 08:33:10 UTC (rev 7895)
+++ branches/OTRACK_BY_INSTRUMENTATION/exp-drd/drd_main.c 2008-04-20 10:27:59 UTC (rev 7896)
@@ -511,12 +511,11 @@
/* Called by the core when the stack of a thread grows, to indicate that */
/* the addresses in range [ a, a + len [ may now be used by the client. */
/* Assumption: stacks grow downward. */
-static void drd_start_using_mem_stack(const Addr a, const SizeT len,
- UInt ec_uniq)
+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_w_otag(a - VG_STACK_REDZONE_SZB,
- len + VG_STACK_REDZONE_SZB, ec_uniq);
+ 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 */
Modified: branches/OTRACK_BY_INSTRUMENTATION/helgrind/hg_main.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/helgrind/hg_main.c 2008-04-20 08:33:10 UTC (rev 7895)
+++ branches/OTRACK_BY_INSTRUMENTATION/helgrind/hg_main.c 2008-04-20 10:27:59 UTC (rev 7896)
@@ -5416,12 +5416,12 @@
}
static
-void evh__new_mem_w_otag ( Addr a, SizeT len, UInt ec_uniq ) {
+void evh__new_mem ( Addr a, SizeT len ) {
if (SHOW_EVENTS >= 2)
- VG_(printf)("evh__new_mem_w_otag(%p, %lu)\n", (void*)a, len );
+ VG_(printf)("evh__new_mem(%p, %lu)\n", (void*)a, len );
shadow_mem_make_New( get_current_Thread(), a, len );
if (len >= SCE_BIGRANGE_T && (clo_sanity_flags & SCE_BIGRANGE))
- all__sanity_check("evh__new_mem_w_otag-post");
+ all__sanity_check("evh__new_mem-post");
}
static
@@ -7524,7 +7524,7 @@
if (args[2] > 0) { /* length */
evh__die_mem(args[1], args[2]);
/* and then set it to New */
- evh__new_mem_w_otag(args[1], args[2], 0/*ec_uniq*/);
+ evh__new_mem(args[1], args[2]);
}
break;
@@ -8833,7 +8833,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_w_otag );
+ VG_(track_new_mem_stack) ( evh__new_mem );
// FIXME: surely this isn't thread-aware
VG_(track_copy_mem_remap) ( shadow_mem_copy_range );
Modified: branches/OTRACK_BY_INSTRUMENTATION/include/pub_tool_tooliface.h
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/include/pub_tool_tooliface.h 2008-04-20 08:33:10 UTC (rev 7895)
+++ branches/OTRACK_BY_INSTRUMENTATION/include/pub_tool_tooliface.h 2008-04-20 10:27:59 UTC (rev 7896)
@@ -497,19 +497,39 @@
specialised cases are defined, the general case must be defined too.
Nb: all the specialised ones must use the VG_REGPARM(n) attribute.
- */
-void VG_(track_new_mem_stack_4) (VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
-void VG_(track_new_mem_stack_8) (VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
-void VG_(track_new_mem_stack_12) (VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
-void VG_(track_new_mem_stack_16) (VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
-void VG_(track_new_mem_stack_32) (VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
-void VG_(track_new_mem_stack_112)(VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
-void VG_(track_new_mem_stack_128)(VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
-void VG_(track_new_mem_stack_144)(VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
-void VG_(track_new_mem_stack_160)(VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
-void VG_(track_new_mem_stack) (void(*f)(Addr a, SizeT len,
- UInt otag));
+ For the _new functions, a tool may specify with with-otag or
+ without-otag version for each size, but not both. If the with-otag
+ version is supplied, then the core will arrange to pass, as the
+ otag argument, a 32-bit int which uniquely identifies the
+ instruction moving the stack pointer down.
+ VG_(get_ExeContext_from_uniq) can then be used to retrieve the
+ associated depth-1 ExeContext for the location. All this
+ complexity is provided to support origin tracking in Memcheck.
+*/
+void VG_(track_new_mem_stack_4_w_otag) (VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
+void VG_(track_new_mem_stack_8_w_otag) (VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
+void VG_(track_new_mem_stack_12_w_otag) (VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
+void VG_(track_new_mem_stack_16_w_otag) (VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
+void VG_(track_new_mem_stack_32_w_otag) (VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
+void VG_(track_new_mem_stack_112_w_otag)(VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
+void VG_(track_new_mem_stack_128_w_otag)(VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
+void VG_(track_new_mem_stack_144_w_otag)(VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
+void VG_(track_new_mem_stack_160_w_otag)(VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
+void VG_(track_new_mem_stack_w_otag) (void(*f)(Addr a, SizeT len,
+ UInt otag));
+
+void VG_(track_new_mem_stack_4) (VG_REGPARM(1) void(*f)(Addr new_ESP));
+void VG_(track_new_mem_stack_8) (VG_REGPARM(1) void(*f)(Addr new_ESP));
+void VG_(track_new_mem_stack_12) (VG_REGPARM(1) void(*f)(Addr new_ESP));
+void VG_(track_new_mem_stack_16) (VG_REGPARM(1) void(*f)(Addr new_ESP));
+void VG_(track_new_mem_stack_32) (VG_REGPARM(1) void(*f)(Addr new_ESP));
+void VG_(track_new_mem_stack_112)(VG_REGPARM(1) void(*f)(Addr new_ESP));
+void VG_(track_new_mem_stack_128)(VG_REGPARM(1) void(*f)(Addr new_ESP));
+void VG_(track_new_mem_stack_144)(VG_REGPARM(1) void(*f)(Addr new_ESP));
+void VG_(track_new_mem_stack_160)(VG_REGPARM(1) void(*f)(Addr new_ESP));
+void VG_(track_new_mem_stack) (void(*f)(Addr a, SizeT len));
+
void VG_(track_die_mem_stack_4) (VG_REGPARM(1) void(*f)(Addr die_ESP));
void VG_(track_die_mem_stack_8) (VG_REGPARM(1) void(*f)(Addr die_ESP));
void VG_(track_die_mem_stack_12) (VG_REGPARM(1) void(*f)(Addr die_ESP));
Modified: branches/OTRACK_BY_INSTRUMENTATION/massif/ms_main.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/massif/ms_main.c 2008-04-20 08:33:10 UTC (rev 7895)
+++ branches/OTRACK_BY_INSTRUMENTATION/massif/ms_main.c 2008-04-20 10:27:59 UTC (rev 7896)
@@ -1722,7 +1722,7 @@
}
}
-static void new_mem_stack(Addr a, SizeT len, UInt ec_uniq)
+static void new_mem_stack(Addr a, SizeT len)
{
new_mem_stack_2(a, len, "stk-new");
}
@@ -1732,7 +1732,7 @@
die_mem_stack_2(a, len, "stk-die");
}
-static void new_mem_stack_signal(Addr a, SizeT len, UInt ec_uniq)
+static void new_mem_stack_signal(Addr a, SizeT len, ThreadId tid)
{
new_mem_stack_2(a, len, "sig-new");
}
Modified: branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_main.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_main.c 2008-04-20 08:33:10 UTC (rev 7895)
+++ branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_main.c 2008-04-20 10:27:59 UTC (rev 7896)
@@ -1561,6 +1561,13 @@
ocache_sarp_Clear_Origins ( a, len );
}
+static void make_mem_undefined ( Addr a, SizeT len )
+{
+ PROF_EVENT(41, "make_mem_undefined");
+ DEBUG("make_mem_undefined(%p, %lu)\n", a, len);
+ set_address_range_perms ( a, len, VA_BITS16_UNDEFINED, SM_DIST_UNDEFINED );
+}
+
void MC_(make_mem_undefined_w_otag) ( Addr a, SizeT len, UInt otag )
{
PROF_EVENT(41, "MC_(make_mem_undefined)");
@@ -1835,11 +1842,34 @@
return find_OCacheLine_SLOW( a );
}
+static inline void set_aligned_word64_Origin_to_undef ( Addr a, UInt otag )
+{
+ //// BEGIN inlined, specialised version of MC_(helperc_b_store8)
+ //// Set the origins for a+0 .. a+7
+ { OCacheLine* line;
+ UWord lineoff = (a % (OC_W32S_PER_LINE * 4)) / 4;
+ tl_assert(lineoff >= 0
+ && lineoff < OC_W32S_PER_LINE -1/*'cos 8-aligned*/);
+ line = find_OCacheLine( a );
+ line->descr[lineoff+0] = 0xF;
+ line->descr[lineoff+1] = 0xF;
+ line->w32[lineoff+0] = otag;
+ line->w32[lineoff+1] = otag;
+ }
+ //// END inlined, specialised version of MC_(helperc_b_store8)
+}
-/* --- Fast case permission setters, for dealing with stacks. --- */
-static INLINE
-void make_aligned_word32_undefined ( Addr a, UInt otag )
+/*------------------------------------------------------------*/
+/*--- Aligned fast case permission setters, ---*/
+/*--- for dealing with stacks ---*/
+/*------------------------------------------------------------*/
+
+/*--------------------- 32-bit ---------------------*/
+
+/* Nb: by "aligned" here we mean 4-byte aligned */
+
+static INLINE void make_aligned_word32_undefined ( Addr a )
{
UWord sm_off;
SecMap* sm;
@@ -1847,21 +1877,26 @@
PROF_EVENT(300, "make_aligned_word32_undefined");
#ifndef PERF_FAST_STACK2
- MC_(make_mem_undefined)(a, 4);
+ make_mem_undefined(a, 4);
#else
if (UNLIKELY(a > MAX_PRIMARY_ADDRESS)) {
PROF_EVENT(301, "make_aligned_word32_undefined-slow1");
- MC_(make_mem_undefined_w_otag)(a, 4, otag);
+ make_mem_undefined(a, 4);
return;
}
sm = get_secmap_for_writing_low(a);
sm_off = SM_OFF(a);
sm->vabits8[sm_off] = VA_BITS8_UNDEFINED;
+#endif
+}
+static INLINE
+void make_aligned_word32_undefined_w_otag ( Addr a, UInt otag )
+{
+ make_aligned_word32_undefined(a);
//// BEGIN inlined, specialised version of MC_(helperc_b_store4)
//// Set the origins for a+0 .. a+3
- if (UNLIKELY( MC_(clo_mc_level) == 3 ))
{ OCacheLine* line;
UWord lineoff = (a % (OC_W32S_PER_LINE * 4)) / 4;
tl_assert(lineoff >= 0 && lineoff < OC_W32S_PER_LINE);
@@ -1870,10 +1905,8 @@
line->w32[lineoff] = otag;
}
//// END inlined, specialised version of MC_(helperc_b_store4)
-#endif
}
-
static INLINE
void make_aligned_word32_noaccess ( Addr a )
{
@@ -1896,22 +1929,23 @@
sm->vabits8[sm_off] = VA_BITS8_NOACCESS;
//// BEGIN inlined, specialised version of MC_(helperc_b_store4)
- //// Set the origins for a+0 .. a+3. FIXME: is this necessary?
- if (UNLIKELY( MC_(clo_mc_level) == 3 ))
- { OCacheLine* line;
- UWord lineoff = (a % (OC_W32S_PER_LINE * 4)) / 4;
- tl_assert(lineoff >= 0 && lineoff < OC_W32S_PER_LINE);
- line = find_OCacheLine( a );
- line->descr[lineoff] = 0;
+ //// Set the origins for a+0 .. a+3.
+ if (UNLIKELY( MC_(clo_mc_level) == 3 )) {
+ OCacheLine* line;
+ UWord lineoff = (a % (OC_W32S_PER_LINE * 4)) / 4;
+ tl_assert(lineoff >= 0 && lineoff < OC_W32S_PER_LINE);
+ line = find_OCacheLine( a );
+ line->descr[lineoff] = 0;
}
//// END inlined, specialised version of MC_(helperc_b_store4)
#endif
}
+/*--------------------- 64-bit ---------------------*/
/* Nb: by "aligned" here we mean 8-byte aligned */
-static INLINE
-void make_aligned_word64_undefined ( Addr a, UInt otag )
+
+static INLINE void make_aligned_word64_undefined ( Addr a )
{
UWord sm_off16;
SecMap* sm;
@@ -1923,17 +1957,22 @@
#else
if (UNLIKELY(a > MAX_PRIMARY_ADDRESS)) {
PROF_EVENT(321, "make_aligned_word64_undefined-slow1");
- MC_(make_mem_undefined_w_otag)(a, 8, otag);
+ make_mem_undefined(a, 8);
return;
}
sm = get_secmap_for_writing_low(a);
sm_off16 = SM_OFF_16(a);
((UShort*)(sm->vabits8))[sm_off16] = VA_BITS16_UNDEFINED;
+#endif
+}
+static INLINE
+void make_aligned_word64_undefined_w_otag ( Addr a, UInt otag )
+{
+ make_aligned_word64_undefined(a);
//// BEGIN inlined, specialised version of MC_(helperc_b_store8)
//// Set the origins for a+0 .. a+7
- if (UNLIKELY( MC_(clo_mc_level) == 3 ))
{ OCacheLine* line;
UWord lineoff = (a % (OC_W32S_PER_LINE * 4)) / 4;
tl_assert(lineoff >= 0
@@ -1945,10 +1984,8 @@
line->w32[lineoff+1] = otag;
}
//// END inlined, specialised version of MC_(helperc_b_store8)
-#endif
}
-
static INLINE
void make_aligned_word64_noaccess ( Addr a )
{
@@ -1971,52 +2008,47 @@
((UShort*)(sm->vabits8))[sm_off16] = VA_BITS16_NOACCESS;
//// BEGIN inlined, specialised version of MC_(helperc_b_store8)
- //// Clear the origins for a+0 .. a+7. FIXME: is this necessary?
- if (UNLIKELY( MC_(clo_mc_level) == 3 ))
- { OCacheLine* line;
- UWord lineoff = (a % (OC_W32S_PER_LINE * 4)) / 4;
- tl_assert(lineoff >= 0
- && lineoff < OC_W32S_PER_LINE -1/*'cos 8-aligned*/);
- line = find_OCacheLine( a );
- line->descr[lineoff+0] = 0;
- line->descr[lineoff+1] = 0;
+ //// Clear the origins for a+0 .. a+7.
+ if (UNLIKELY( MC_(clo_mc_level) == 3 )) {
+ OCacheLine* line;
+ UWord lineoff = (a % (OC_W32S_PER_LINE * 4)) / 4;
+ tl_assert(lineoff >= 0
+ && lineoff < OC_W32S_PER_LINE -1/*'cos 8-aligned*/);
+ line = find_OCacheLine( a );
+ line->descr[lineoff+0] = 0;
+ line->descr[lineoff+1] = 0;
}
//// END inlined, specialised version of MC_(helperc_b_store8)
#endif
}
-static inline void set_aligned_word64_Origin_to_undef ( Addr a, UInt otag )
-{
- //// BEGIN inlined, specialised version of MC_(helperc_b_store8)
- //// Set the origins for a+0 .. a+7
- { OCacheLine* line;
- UWord lineoff = (a % (OC_W32S_PER_LINE * 4)) / 4;
- tl_assert(lineoff >= 0
- && lineoff < OC_W32S_PER_LINE -1/*'cos 8-aligned*/);
- line = find_OCacheLine( a );
- line->descr[lineoff+0] = 0xF;
- line->descr[lineoff+1] = 0xF;
- line->w32[lineoff+0] = otag;
- line->w32[lineoff+1] = otag;
- }
- //// END inlined, specialised version of MC_(helperc_b_store8)
-}
-
/*------------------------------------------------------------*/
/*--- Stack pointer adjustment ---*/
/*------------------------------------------------------------*/
-static void VG_REGPARM(2) mc_new_mem_stack_4(Addr new_SP, UInt otag)
+/*--------------- adjustment by 4 bytes ---------------*/
+
+static void VG_REGPARM(2) mc_new_mem_stack_4_w_otag(Addr new_SP, UInt otag)
{
PROF_EVENT(110, "new_mem_stack_4");
if (VG_IS_4_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
- make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP, otag );
+ make_aligned_word32_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP, otag );
} else {
MC_(make_mem_undefined_w_otag) ( -VG_STACK_REDZONE_SZB + new_SP, 4, otag );
}
}
+static void VG_REGPARM(1) mc_new_mem_stack_4(Addr new_SP)
+{
+ PROF_EVENT(110, "new_mem_stack_4");
+ if (VG_IS_4_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
+ make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP );
+ } else {
+ make_mem_undefined ( -VG_STACK_REDZONE_SZB + new_SP, 4 );
+ }
+}
+
static void VG_REGPARM(1) mc_die_mem_stack_4(Addr new_SP)
{
PROF_EVENT(120, "die_mem_stack_4");
@@ -2027,19 +2059,34 @@
}
}
-static void VG_REGPARM(2) mc_new_mem_stack_8(Addr new_SP, UInt otag)
+/*--------------- adjustment by 8 bytes ---------------*/
+
+static void VG_REGPARM(2) mc_new_mem_stack_8_w_otag(Addr new_SP, UInt otag)
{
PROF_EVENT(111, "new_mem_stack_8");
if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP, otag );
} else if (VG_IS_4_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
- make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP , otag );
- make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP+4, otag );
+ make_aligned_word32_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP , otag );
+ make_aligned_word32_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+4, otag );
} else {
MC_(make_mem_undefined_w_otag) ( -VG_STACK_REDZONE_SZB + new_SP, 8, otag );
}
}
+static void VG_REGPARM(1) mc_new_mem_stack_8(Addr new_SP)
+{
+ PROF_EVENT(111, "new_mem_stack_8");
+ if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP );
+ } else if (VG_IS_4_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
+ make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP );
+ make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP+4 );
+ } else {
+ make_mem_undefined ( -VG_STACK_REDZONE_SZB + new_SP, 8 );
+ }
+}
+
static void VG_REGPARM(1) mc_die_mem_stack_8(Addr new_SP)
{
PROF_EVENT(121, "die_mem_stack_8");
@@ -2053,23 +2100,42 @@
}
}
-static void VG_REGPARM(2) mc_new_mem_stack_12(Addr new_SP, UInt otag)
+/*--------------- adjustment by 12 bytes ---------------*/
+
+static void VG_REGPARM(2) mc_new_mem_stack_12_w_otag(Addr new_SP, UInt otag)
{
PROF_EVENT(112, "new_mem_stack_12");
if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP , otag );
- make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP , otag );
+ make_aligned_word32_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+8, otag );
} else if (VG_IS_4_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
/* from previous test we don't have 8-alignment at offset +0,
hence must have 8 alignment at offsets +4/-4. Hence safe to
do 4 at +0 and then 8 at +4/. */
- make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP , otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+4, otag );
+ make_aligned_word32_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP , otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+4, otag );
} else {
MC_(make_mem_undefined_w_otag) ( -VG_STACK_REDZONE_SZB + new_SP, 12, otag );
}
}
+static void VG_REGPARM(1) mc_new_mem_stack_12(Addr new_SP)
+{
+ PROF_EVENT(112, "new_mem_stack_12");
+ if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP );
+ make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8 );
+ } else if (VG_IS_4_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
+ /* from previous test we don't have 8-alignment at offset +0,
+ hence must have 8 alignment at offsets +4/-4. Hence safe to
+ do 4 at +0 and then 8 at +4/. */
+ make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+4 );
+ } else {
+ make_mem_undefined ( -VG_STACK_REDZONE_SZB + new_SP, 12 );
+ }
+}
+
static void VG_REGPARM(1) mc_die_mem_stack_12(Addr new_SP)
{
PROF_EVENT(122, "die_mem_stack_12");
@@ -2090,24 +2156,44 @@
}
}
-static void VG_REGPARM(2) mc_new_mem_stack_16(Addr new_SP, UInt otag)
+/*--------------- adjustment by 16 bytes ---------------*/
+
+static void VG_REGPARM(2) mc_new_mem_stack_16_w_otag(Addr new_SP, UInt otag)
{
PROF_EVENT(113, "new_mem_stack_16");
if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
/* Have 8-alignment at +0, hence do 8 at +0 and 8 at +8. */
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP , otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP , otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+8, otag );
} else if (VG_IS_4_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
/* Have 4 alignment at +0 but not 8; hence 8 must be at +4.
Hence do 4 at +0, 8 at +4, 4 at +12. */
- make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP , otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+4 , otag );
- make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP+12, otag );
+ make_aligned_word32_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP , otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+4 , otag );
+ make_aligned_word32_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+12, otag );
} else {
MC_(make_mem_undefined_w_otag) ( -VG_STACK_REDZONE_SZB + new_SP, 16, otag );
}
}
+static void VG_REGPARM(1) mc_new_mem_stack_16(Addr new_SP)
+{
+ PROF_EVENT(113, "new_mem_stack_16");
+ if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
+ /* Have 8-alignment at +0, hence do 8 at +0 and 8 at +8. */
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8 );
+ } else if (VG_IS_4_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
+ /* Have 4 alignment at +0 but not 8; hence 8 must be at +4.
+ Hence do 4 at +0, 8 at +4, 4 at +12. */
+ make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+4 );
+ make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP+12 );
+ } else {
+ make_mem_undefined ( -VG_STACK_REDZONE_SZB + new_SP, 16 );
+ }
+}
+
static void VG_REGPARM(1) mc_die_mem_stack_16(Addr new_SP)
{
PROF_EVENT(123, "die_mem_stack_16");
@@ -2125,28 +2211,52 @@
}
}
-static void VG_REGPARM(2) mc_new_mem_stack_32(Addr new_SP, UInt otag)
+/*--------------- adjustment by 32 bytes ---------------*/
+
+static void VG_REGPARM(2) mc_new_mem_stack_32_w_otag(Addr new_SP, UInt otag)
{
PROF_EVENT(114, "new_mem_stack_32");
if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
/* Straightforward */
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP , otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8 , otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+16, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+24, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP , otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+8 , otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+16, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+24, otag );
} else if (VG_IS_4_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
/* 8 alignment must be at +4. Hence do 8 at +4,+12,+20 and 4 at
+0,+28. */
- make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP , otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+4 , otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+12, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+20, otag );
- make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP+28, otag );
+ make_aligned_word32_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP , otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+4 , otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+12, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+20, otag );
+ make_aligned_word32_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+28, otag );
} else {
MC_(make_mem_undefined_w_otag) ( -VG_STACK_REDZONE_SZB + new_SP, 32, otag );
}
}
+static void VG_REGPARM(1) mc_new_mem_stack_32(Addr new_SP)
+{
+ PROF_EVENT(114, "new_mem_stack_32");
+ if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
+ /* Straightforward */
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+16 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+24 );
+ } else if (VG_IS_4_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
+ /* 8 alignment must be at +4. Hence do 8 at +4,+12,+20 and 4 at
+ +0,+28. */
+ make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+4 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+12 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+20 );
+ make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP+28 );
+ } else {
+ make_mem_undefined ( -VG_STACK_REDZONE_SZB + new_SP, 32 );
+ }
+}
+
static void VG_REGPARM(1) mc_die_mem_stack_32(Addr new_SP)
{
PROF_EVENT(124, "die_mem_stack_32");
@@ -2169,29 +2279,54 @@
}
}
-static void VG_REGPARM(2) mc_new_mem_stack_112(Addr new_SP, UInt otag)
+/*--------------- adjustment by 112 bytes ---------------*/
+
+static void VG_REGPARM(2) mc_new_mem_stack_112_w_otag(Addr new_SP, UInt otag)
{
PROF_EVENT(115, "new_mem_stack_112");
if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP , otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8 , otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+16, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+24, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+32, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+40, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+48, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+56, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+64, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+72, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+80, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+88, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+96, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+104, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP , otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+8 , otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+16, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+24, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+32, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+40, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+48, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+56, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+64, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+72, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+80, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+88, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+96, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+104, otag );
} else {
MC_(make_mem_undefined_w_otag) ( -VG_STACK_REDZONE_SZB + new_SP, 112, otag );
}
}
+static void VG_REGPARM(1) mc_new_mem_stack_112(Addr new_SP)
+{
+ PROF_EVENT(115, "new_mem_stack_112");
+ if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+16 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+24 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+32 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+40 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+48 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+56 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+64 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+72 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+80 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+88 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+96 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+104 );
+ } else {
+ make_mem_undefined ( -VG_STACK_REDZONE_SZB + new_SP, 112 );
+ }
+}
+
static void VG_REGPARM(1) mc_die_mem_stack_112(Addr new_SP)
{
PROF_EVENT(125, "die_mem_stack_112");
@@ -2215,31 +2350,58 @@
}
}
-static void VG_REGPARM(2) mc_new_mem_stack_128(Addr new_SP, UInt otag)
+/*--------------- adjustment by 128 bytes ---------------*/
+
+static void VG_REGPARM(2) mc_new_mem_stack_128_w_otag(Addr new_SP, UInt otag)
{
PROF_EVENT(116, "new_mem_stack_128");
if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP , otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8 , otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+16, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+24, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+32, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+40, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+48, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+56, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+64, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+72, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+80, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+88, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+96, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+104, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+112, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+120, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP , otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+8 , otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+16, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+24, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+32, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+40, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+48, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+56, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+64, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+72, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+80, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+88, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+96, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+104, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+112, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+120, otag );
} else {
MC_(make_mem_undefined_w_otag) ( -VG_STACK_REDZONE_SZB + new_SP, 128, otag );
}
}
+static void VG_REGPARM(1) mc_new_mem_stack_128(Addr new_SP)
+{
+ PROF_EVENT(116, "new_mem_stack_128");
+ if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+16 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+24 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+32 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+40 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+48 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+56 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+64 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+72 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+80 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+88 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+96 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+104 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+112 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+120 );
+ } else {
+ make_mem_undefined ( -VG_STACK_REDZONE_SZB + new_SP, 128 );
+ }
+}
+
static void VG_REGPARM(1) mc_die_mem_stack_128(Addr new_SP)
{
PROF_EVENT(126, "die_mem_stack_128");
@@ -2265,33 +2427,62 @@
}
}
-static void VG_REGPARM(2) mc_new_mem_stack_144(Addr new_SP, UInt otag)
+/*--------------- adjustment by 144 bytes ---------------*/
+
+static void VG_REGPARM(2) mc_new_mem_stack_144_w_otag(Addr new_SP, UInt otag)
{
PROF_EVENT(117, "new_mem_stack_144");
if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+16, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+24, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+32, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+40, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+48, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+56, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+64, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+72, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+80, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+88, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+96, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+104, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+112, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+120, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+128, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+136, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+8, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+16, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+24, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+32, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+40, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+48, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+56, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+64, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+72, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+80, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+88, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+96, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+104, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+112, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+120, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+128, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+136, otag );
} else {
MC_(make_mem_undefined_w_otag) ( -VG_STACK_REDZONE_SZB + new_SP, 144, otag );
}
}
+static void VG_REGPARM(1) mc_new_mem_stack_144(Addr new_SP)
+{
+ PROF_EVENT(117, "new_mem_stack_144");
+ if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+16 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+24 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+32 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+40 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+48 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+56 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+64 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+72 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+80 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+88 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+96 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+104 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+112 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+120 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+128 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+136 );
+ } else {
+ make_mem_undefined ( -VG_STACK_REDZONE_SZB + new_SP, 144 );
+ }
+}
+
static void VG_REGPARM(1) mc_die_mem_stack_144(Addr new_SP)
{
PROF_EVENT(127, "die_mem_stack_144");
@@ -2319,35 +2510,66 @@
}
}
-static void VG_REGPARM(2) mc_new_mem_stack_160(Addr new_SP, UInt otag)
+/*--------------- adjustment by 160 bytes ---------------*/
+
+static void VG_REGPARM(2) mc_new_mem_stack_160_w_otag(Addr new_SP, UInt otag)
{
PROF_EVENT(118, "new_mem_stack_160");
if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+16, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+24, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+32, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+40, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+48, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+56, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+64, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+72, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+80, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+88, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+96, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+104, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+112, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+120, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+128, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+136, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+144, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+152, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+8, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+16, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+24, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STA...
[truncated message content] |