From: Julian Seward Date: Wed, 10 Nov 2004 17:24:44 +0000 (+0000) Subject: Provide our own versions of strchrnul and rawmemchr so we don't have X-Git-Tag: svn/VALGRIND_3_0_1^2~795 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2b3bb7f8a509182fa7118fd5f2cd4da5915b0b7a;p=thirdparty%2Fvalgrind.git Provide our own versions of strchrnul and rawmemchr so we don't have to deal with glibc's ultra-optimised versions. --> CVS repo ? git-svn-id: svn://svn.valgrind.org/vex/trunk@539 --- diff --git a/VEX/head20041019/coregrind/vg_symtab2.c b/VEX/head20041019/coregrind/vg_symtab2.c index 87f21c5f75..3f62f8962e 100644 --- a/VEX/head20041019/coregrind/vg_symtab2.c +++ b/VEX/head20041019/coregrind/vg_symtab2.c @@ -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"); } /*------------------------------------------------------------*/ diff --git a/VEX/head20041019/memcheck/mac_replace_strmem.c b/VEX/head20041019/memcheck/mac_replace_strmem.c index 5e8ecd3347..2552d07111 100644 --- a/VEX/head20041019/memcheck/mac_replace_strmem.c +++ b/VEX/head20041019/memcheck/mac_replace_strmem.c @@ -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 ---*/ /*--------------------------------------------------------------------*/