Added support for Value16 and Addr16 error suppressions.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1677 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/glibc-2.1.supp b/glibc-2.1.supp
index d81340d..64e809b 100644
--- a/glibc-2.1.supp
+++ b/glibc-2.1.supp
@@ -15,8 +15,8 @@
 #
 # For Memcheck, the supp_kinds are:
 #
-#     Param Value1 Value2 Value4 Value8
-#     Free Addr1 Addr2 Addr4 Addr8
+#     Param Value1 Value2 Value4 Value8 Value16
+#     Free Addr1 Addr2 Addr4 Addr8 Addr16
 #     Cond (previously known as Value0)
 #
 # and the optional extra info is:
diff --git a/glibc-2.2.supp b/glibc-2.2.supp
index 52de819..189aa65 100644
--- a/glibc-2.2.supp
+++ b/glibc-2.2.supp
@@ -16,8 +16,8 @@
 #
 # For Memcheck, the supp_kinds are:
 #
-#     Param Value1 Value2 Value4 Value8
-#     Free Addr1 Addr2 Addr4 Addr8
+#     Param Value1 Value2 Value4 Value8 Value16
+#     Free Addr1 Addr2 Addr4 Addr8 Addr16
 #     Cond (previously known as Value0)
 #
 # and the optional extra info is:
diff --git a/glibc-2.3.supp b/glibc-2.3.supp
index 24b5ac0..2ba5c16 100644
--- a/glibc-2.3.supp
+++ b/glibc-2.3.supp
@@ -16,8 +16,8 @@
 #
 # For Memcheck, the supp_kinds are:
 #
-#     Param Value1 Value2 Value4 Value8
-#     Free Addr1 Addr2 Addr4 Addr8
+#     Param Value1 Value2 Value4 Value8 Value16
+#     Free Addr1 Addr2 Addr4 Addr8 Addr16
 #     Cond (previously known as Value0)
 #
 # and the optional extra info is:
diff --git a/linux22.supp b/linux22.supp
index 3210817..1d56692 100644
--- a/linux22.supp
+++ b/linux22.supp
@@ -17,8 +17,8 @@
 #
 # For Memcheck, the supp_kinds are:
 #
-#     Param Value1 Value2 Value4 Value8
-#     Free Addr1 Addr2 Addr4 Addr8
+#     Param Value1 Value2 Value4 Value8 Value16
+#     Free Addr1 Addr2 Addr4 Addr8 Addr16
 #     Cond (previously known as Value0)
 #
 # and the optional extra info is:
diff --git a/linux24.supp b/linux24.supp
index 37e5648..58a88f0 100644
--- a/linux24.supp
+++ b/linux24.supp
@@ -17,8 +17,8 @@
 #
 # For memcheck, the supp_kinds are:
 #
-#     Param Value1 Value2 Value4 Value8
-#     Free Addr1 Addr2 Addr4 Addr8
+#     Param Value1 Value2 Value4 Value8 Value16
+#     Free Addr1 Addr2 Addr4 Addr8 Addr16
 #     Cond (previously known as Value0)
 #
 # and the optional extra info is:
diff --git a/memcheck/docs/mc_main.html b/memcheck/docs/mc_main.html
index 5330650..d751950 100644
--- a/memcheck/docs/mc_main.html
+++ b/memcheck/docs/mc_main.html
@@ -391,18 +391,21 @@
 The Memcheck suppression types are as follows:
 <code>Value1</code>, 
 <code>Value2</code>,
-<code>Value4</code> or
+<code>Value4</code>,
 <code>Value8</code>,
+<code>Value16</code>,
 meaning an uninitialised-value error when
-using a value of 1, 2, 4 or 8 bytes.
+using a value of 1, 2, 4, 8 or 16 bytes.
 Or
 <code>Cond</code> (or its old name, <code>Value0</code>),
 meaning use of an uninitialised CPU condition code.  Or: 
 <code>Addr1</code>,
 <code>Addr2</code>, 
-<code>Addr4</code> or 
-<code>Addr8</code>, meaning an invalid address during a
-memory access of 1, 2, 4 or 8 bytes respectively.  Or 
+<code>Addr4</code>,
+<code>Addr8</code>,
+<code>Addr16</code>, 
+meaning an invalid address during a
+memory access of 1, 2, 4, 8 or 16 bytes respectively.  Or 
 <code>Param</code>,
 meaning an invalid system call parameter error.  Or
 <code>Free</code>, meaning an invalid or mismatching free.
diff --git a/memcheck/mac_needs.c b/memcheck/mac_needs.c
index b48765c..1713bfd 100644
--- a/memcheck/mac_needs.c
+++ b/memcheck/mac_needs.c
@@ -497,6 +497,7 @@
    else if (VG_STREQ(name, "Addr2"))   skind = Addr2Supp;
    else if (VG_STREQ(name, "Addr4"))   skind = Addr4Supp;
    else if (VG_STREQ(name, "Addr8"))   skind = Addr8Supp;
+   else if (VG_STREQ(name, "Addr16"))  skind = Addr16Supp;
    else if (VG_STREQ(name, "Free"))    skind = FreeSupp;
    else if (VG_STREQ(name, "Leak"))    skind = LeakSupp;
    else
@@ -540,6 +541,7 @@
       case Value2Supp: su_size = 2; goto value_case;
       case Value4Supp: su_size = 4; goto value_case;
       case Value8Supp: su_size = 8; goto value_case;
+      case Value16Supp:su_size =16; goto value_case;
       value_case:
          return (ekind == ValueErr && err_extra->size == su_size);
 
@@ -547,6 +549,7 @@
       case Addr2Supp: su_size = 2; goto addr_case;
       case Addr4Supp: su_size = 4; goto addr_case;
       case Addr8Supp: su_size = 8; goto addr_case;
+      case Addr16Supp:su_size =16; goto addr_case;
       addr_case:
          return (ekind == AddrErr && err_extra->size == su_size);
 
@@ -582,6 +585,7 @@
       case 2:               return "Addr2";
       case 4:               return "Addr4";
       case 8:               return "Addr8";
+      case 16:              return "Addr16";
       default:              VG_(skin_panic)("unexpected size for Addr");
       }
      
@@ -592,6 +596,7 @@
       case 2:               return "Value2";
       case 4:               return "Value4";
       case 8:               return "Value8";
+      case 16:              return "Value16";
       default:              VG_(skin_panic)("unexpected size for Value");
       }
    case CoreMemErr:         return "CoreMem";
diff --git a/memcheck/mac_shared.h b/memcheck/mac_shared.h
index ff1cea3..2beb31e 100644
--- a/memcheck/mac_shared.h
+++ b/memcheck/mac_shared.h
@@ -80,9 +80,9 @@
       /* Memory errors in core (pthread ops, signal handling) */
       CoreMemSupp,
       /* Use of invalid values of given size (MemCheck only) */
-      Value0Supp, Value1Supp, Value2Supp, Value4Supp, Value8Supp, 
+      Value0Supp, Value1Supp, Value2Supp, Value4Supp, Value8Supp, Value16Supp,
       /* Invalid read/write attempt at given size */
-      Addr1Supp, Addr2Supp, Addr4Supp, Addr8Supp,
+      Addr1Supp, Addr2Supp, Addr4Supp, Addr8Supp, Addr16Supp,
       /* Invalid or mismatching free */
       FreeSupp,
       /* Overlapping blocks in memcpy(), strcpy(), etc */
diff --git a/memcheck/mc_errcontext.c b/memcheck/mc_errcontext.c
index 934ef4e..a5f1ea5 100644
--- a/memcheck/mc_errcontext.c
+++ b/memcheck/mc_errcontext.c
@@ -183,6 +183,7 @@
    else if (VG_STREQ(name, "Value2"))  skind = Value2Supp;
    else if (VG_STREQ(name, "Value4"))  skind = Value4Supp;
    else if (VG_STREQ(name, "Value8"))  skind = Value8Supp;
+   else if (VG_STREQ(name, "Value16")) skind = Value16Supp;
    else if (VG_STREQ(name, "Overlap")) skind = OverlapSupp;
    else 
       return False;
diff --git a/xfree-3.supp b/xfree-3.supp
index b735b73..178f9ce 100644
--- a/xfree-3.supp
+++ b/xfree-3.supp
@@ -16,8 +16,8 @@
 #
 # For Memcheck, the supp_kinds are:
 #
-#     Param Value1 Value2 Value4 Value8
-#     Free Addr1 Addr2 Addr4 Addr8
+#     Param Value1 Value2 Value4 Value8 Value16
+#     Free Addr1 Addr2 Addr4 Addr8 Addr16
 #     Cond (previously known as Value0)
 #
 # and the optional extra info is:
diff --git a/xfree-4.supp b/xfree-4.supp
index 15f60da..cdf5ba3 100644
--- a/xfree-4.supp
+++ b/xfree-4.supp
@@ -16,8 +16,8 @@
 #
 # For memcheck, the supp_kinds are:
 #
-#     Param Value1 Value2 Value4 Value8
-#     Free Addr1 Addr2 Addr4 Addr8
+#     Param Value1 Value2 Value4 Value8 Value16
+#     Free Addr1 Addr2 Addr4 Addr8 Addr16
 #     Cond (previously known as Value0)
 #
 # and the optional extra info is: