Final patch for Char/HChar mixups.
Remove -Wno-pointer-sign from configure.in.
Fixes 273227.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13125 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/exp-sgcheck/h_intercepts.c b/exp-sgcheck/h_intercepts.c
index b79e5e2..6873daa 100644
--- a/exp-sgcheck/h_intercepts.c
+++ b/exp-sgcheck/h_intercepts.c
@@ -49,12 +49,12 @@
    char* VG_REPLACE_FUNCTION_ZU(soname,fnname)( const char* s, int c ); \
    char* VG_REPLACE_FUNCTION_ZU(soname,fnname)( const char* s, int c ) \
    { \
-      UChar  ch   = (UChar)((UInt)c); \
-      UChar* p    = (UChar*)s; \
-      UChar* last = NULL; \
+      HChar ch = (HChar)c;   \
+      const HChar* p = s;       \
+      const HChar* last = NULL; \
       while (True) { \
          if (*p == ch) last = p; \
-         if (*p == 0) return last; \
+         if (*p == 0) return (HChar *)last;     \
          p++; \
       } \
    }
@@ -75,10 +75,10 @@
    char* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* s, int c ); \
    char* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* s, int c ) \
    { \
-      UChar  ch = (UChar)((UInt)c); \
-      UChar* p  = (UChar*)s; \
+      HChar  ch = (HChar)c ; \
+      const HChar* p  = s;   \
       while (True) { \
-         if (*p == ch) return p; \
+         if (*p == ch) return (HChar *)p; \
          if (*p == 0) return NULL; \
          p++; \
       } \
@@ -137,7 +137,7 @@
    char* VG_REPLACE_FUNCTION_ZU(soname, fnname) ( char* dst, const char* src ); \
    char* VG_REPLACE_FUNCTION_ZU(soname, fnname) ( char* dst, const char* src ) \
    { \
-      Char* dst_orig = dst; \
+      HChar* dst_orig = dst; \
       \
       while (*src) *dst++ = *src++; \
       *dst = 0; \
@@ -187,17 +187,17 @@
    int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
           ( const char* s1, const char* s2 ) \
    { \
-      register unsigned char c1; \
-      register unsigned char c2; \
+      register UChar c1; \
+      register UChar c2; \
       while (True) { \
-         c1 = *(unsigned char *)s1; \
-         c2 = *(unsigned char *)s2; \
+         c1 = *(UChar *)s1; \
+         c2 = *(UChar *)s2; \
          if (c1 != c2) break; \
          if (c1 == 0) break; \
          s1++; s2++; \
       } \
-      if ((unsigned char)c1 < (unsigned char)c2) return -1; \
-      if ((unsigned char)c1 > (unsigned char)c2) return 1; \
+      if ((UChar)c1 < (UChar)c2) return -1; \
+      if ((UChar)c1 > (UChar)c2) return 1; \
       return 0; \
    }
 
@@ -325,13 +325,13 @@
 
 /* Find the first occurrence of C in S.  */
 #define GLIBC232_RAWMEMCHR(soname, fnname) \
-   char* VG_REPLACE_FUNCTION_ZU(soname,fnname) (const char* s, int c_in); \
-   char* VG_REPLACE_FUNCTION_ZU(soname,fnname) (const char* s, int c_in) \
+   void* VG_REPLACE_FUNCTION_ZU(soname,fnname) (const void* s, int c_in); \
+   void* VG_REPLACE_FUNCTION_ZU(soname,fnname) (const void* s, int c_in) \
    { \
-      unsigned char  c        = (unsigned char) c_in; \
-      unsigned char* char_ptr = (unsigned char *)s; \
+      UChar c = (UChar)c_in; \
+      const UChar* char_ptr = s; \
       while (1) { \
-         if (*char_ptr == c) return char_ptr; \
+        if (*char_ptr == c) return (void *)char_ptr;    \
          char_ptr++; \
       } \
    }
@@ -343,26 +343,26 @@
 
 
 #define STRSTR(soname, fnname) \
-   void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
-         (void* haystack, void* needle); \
-   void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
-         (void* haystack, void* needle) \
+   char* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+         (const char* haystack, const char* needle); \
+   char* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+         (const char* haystack, const char* needle) \
    { \
-      UChar* h = (UChar*)haystack; \
-      UChar* n = (UChar*)needle; \
+      const HChar* h = haystack; \
+      const HChar* n = needle; \
       \
       /* find the length of n, not including terminating zero */ \
       UWord nlen = 0; \
       while (n[nlen]) nlen++; \
       \
       /* if n is the empty string, match immediately. */ \
-      if (nlen == 0) return h; \
+      if (nlen == 0) return (HChar *)h;                  \
       \
       /* assert(nlen >= 1); */ \
-      UChar n0 = n[0]; \
+      HChar n0 = n[0]; \
       \
       while (1) { \
-         UChar hh = *h; \
+         const HChar hh = *h; \
          if (hh == 0) return NULL; \
          if (hh != n0) { h++; continue; } \
          \
@@ -373,7 +373,7 @@
          } \
          /* assert(i >= 0 && i <= nlen); */ \
          if (i == nlen) \
-            return h; \
+           return (HChar *)h;                   \
          \
          h++; \
       } \
@@ -385,13 +385,13 @@
 
 
 #define STRPBRK(soname, fnname) \
-   void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
-         (void* sV, void* acceptV); \
-   void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
-         (void* sV, void* acceptV) \
+   char* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+         (const char* sV, const char* acceptV); \
+   char* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+         (const char* sV, const char* acceptV) \
    { \
-      UChar* s = (UChar*)sV; \
-      UChar* accept = (UChar*)acceptV; \
+      const HChar* s = sV; \
+      const HChar* accept = acceptV; \
       \
       /*  find the length of 'accept', not including terminating zero */ \
       UWord nacc = 0; \
@@ -403,12 +403,12 @@
       /* assert(nacc >= 1); */ \
       while (1) { \
          UWord i; \
-         UChar sc = *s; \
+         HChar sc = *s; \
          if (sc == 0) \
             break; \
          for (i = 0; i < nacc; i++) { \
             if (sc == accept[i]) \
-               return s; \
+              return (HChar *)s; \
          } \
          s++; \
       } \