Fix Memcheck: the 'impossible' happened: unexpected size for Addr (OSX/wine)
bz#347988
== 345929

On OS X 10.10

Before:

== 592 tests, 222 stderr failures, 14 stdout failures, 0 stderrB failures, 0 stdoutB failures, 30 post failures ==

After:

== 592 tests, 222 stderr failures, 14 stdout failures, 0 stderrB failures, 0 stdoutB failures, 30 post failures ==


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15391 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/NEWS b/NEWS
index 786b9f4..9bbb318 100644
--- a/NEWS
+++ b/NEWS
@@ -234,6 +234,8 @@
 347978  Remove bash dependencies where not needed
 347982  Fix undefined symbols for architecture x86_64: "_global", referenced from:
         _test_so_global in tls_so-tls_so.o
+347988  Fix Memcheck: the 'impossible' happened: unexpected size for Addr (OSX/wine)
+        == 345929
 348102  Patch updating v4l2 API support
 348247  jno jumps wrongly when overflow is not set
 348565  Fix detection of command line option availability for clang
diff --git a/memcheck/mc_errors.c b/memcheck/mc_errors.c
index 5781b80..4d8e863 100644
--- a/memcheck/mc_errors.c
+++ b/memcheck/mc_errors.c
@@ -1256,13 +1256,13 @@
       CoreMemSupp,   // Memory errors in core (pthread ops, signal handling)
 
       // Undefined value errors of given size
-      Value1Supp, Value2Supp, Value4Supp, Value8Supp, Value16Supp,
+      Value1Supp, Value2Supp, Value4Supp, Value8Supp, Value16Supp, Value32Supp,
 
       // Undefined value error in conditional.
       CondSupp,
 
       // Unaddressable read/write attempt at given size
-      Addr1Supp, Addr2Supp, Addr4Supp, Addr8Supp, Addr16Supp,
+      Addr1Supp, Addr2Supp, Addr4Supp, Addr8Supp, Addr16Supp, Addr32Supp,
 
       JumpSupp,      // Jump to unaddressable target
       FreeSupp,      // Invalid or mismatching free
@@ -1285,6 +1285,7 @@
    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, "Addr32"))  skind = Addr32Supp;
    else if (VG_STREQ(name, "Jump"))    skind = JumpSupp;
    else if (VG_STREQ(name, "Free"))    skind = FreeSupp;
    else if (VG_STREQ(name, "Leak"))    skind = LeakSupp;
@@ -1297,6 +1298,7 @@
    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, "Value32")) skind = Value32Supp;
    else if (VG_STREQ(name, "FishyValue")) skind = FishyValueSupp;
    else 
       return False;
@@ -1413,6 +1415,7 @@
       case Value4Supp: su_szB = 4; goto value_case;
       case Value8Supp: su_szB = 8; goto value_case;
       case Value16Supp:su_szB =16; goto value_case;
+      case Value32Supp:su_szB =32; goto value_case;
       value_case:
          return (ekind == Err_Value && extra->Err.Value.szB == su_szB);
 
@@ -1424,6 +1427,7 @@
       case Addr4Supp: su_szB = 4; goto addr_case;
       case Addr8Supp: su_szB = 8; goto addr_case;
       case Addr16Supp:su_szB =16; goto addr_case;
+      case Addr32Supp:su_szB =32; goto addr_case;
       addr_case:
          return (ekind == Err_Addr && extra->Err.Addr.szB == su_szB);
 
@@ -1495,6 +1499,7 @@
       case 4:               return "Addr4";
       case 8:               return "Addr8";
       case 16:              return "Addr16";
+      case 32:              return "Addr32";
       default:              VG_(tool_panic)("unexpected size for Addr");
       }
    }
@@ -1506,6 +1511,7 @@
       case 4:               return "Value4";
       case 8:               return "Value8";
       case 16:              return "Value16";
+      case 32:              return "Value32";
       default:              VG_(tool_panic)("unexpected size for Value");
       }
    }