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. */