From: Julian Seward Date: Tue, 23 Nov 2004 00:20:17 +0000 (+0000) Subject: Do our own implementations of strchrnul() and rawmemchr(). X-Git-Tag: svn/VALGRIND_3_0_0~1243 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=166033939c2e26c5f2d874914b891763f16bed81;p=thirdparty%2Fvalgrind.git Do our own implementations of strchrnul() and rawmemchr(). git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3075 --- diff --git a/coregrind/vg_symtab2.c b/coregrind/vg_symtab2.c index 874ab227fb..9b2984290b 100644 --- a/coregrind/vg_symtab2.c +++ b/coregrind/vg_symtab2.c @@ -2517,12 +2517,26 @@ void VG_(setup_code_redirect_table) ( void ) */ add_redirect_sym("soname:libc.so.6", "stpcpy", "*vgpreload_memcheck.so*", "stpcpy"); + + add_redirect_sym("soname:libc.so.6", "strlen", + "*vgpreload_memcheck.so*", "strlen"); + add_redirect_sym("soname:libc.so.6", "strnlen", "*vgpreload_memcheck.so*", "strnlen"); + add_redirect_sym("soname:ld-linux.so.2", "stpcpy", "*vgpreload_memcheck.so*", "stpcpy"); + + add_redirect_sym("soname:libc.so.6", "strchr", + "*vgpreload_memcheck.so*", "strchr"); 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/memcheck/mac_replace_strmem.c b/memcheck/mac_replace_strmem.c index 5e8ecd3347..c268a2dee6 100644 --- a/memcheck/mac_replace_strmem.c +++ b/memcheck/mac_replace_strmem.c @@ -353,6 +353,33 @@ 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 ---*/ /*--------------------------------------------------------------------*/