--- a/libmudflap/mf-hooks2.c
+++ b/libmudflap/mf-hooks2.c
@@ -421,7 +421,7 @@ WRAPPER2(void, bzero, void *s, size_t n)
 {
   TRACE ("%s\n", __PRETTY_FUNCTION__);
   MF_VALIDATE_EXTENT(s, n, __MF_CHECK_WRITE, "bzero region");
-  bzero (s, n);
+  memset (s, 0, n);
 }
 
 
@@ -431,7 +431,7 @@ WRAPPER2(void, bcopy, const void *src, v
   TRACE ("%s\n", __PRETTY_FUNCTION__);
   MF_VALIDATE_EXTENT(src, n, __MF_CHECK_READ, "bcopy src");
   MF_VALIDATE_EXTENT(dest, n, __MF_CHECK_WRITE, "bcopy dest");
-  bcopy (src, dest, n);
+  memmove (dest, src, n);
 }
 
 
@@ -441,7 +441,7 @@ WRAPPER2(int, bcmp, const void *s1, cons
   TRACE ("%s\n", __PRETTY_FUNCTION__);
   MF_VALIDATE_EXTENT(s1, n, __MF_CHECK_READ, "bcmp 1st arg");
   MF_VALIDATE_EXTENT(s2, n, __MF_CHECK_READ, "bcmp 2nd arg");
-  return bcmp (s1, s2, n);
+  return n == 0 ? 0 : memcmp (s1, s2, n);
 }
 
 
@@ -450,7 +450,7 @@ WRAPPER2(char *, index, const char *s, i
   size_t n = strlen (s);
   TRACE ("%s\n", __PRETTY_FUNCTION__);
   MF_VALIDATE_EXTENT(s, CLAMPADD(n, 1), __MF_CHECK_READ, "index region");
-  return index (s, c);
+  return strchr (s, c);
 }
 
 
@@ -459,7 +459,7 @@ WRAPPER2(char *, rindex, const char *s, 
   size_t n = strlen (s);
   TRACE ("%s\n", __PRETTY_FUNCTION__);
   MF_VALIDATE_EXTENT(s, CLAMPADD(n, 1), __MF_CHECK_READ, "rindex region");
-  return rindex (s, c);
+  return strrchr (s, c);
 }
 
 /* XXX:  stpcpy, memccpy */