memmove on glibc on amd64 is over-optimised; replace it.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3680 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/memcheck/mac_replace_strmem.c b/memcheck/mac_replace_strmem.c
index d8b37d5..2b7c4c6 100644
--- a/memcheck/mac_replace_strmem.c
+++ b/memcheck/mac_replace_strmem.c
@@ -362,6 +362,23 @@
    return s;
 }
 
+DECL( void *memmove(void *dstV, const void *srcV, SizeT n) )
+{
+   SizeT i;
+   Char* dst = (Char*)dstV;
+   Char* src = (Char*)srcV;
+   if (dst < src) {
+      for (i = 0; i < n; i++)
+         dst[i] = src[i];
+   }
+   else 
+   if (dst > src) {
+      for (i = 0; i < n; i++)
+         dst[n-i-1] = src[n-i-1];
+   }
+   return dst;
+}
+
 
 /* Find the first occurrence of C in S or the final NUL byte.  */