Use a macro to add declarations for functions like memcpy(), so that GCC
doesn't warn about missing declarations.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3417 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/memcheck/mac_replace_strmem.c b/memcheck/mac_replace_strmem.c
index 53b8f28..d8b37d5 100644
--- a/memcheck/mac_replace_strmem.c
+++ b/memcheck/mac_replace_strmem.c
@@ -107,7 +107,13 @@
    RECORD_OVERLAP_ERROR( s, &extra );
 }
 
-char* strrchr ( const char* s, int c )
+// GCC complains if we have a non-static function without a previous
+// declaration.  We don't really need such declarations for these functions
+// because we're overriding standard system functions, but this macro puts
+// them in anyway just to shut GCC up.
+#define DECL(a)   a; a
+
+DECL( char* strrchr ( const char* s, int c ) )
 {
    UChar  ch   = (UChar)((UInt)c);
    UChar* p    = (UChar*)s;
@@ -119,7 +125,7 @@
    }
 }
 
-char* strchr ( const char* s, int c )
+DECL( char* strchr ( const char* s, int c ) )
 {
    UChar  ch = (UChar)((UInt)c);
    UChar* p  = (UChar*)s;
@@ -130,7 +136,7 @@
    }
 }
 
-char* strcat ( char* dst, const char* src )
+DECL( char* strcat ( char* dst, const char* src ) )
 {
    const Char* src_orig = src;
          Char* dst_orig = dst;
@@ -149,7 +155,7 @@
    return dst_orig;
 }
 
-char* strncat ( char* dst, const char* src, SizeT n )
+DECL( char* strncat ( char* dst, const char* src, SizeT n ) )
 {
    const Char* src_orig = src;
          Char* dst_orig = dst;
@@ -170,21 +176,21 @@
    return dst_orig;
 }
 
-SizeT strnlen ( const char* str, SizeT n )
+DECL( SizeT strnlen ( const char* str, SizeT n ) )
 {
    SizeT i = 0;
    while (i < n && str[i] != 0) i++;
    return i;
 }
 
-SizeT strlen ( const char* str )
+DECL( SizeT strlen ( const char* str ) )
 {
    SizeT i = 0;
    while (str[i] != 0) i++;
    return i;
 }
 
-char* strcpy ( char* dst, const char* src )
+DECL( char* strcpy ( char* dst, const char* src ) )
 {
    const Char* src_orig = src;
          Char* dst_orig = dst;
@@ -203,7 +209,7 @@
    return dst_orig;
 }
 
-char* strncpy ( char* dst, const char* src, SizeT n )
+DECL( char* strncpy ( char* dst, const char* src, SizeT n ) )
 {
    const Char* src_orig = src;
          Char* dst_orig = dst;
@@ -219,7 +225,7 @@
    return dst_orig;
 }
 
-int strncmp ( const char* s1, const char* s2, SizeT nmax )
+DECL( int strncmp ( const char* s1, const char* s2, SizeT nmax ) )
 {
    SizeT n = 0;
    while (True) {
@@ -235,7 +241,7 @@
    }
 }
 
-int strcmp ( const char* s1, const char* s2 )
+DECL( int strcmp ( const char* s1, const char* s2 ) )
 {
    register unsigned char c1;
    register unsigned char c2;
@@ -251,7 +257,7 @@
    return 0;
 }
 
-void* memchr(const void *s, int c, SizeT n)
+DECL( void* memchr(const void *s, int c, SizeT n) )
 {
    SizeT i;
    UChar c0 = (UChar)c;
@@ -261,7 +267,7 @@
    return NULL;
 }
 
-void* memcpy( void *dst, const void *src, SizeT len )
+DECL( void* memcpy( void *dst, const void *src, SizeT len ) )
 {
    register char *d;
    register char *s;
@@ -302,7 +308,7 @@
    return dst;
 }
 
-int memcmp ( const void *s1V, const void *s2V, SizeT n )
+DECL( int memcmp ( const void *s1V, const void *s2V, SizeT n ) )
 {
    int res;
    unsigned char a0;
@@ -327,7 +333,7 @@
 /* Copy SRC to DEST, returning the address of the terminating '\0' in
    DEST. (minor variant of strcpy) */
 
-char* stpcpy ( char* dst, const char* src )
+DECL( char* stpcpy ( char* dst, const char* src ) )
 {
    const Char* src_orig = src;
          Char* dst_orig = dst;
@@ -346,7 +352,7 @@
    return dst;
 }
 
-void *memset(void *s, Int c, SizeT n)
+DECL( void *memset(void *s, Int c, SizeT n) )
 {
    unsigned char *cp = s;
 
@@ -359,7 +365,7 @@
 
 /* Find the first occurrence of C in S or the final NUL byte.  */
 
-char* glibc232_strchrnul (const char* s, int c_in)
+DECL( char* glibc232_strchrnul (const char* s, int c_in) )
 {
    unsigned char  c        = (unsigned char) c_in;
    unsigned char* char_ptr = (unsigned char *)s;
@@ -373,7 +379,7 @@
 
 /* Find the first occurrence of C in S.  */
 
-char* glibc232_rawmemchr (const char* s, int c_in)
+DECL( char* glibc232_rawmemchr (const char* s, int c_in) )
 {
    unsigned char  c        = (unsigned char) c_in;
    unsigned char* char_ptr = (unsigned char *)s;
@@ -385,5 +391,5 @@
 
 
 /*--------------------------------------------------------------------*/
-/*--- end                                     mac_replace_strmem.c ---*/
+/*--- end                                                          ---*/
 /*--------------------------------------------------------------------*/