]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Extend stack-permissions-change fast-case machinery to handle +/- 112,
authorJulian Seward <jseward@acm.org>
Sun, 12 Feb 2006 15:42:20 +0000 (15:42 +0000)
committerJulian Seward <jseward@acm.org>
Sun, 12 Feb 2006 15:42:20 +0000 (15:42 +0000)
128, 144 and 160.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5640

coregrind/m_tooliface.c
coregrind/m_translate.c
coregrind/pub_core_tooliface.h
include/pub_tool_tooliface.h
memcheck/mac_shared.h
memcheck/mc_main.c

index 9e3a06ca388b7f0fc5f23c0b21daf867985e97c0..359408bbee7aa4a4209e8a382827e77d8c881fe3 100644 (file)
@@ -111,11 +111,15 @@ Bool VG_(sanity_check_needs)(Char** failmsg)
    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 ) &&
+   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"
@@ -124,11 +128,15 @@ Bool VG_(sanity_check_needs)(Char** failmsg)
       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 ) &&
+   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"
@@ -282,6 +290,10 @@ DEF2(track_new_mem_stack_8,      Addr)
 DEF2(track_new_mem_stack_12,     Addr)
 DEF2(track_new_mem_stack_16,     Addr)
 DEF2(track_new_mem_stack_32,     Addr)
+DEF2(track_new_mem_stack_112,    Addr)
+DEF2(track_new_mem_stack_128,    Addr)
+DEF2(track_new_mem_stack_144,    Addr)
+DEF2(track_new_mem_stack_160,    Addr)
 DEF (track_new_mem_stack,        Addr, SizeT)
 
 DEF2(track_die_mem_stack_4,      Addr)
@@ -289,6 +301,10 @@ DEF2(track_die_mem_stack_8,      Addr)
 DEF2(track_die_mem_stack_12,     Addr)
 DEF2(track_die_mem_stack_16,     Addr)
 DEF2(track_die_mem_stack_32,     Addr)
+DEF2(track_die_mem_stack_112,    Addr)
+DEF2(track_die_mem_stack_128,    Addr)
+DEF2(track_die_mem_stack_144,    Addr)
+DEF2(track_die_mem_stack_160,    Addr)
 DEF (track_die_mem_stack,        Addr, SizeT)
 
 DEF(track_ban_mem_stack,         Addr, SizeT)
index 1461dbaa717af00683bb67aa0a935fa691400c57..36dd00b67a8cbbae3acb8d7f75046e93b1ce28ba 100644 (file)
@@ -91,18 +91,26 @@ void VG_(print_translation_stats) ( void )
 
 static Bool need_to_handle_SP_assignment(void)
 {
-   return ( VG_(tdict).track_new_mem_stack_4  ||
-            VG_(tdict).track_die_mem_stack_4  ||
-            VG_(tdict).track_new_mem_stack_8  ||
-            VG_(tdict).track_die_mem_stack_8  ||
-            VG_(tdict).track_new_mem_stack_12 ||
-            VG_(tdict).track_die_mem_stack_12 ||
-            VG_(tdict).track_new_mem_stack_16 ||
-            VG_(tdict).track_die_mem_stack_16 ||
-            VG_(tdict).track_new_mem_stack_32 ||
-            VG_(tdict).track_die_mem_stack_32 ||
-            VG_(tdict).track_new_mem_stack    ||
-            VG_(tdict).track_die_mem_stack    );
+   return ( VG_(tdict).track_new_mem_stack_4   ||
+            VG_(tdict).track_die_mem_stack_4   ||
+            VG_(tdict).track_new_mem_stack_8   ||
+            VG_(tdict).track_die_mem_stack_8   ||
+            VG_(tdict).track_new_mem_stack_12  ||
+            VG_(tdict).track_die_mem_stack_12  ||
+            VG_(tdict).track_new_mem_stack_16  ||
+            VG_(tdict).track_die_mem_stack_16  ||
+            VG_(tdict).track_new_mem_stack_32  ||
+            VG_(tdict).track_die_mem_stack_32  ||
+            VG_(tdict).track_new_mem_stack_112 ||
+            VG_(tdict).track_die_mem_stack_112 ||
+            VG_(tdict).track_new_mem_stack_128 ||
+            VG_(tdict).track_die_mem_stack_128 ||
+            VG_(tdict).track_new_mem_stack_144 ||
+            VG_(tdict).track_die_mem_stack_144 ||
+            VG_(tdict).track_new_mem_stack_160 ||
+            VG_(tdict).track_die_mem_stack_160 ||
+            VG_(tdict).track_new_mem_stack     ||
+            VG_(tdict).track_die_mem_stack     );
 }
 
 // - The SP aliases are held in an array which is used as a circular buffer.
@@ -316,17 +324,25 @@ IRBB* vg_SP_update_pass ( void*             closureV,
       if (get_SP_delta(st->Ist.Put.data->Iex.Tmp.tmp, &delta)) {
          IRTemp tttmp = st->Ist.Put.data->Iex.Tmp.tmp;
          switch (delta) {
-            case   0:                     addStmtToIRBB(bb,st); continue;
-            case   4: DO(die, 4,  tttmp); addStmtToIRBB(bb,st); continue;
-            case  -4: DO(new, 4,  tttmp); addStmtToIRBB(bb,st); continue;
-            case   8: DO(die, 8,  tttmp); addStmtToIRBB(bb,st); continue;
-            case  -8: DO(new, 8,  tttmp); addStmtToIRBB(bb,st); continue;
-            case  12: DO(die, 12, tttmp); addStmtToIRBB(bb,st); continue;
-            case -12: DO(new, 12, tttmp); addStmtToIRBB(bb,st); continue;
-            case  16: DO(die, 16, tttmp); addStmtToIRBB(bb,st); continue;
-            case -16: DO(new, 16, tttmp); addStmtToIRBB(bb,st); continue;
-            case  32: DO(die, 32, tttmp); addStmtToIRBB(bb,st); continue;
-            case -32: DO(new, 32, tttmp); addStmtToIRBB(bb,st); continue;
+            case    0:                      addStmtToIRBB(bb,st); continue;
+            case    4: DO(die,  4,  tttmp); addStmtToIRBB(bb,st); continue;
+            case   -4: DO(new,  4,  tttmp); addStmtToIRBB(bb,st); continue;
+            case    8: DO(die,  8,  tttmp); addStmtToIRBB(bb,st); continue;
+            case   -8: DO(new,  8,  tttmp); addStmtToIRBB(bb,st); continue;
+            case   12: DO(die,  12, tttmp); addStmtToIRBB(bb,st); continue;
+            case  -12: DO(new,  12, tttmp); addStmtToIRBB(bb,st); continue;
+            case   16: DO(die,  16, tttmp); addStmtToIRBB(bb,st); continue;
+            case  -16: DO(new,  16, tttmp); addStmtToIRBB(bb,st); continue;
+            case   32: DO(die,  32, tttmp); addStmtToIRBB(bb,st); continue;
+            case  -32: DO(new,  32, tttmp); addStmtToIRBB(bb,st); continue;
+            case  112: DO(die, 112, tttmp); addStmtToIRBB(bb,st); continue;
+            case -112: DO(new, 112, tttmp); addStmtToIRBB(bb,st); continue;
+            case  128: DO(die, 128, tttmp); addStmtToIRBB(bb,st); continue;
+            case -128: DO(new, 128, tttmp); addStmtToIRBB(bb,st); continue;
+            case  144: DO(die, 144, tttmp); addStmtToIRBB(bb,st); continue;
+            case -144: DO(new, 144, tttmp); addStmtToIRBB(bb,st); continue;
+            case  160: DO(die, 160, tttmp); addStmtToIRBB(bb,st); continue;
+            case -160: DO(new, 160, tttmp); addStmtToIRBB(bb,st); continue;
             default:  
                /* common values for ppc64: 144 128 160 112 176 */
                n_SP_updates_generic_known++;
index b246c1d78736a21489fe4a50dc43d5f17b5d1989..58666287ebc0fc7688985bf7f1b91bdbca42edc9 100644 (file)
@@ -166,18 +166,26 @@ typedef struct {
    void (*track_die_mem_brk)         (Addr, SizeT);
    void (*track_die_mem_munmap)      (Addr, SizeT);
 
-   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_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);
-   void VG_REGPARM(1) (*track_die_mem_stack_16)(Addr);
-   void VG_REGPARM(1) (*track_die_mem_stack_32)(Addr);
+   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);
+   void VG_REGPARM(1) (*track_die_mem_stack_16) (Addr);
+   void VG_REGPARM(1) (*track_die_mem_stack_32) (Addr);
+   void VG_REGPARM(1) (*track_die_mem_stack_112)(Addr);
+   void VG_REGPARM(1) (*track_die_mem_stack_128)(Addr);
+   void VG_REGPARM(1) (*track_die_mem_stack_144)(Addr);
+   void VG_REGPARM(1) (*track_die_mem_stack_160)(Addr);
    void (*track_die_mem_stack)(Addr, SizeT);
 
    void (*track_ban_mem_stack)(Addr, SizeT);
index 55fc3520643120c0097f19b7ea1d65aa9efa022e..7ae35d10639a17d9104a44adaa3487c7f3cdbb99 100644 (file)
@@ -347,19 +347,27 @@ void VG_(track_die_mem_munmap)      (void(*f)(Addr a, SizeT len));
 
    Nb: all the specialised ones must use the VG_REGPARM(n) attribute.
  */
-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)                 (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));
-void VG_(track_die_mem_stack_16)(VG_REGPARM(1) void(*f)(Addr die_ESP));
-void VG_(track_die_mem_stack_32)(VG_REGPARM(1) void(*f)(Addr die_ESP));
-void VG_(track_die_mem_stack)                 (void(*f)(Addr a, SizeT len));
+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));
+void VG_(track_die_mem_stack_16) (VG_REGPARM(1) void(*f)(Addr die_ESP));
+void VG_(track_die_mem_stack_32) (VG_REGPARM(1) void(*f)(Addr die_ESP));
+void VG_(track_die_mem_stack_112)(VG_REGPARM(1) void(*f)(Addr die_ESP));
+void VG_(track_die_mem_stack_128)(VG_REGPARM(1) void(*f)(Addr die_ESP));
+void VG_(track_die_mem_stack_144)(VG_REGPARM(1) void(*f)(Addr die_ESP));
+void VG_(track_die_mem_stack_160)(VG_REGPARM(1) void(*f)(Addr die_ESP));
+void VG_(track_die_mem_stack)                  (void(*f)(Addr a, SizeT len));
 
 /* Used for redzone at end of thread stacks */
 void VG_(track_ban_mem_stack)      (void(*f)(Addr a, SizeT len));
index bc080d9019bba8e66d9d1dad2a7ff8e7904e4063..01d989e9b822ada4bc0b9973bbf3b0d7f20f094a 100644 (file)
@@ -414,16 +414,24 @@ extern void MAC_(do_detect_memory_leaks) (
           Bool (*is_valid_aligned_word)     ( Addr )
        );
 
-extern VG_REGPARM(1) void MAC_(new_mem_stack_4)  ( Addr old_ESP );
-extern VG_REGPARM(1) void MAC_(die_mem_stack_4)  ( Addr old_ESP );
-extern VG_REGPARM(1) void MAC_(new_mem_stack_8)  ( Addr old_ESP );
-extern VG_REGPARM(1) void MAC_(die_mem_stack_8)  ( Addr old_ESP );
-extern VG_REGPARM(1) void MAC_(new_mem_stack_12) ( Addr old_ESP );
-extern VG_REGPARM(1) void MAC_(die_mem_stack_12) ( Addr old_ESP );
-extern VG_REGPARM(1) void MAC_(new_mem_stack_16) ( Addr old_ESP );
-extern VG_REGPARM(1) void MAC_(die_mem_stack_16) ( Addr old_ESP );
-extern VG_REGPARM(1) void MAC_(new_mem_stack_32) ( Addr old_ESP );
-extern VG_REGPARM(1) void MAC_(die_mem_stack_32) ( Addr old_ESP );
+extern VG_REGPARM(1) void MAC_(new_mem_stack_4)   ( Addr old_ESP );
+extern VG_REGPARM(1) void MAC_(die_mem_stack_4)   ( Addr old_ESP );
+extern VG_REGPARM(1) void MAC_(new_mem_stack_8)   ( Addr old_ESP );
+extern VG_REGPARM(1) void MAC_(die_mem_stack_8)   ( Addr old_ESP );
+extern VG_REGPARM(1) void MAC_(new_mem_stack_12)  ( Addr old_ESP );
+extern VG_REGPARM(1) void MAC_(die_mem_stack_12)  ( Addr old_ESP );
+extern VG_REGPARM(1) void MAC_(new_mem_stack_16)  ( Addr old_ESP );
+extern VG_REGPARM(1) void MAC_(die_mem_stack_16)  ( Addr old_ESP );
+extern VG_REGPARM(1) void MAC_(new_mem_stack_32)  ( Addr old_ESP );
+extern VG_REGPARM(1) void MAC_(die_mem_stack_32)  ( Addr old_ESP );
+extern VG_REGPARM(1) void MAC_(new_mem_stack_112) ( Addr old_ESP );
+extern VG_REGPARM(1) void MAC_(die_mem_stack_112) ( Addr old_ESP );
+extern VG_REGPARM(1) void MAC_(new_mem_stack_128) ( Addr old_ESP );
+extern VG_REGPARM(1) void MAC_(die_mem_stack_128) ( Addr old_ESP );
+extern VG_REGPARM(1) void MAC_(new_mem_stack_144) ( Addr old_ESP );
+extern VG_REGPARM(1) void MAC_(die_mem_stack_144) ( Addr old_ESP );
+extern VG_REGPARM(1) void MAC_(new_mem_stack_160) ( Addr old_ESP );
+extern VG_REGPARM(1) void MAC_(die_mem_stack_160) ( Addr old_ESP );
 extern               void MAC_(die_mem_stack) ( Addr a, SizeT len);
 extern               void MAC_(new_mem_stack) ( Addr a, SizeT len);
 
@@ -596,6 +604,214 @@ void VG_REGPARM(1) MAC_(die_mem_stack_32)(Addr new_SP)            \
    }                                                              \
 }                                                                 \
                                                                   \
+void VG_REGPARM(1) MAC_(new_mem_stack_112)(Addr new_SP)           \
+{                                                                 \
+   PROF_EVENT(114, "new_mem_stack_112");                          \
+   if (VG_IS_8_ALIGNED(new_SP)) {                                 \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP     );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+8   );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+16  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+24  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+32  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+40  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+48  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+56  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+64  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+72  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+80  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+88  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+96  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+104 );       \
+   } else {                                                       \
+      UNALIGNED_NEW ( -VG_STACK_REDZONE_SZB + new_SP, 112 );      \
+   }                                                              \
+}                                                                 \
+                                                                  \
+void VG_REGPARM(1) MAC_(die_mem_stack_112)(Addr new_SP)           \
+{                                                                 \
+   PROF_EVENT(114, "new_mem_stack_112");                          \
+   if (VG_IS_8_ALIGNED(new_SP)) {                                 \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-8   );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-16  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-24  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-32  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-40  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-48  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-56  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-64  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-72  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-80  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-88  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-96  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-104 );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-112 );       \
+   } else {                                                       \
+      UNALIGNED_DIE ( -VG_STACK_REDZONE_SZB + new_SP-112, 112 );  \
+   }                                                              \
+}                                                                 \
+                                                                  \
+void VG_REGPARM(1) MAC_(new_mem_stack_128)(Addr new_SP)           \
+{                                                                 \
+   PROF_EVENT(114, "new_mem_stack_128");                          \
+   if (VG_IS_8_ALIGNED(new_SP)) {                                 \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP     );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+8   );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+16  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+24  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+32  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+40  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+48  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+56  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+64  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+72  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+80  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+88  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+96  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+104 );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+112 );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+120 );       \
+   } else {                                                       \
+      UNALIGNED_NEW ( -VG_STACK_REDZONE_SZB + new_SP, 128 );      \
+   }                                                              \
+}                                                                 \
+                                                                  \
+void VG_REGPARM(1) MAC_(die_mem_stack_128)(Addr new_SP)           \
+{                                                                 \
+   PROF_EVENT(114, "new_mem_stack_128");                          \
+   if (VG_IS_8_ALIGNED(new_SP)) {                                 \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-8   );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-16  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-24  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-32  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-40  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-48  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-56  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-64  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-72  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-80  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-88  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-96  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-104 );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-112 );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-120 );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-128 );       \
+   } else {                                                       \
+      UNALIGNED_DIE ( -VG_STACK_REDZONE_SZB + new_SP-128, 128 );  \
+   }                                                              \
+}                                                                 \
+                                                                  \
+void VG_REGPARM(1) MAC_(new_mem_stack_144)(Addr new_SP)           \
+{                                                                 \
+   PROF_EVENT(114, "new_mem_stack_144");                          \
+   if (VG_IS_8_ALIGNED(new_SP)) {                                 \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP     );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+8   );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+16  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+24  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+32  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+40  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+48  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+56  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+64  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+72  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+80  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+88  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+96  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+104 );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+112 );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+120 );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+128 );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+136 );       \
+   } else {                                                       \
+      UNALIGNED_NEW ( -VG_STACK_REDZONE_SZB + new_SP, 144 );      \
+   }                                                              \
+}                                                                 \
+                                                                  \
+void VG_REGPARM(1) MAC_(die_mem_stack_144)(Addr new_SP)           \
+{                                                                 \
+   PROF_EVENT(114, "new_mem_stack_144");                          \
+   if (VG_IS_8_ALIGNED(new_SP)) {                                 \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-8   );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-16  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-24  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-32  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-40  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-48  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-56  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-64  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-72  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-80  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-88  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-96  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-104 );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-112 );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-120 );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-128 );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-136 );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-144 );       \
+   } else {                                                       \
+      UNALIGNED_DIE ( -VG_STACK_REDZONE_SZB + new_SP-144, 144 );  \
+   }                                                              \
+}                                                                 \
+                                                                  \
+void VG_REGPARM(1) MAC_(new_mem_stack_160)(Addr new_SP)           \
+{                                                                 \
+   PROF_EVENT(114, "new_mem_stack_160");                          \
+   if (VG_IS_8_ALIGNED(new_SP)) {                                 \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP     );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+8   );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+16  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+24  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+32  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+40  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+48  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+56  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+64  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+72  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+80  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+88  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+96  );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+104 );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+112 );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+120 );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+128 );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+136 );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+144 );       \
+      ALIGNED8_NEW  ( -VG_STACK_REDZONE_SZB + new_SP+152 );       \
+   } else {                                                       \
+      UNALIGNED_NEW ( -VG_STACK_REDZONE_SZB + new_SP, 160 );      \
+   }                                                              \
+}                                                                 \
+                                                                  \
+void VG_REGPARM(1) MAC_(die_mem_stack_160)(Addr new_SP)           \
+{                                                                 \
+   PROF_EVENT(114, "new_mem_stack_160");                          \
+   if (VG_IS_8_ALIGNED(new_SP)) {                                 \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-8   );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-16  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-24  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-32  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-40  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-48  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-56  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-64  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-72  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-80  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-88  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-96  );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-104 );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-112 );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-120 );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-128 );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-136 );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-144 );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-152 );       \
+      ALIGNED8_DIE  ( -VG_STACK_REDZONE_SZB + new_SP-160 );       \
+   } else {                                                       \
+      UNALIGNED_DIE ( -VG_STACK_REDZONE_SZB + new_SP-160, 160 );  \
+   }                                                              \
+}                                                                 \
+                                                                  \
 void MAC_(new_mem_stack) ( Addr a, SizeT len )                    \
 {                                                                 \
    PROF_EVENT(115, "new_mem_stack");                              \
index 99084955c28f7778c70ffe3a55906acb5b2c5bc5..ec51703d314c559f0ae02b34318ec43c8ccc76be 100644 (file)
@@ -2713,19 +2713,27 @@ static void mc_pre_clo_init(void)
    VG_(track_die_mem_brk)         ( & mc_make_noaccess );
    VG_(track_die_mem_munmap)      ( & mc_make_noaccess ); 
 
-   VG_(track_new_mem_stack_4)     ( & MAC_(new_mem_stack_4)  );
-   VG_(track_new_mem_stack_8)     ( & MAC_(new_mem_stack_8)  );
-   VG_(track_new_mem_stack_12)    ( & MAC_(new_mem_stack_12) );
-   VG_(track_new_mem_stack_16)    ( & MAC_(new_mem_stack_16) );
-   VG_(track_new_mem_stack_32)    ( & MAC_(new_mem_stack_32) );
-   VG_(track_new_mem_stack)       ( & MAC_(new_mem_stack)    );
-
-   VG_(track_die_mem_stack_4)     ( & MAC_(die_mem_stack_4)  );
-   VG_(track_die_mem_stack_8)     ( & MAC_(die_mem_stack_8)  );
-   VG_(track_die_mem_stack_12)    ( & MAC_(die_mem_stack_12) );
-   VG_(track_die_mem_stack_16)    ( & MAC_(die_mem_stack_16) );
-   VG_(track_die_mem_stack_32)    ( & MAC_(die_mem_stack_32) );
-   VG_(track_die_mem_stack)       ( & MAC_(die_mem_stack)    );
+   VG_(track_new_mem_stack_4)     ( & MAC_(new_mem_stack_4)   );
+   VG_(track_new_mem_stack_8)     ( & MAC_(new_mem_stack_8)   );
+   VG_(track_new_mem_stack_12)    ( & MAC_(new_mem_stack_12)  );
+   VG_(track_new_mem_stack_16)    ( & MAC_(new_mem_stack_16)  );
+   VG_(track_new_mem_stack_32)    ( & MAC_(new_mem_stack_32)  );
+   VG_(track_new_mem_stack_112)   ( & MAC_(new_mem_stack_112) );
+   VG_(track_new_mem_stack_128)   ( & MAC_(new_mem_stack_128) );
+   VG_(track_new_mem_stack_144)   ( & MAC_(new_mem_stack_144) );
+   VG_(track_new_mem_stack_160)   ( & MAC_(new_mem_stack_160) );
+   VG_(track_new_mem_stack)       ( & MAC_(new_mem_stack)     );
+
+   VG_(track_die_mem_stack_4)     ( & MAC_(die_mem_stack_4)   );
+   VG_(track_die_mem_stack_8)     ( & MAC_(die_mem_stack_8)   );
+   VG_(track_die_mem_stack_12)    ( & MAC_(die_mem_stack_12)  );
+   VG_(track_die_mem_stack_16)    ( & MAC_(die_mem_stack_16)  );
+   VG_(track_die_mem_stack_32)    ( & MAC_(die_mem_stack_32)  );
+   VG_(track_die_mem_stack_112)   ( & MAC_(die_mem_stack_112) );
+   VG_(track_die_mem_stack_128)   ( & MAC_(die_mem_stack_128) );
+   VG_(track_die_mem_stack_144)   ( & MAC_(die_mem_stack_144) );
+   VG_(track_die_mem_stack_160)   ( & MAC_(die_mem_stack_160) );
+   VG_(track_die_mem_stack)       ( & MAC_(die_mem_stack)     );
    
    VG_(track_ban_mem_stack)       ( & mc_make_noaccess );