]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Provide our own versions of strchrnul and rawmemchr so we don't have
authorJulian Seward <jseward@acm.org>
Wed, 10 Nov 2004 17:24:44 +0000 (17:24 +0000)
committerJulian Seward <jseward@acm.org>
Wed, 10 Nov 2004 17:24:44 +0000 (17:24 +0000)
to deal with glibc's ultra-optimised versions.

--> CVS repo ?

git-svn-id: svn://svn.valgrind.org/vex/trunk@539

VEX/head20041019/coregrind/vg_symtab2.c
VEX/head20041019/memcheck/mac_replace_strmem.c

index 87f21c5f752e1839291362480f6ef00855652635..3f62f8962e61d473a0d4033e7c185f8910371a67 100644 (file)
@@ -2521,6 +2521,10 @@ void VG_(setup_code_redirect_table) ( void )
                     "*vgpreload_memcheck.so*", "stpcpy");
    add_redirect_sym("soname:ld-linux.so.2", "strchr",
                     "*vgpreload_memcheck.so*", "strchr");
+   add_redirect_sym("soname:libc.so.6", "strchrnul",
+                    "*vgpreload_memcheck.so*", "glibc232_strchrnul");
+   add_redirect_sym("soname:libc.so.6", "rawmemchr",
+                    "*vgpreload_memcheck.so*", "glibc232_rawmemchr");
 }
 
 /*------------------------------------------------------------*/
index 5e8ecd3347170f61c4c6002175422c81646fd1ed..2552d07111871f6df1939e7bfe0c15ffb81d67a8 100644 (file)
@@ -353,6 +353,35 @@ char* stpcpy ( char* dst, const char* src )
 }
 
 
+/* Find the first occurrence of C in S or the final NUL byte.  */
+
+char* glibc232_strchrnul (const char* s, int c_in)
+{
+   unsigned char  c        = (unsigned char) c_in;
+   unsigned char* char_ptr = (unsigned char *)s;
+   while (1) {
+      if (*char_ptr == 0) return char_ptr;
+      if (*char_ptr == c) return char_ptr;
+      char_ptr++;
+   }
+}
+
+
+/* Find the first occurrence of C in S.  */
+
+char* glibc232_rawmemchr (const char* s, int c_in)
+{
+   unsigned char  c        = (unsigned char) c_in;
+   unsigned char* char_ptr = (unsigned char *)s;
+   while (1) {
+      if (*char_ptr == c) return char_ptr;
+      char_ptr++;
+   }
+}
+
+
+
+
 /*--------------------------------------------------------------------*/
 /*--- end                                     mac_replace_strmem.c ---*/
 /*--------------------------------------------------------------------*/