From: Paul Floyd Date: Wed, 1 Jun 2022 20:09:50 +0000 (+0200) Subject: Cleanup of str* and mem* functions X-Git-Tag: VALGRIND_3_20_0~53 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4fb52a67b5650ecc3c7d90d39ab2dc67b4476505;p=thirdparty%2Fvalgrind.git Cleanup of str* and mem* functions Add function checks to configure.ac Use the configure HAVE_ macro rather than OS-dependent tests. I suspect that a lot of the tests hve been obsolete for many years. Add wrappers to FreeBSD. :w --- diff --git a/configure.ac b/configure.ac index eda617fc58..369daa173a 100755 --- a/configure.ac +++ b/configure.ac @@ -4790,6 +4790,11 @@ AC_CHECK_FUNCS([ \ swapcontext \ syscall \ utimensat \ + mempcpy \ + stpncpy \ + strchrnul \ + memrchr \ + strndup \ ]) # AC_CHECK_LIB adds any library found to the variable LIBS, and links these diff --git a/dhat/tests/copy.c b/dhat/tests/copy.c index ccaf8ba901..18479d782b 100644 --- a/dhat/tests/copy.c +++ b/dhat/tests/copy.c @@ -43,10 +43,10 @@ void f(char* a, char* b, wchar_t* wa, wchar_t* wb) { memcpy (a, b, 1000); // Redirects to memmove memcpy (a, b, 1000); // Redirects to memmove memmove(a, b, 1000); -#if defined(VGO_solaris) || defined(VGO_darwin) || (defined(VGO_freebsd) && defined(__GNUC__)) - memcpy(a, b, 1000); -#else +#if defined(HAVE_MEMPCPY) mempcpy(a, b, 1000); +#else + memcpy(a, b, 1000); #endif bcopy (a, b, 1000); // Redirects to memmove strcpy (a, b); diff --git a/memcheck/tests/str_tester.c b/memcheck/tests/str_tester.c index 01354eb132..1201bbfc22 100644 --- a/memcheck/tests/str_tester.c +++ b/memcheck/tests/str_tester.c @@ -33,6 +33,7 @@ #include #include #include +#include "../../config.h" #ifndef HAVE_GNU_LD #define _sys_nerr sys_nerr @@ -264,8 +265,7 @@ test_stpcpy (void) SIMPLE_COPY(stpcpy, 16, "6666666666666666", 59); } -// DDD: better done by testing for the function. -#if !defined(__APPLE__) && !defined(__FreeBSD__) +#if defined(HAVE_STPNCPY) static void test_stpncpy (void) { @@ -466,8 +466,7 @@ test_strchr (void) } } -// DDD: better done by testing for the function. -#if !defined(__APPLE__) && !defined(__FreeBSD__) +#if defined(HAVE_STRCHRNUL) static void test_strchrnul (void) { @@ -578,8 +577,7 @@ test_strrchr (void) } } -// DDD: better done by testing for the function. -#if !defined(__APPLE__) && !defined(__sun) && !defined(__FreeBSD__) +#if defined(HAVE_MEMRCHR) static void test_memrchr (void) { @@ -1071,7 +1069,7 @@ test_memcpy (void) } } -#if !defined(__APPLE__) && !defined(__sun) && !defined(__FreeBSD__) +#if defined(HAVE_MEMPCPY) static void test_mempcpy (void) { @@ -1287,7 +1285,7 @@ test_bzero (void) equal(one, "abcdef", 4); /* Zero-length copy. */ } -#if !defined(__APPLE__) && !defined(__FreeBSD__) +#if defined(HAVE_STRNDUP) static void test_strndup (void) { @@ -1422,7 +1420,7 @@ main (void) /* A closely related function is stpcpy. */ test_stpcpy (); -#if !defined(__APPLE__) && !defined(__FreeBSD__) +#if defined(HAVE_STPNCPY) /* stpncpy. */ test_stpncpy (); #endif @@ -1445,7 +1443,7 @@ main (void) /* strchr. */ test_strchr (); -# if !defined(__APPLE__) && !defined(__FreeBSD__) +# if defined(HAVE_STRCHRNUL) /* strchrnul. */ test_strchrnul (); # endif @@ -1461,7 +1459,7 @@ main (void) /* strrchr. */ test_strrchr (); -# if !defined(__APPLE__) && !defined(__sun) && !defined(__FreeBSD__) +# if defined(HAVE_MEMRCHR) /* memrchr. */ test_memrchr (); # endif @@ -1502,7 +1500,7 @@ main (void) /* memmove - must work on overlap. */ test_memmove (); -# if !defined(__APPLE__) && !defined(__sun) && !defined(__FreeBSD__) +# if defined(HAVE_MEMPCPY) /* mempcpy */ test_mempcpy (); # endif @@ -1522,7 +1520,7 @@ main (void) /* bcmp - somewhat like memcmp. */ test_bcmp (); -#if !defined(__APPLE__) && !defined(__FreeBSD__) +#if defined(HAVE_STRNDUP) /* strndup. */ test_strndup (); #endif diff --git a/shared/vg_replace_strmem.c b/shared/vg_replace_strmem.c index 5396e83be0..aab1413917 100644 --- a/shared/vg_replace_strmem.c +++ b/shared/vg_replace_strmem.c @@ -461,6 +461,10 @@ static inline void my_exit ( int x ) STRNLEN(VG_Z_LIBC_SONAME, strnlen) STRNLEN(VG_Z_LIBC_SONAME, __GI_strnlen) +#elif defined(VGO_freebsd) + + STRNLEN(VG_Z_LIBC_SONAME, srtnlen) + #elif defined(VGO_darwin) # if DARWIN_VERS == DARWIN_10_9 STRNLEN(libsystemZucZddylib, strnlen) @@ -853,6 +857,9 @@ static inline void my_exit ( int x ) STRCASECMP_L(VG_Z_LIBC_SONAME, __GI_strcasecmp_l) STRCASECMP_L(VG_Z_LIBC_SONAME, __GI___strcasecmp_l) +#elif defined(VGO_freebsd) + STRCASECMP_L(VG_Z_LIBC_SONAME, strcasecmp_l) + #elif defined(VGO_darwin) //STRCASECMP_L(VG_Z_LIBC_SONAME, strcasecmp_l) @@ -891,6 +898,9 @@ static inline void my_exit ( int x ) STRNCASECMP_L(VG_Z_LIBC_SONAME, __GI_strncasecmp_l) STRNCASECMP_L(VG_Z_LIBC_SONAME, __GI___strncasecmp_l) +#elif defined(VGO_freebsd) + STRNCASECMP_L(VG_Z_LIBC_SONAME, strncasecmp_l) + #elif defined(VGO_darwin) //STRNCASECMP_L(VG_Z_LIBC_SONAME, strncasecmp_l) //STRNCASECMP_L(VG_Z_DYLD, strncasecmp_l) @@ -972,6 +982,9 @@ static inline void my_exit ( int x ) MEMCHR(VG_Z_LIBC_SONAME, memchr) MEMCHR(VG_Z_LIBC_SONAME, __GI_memchr) +#elif defined(VGO_freebsd) + MEMCHR(VG_Z_LIBC_SONAME, memchr) + #elif defined(VGO_darwin) # if DARWIN_VERS == DARWIN_10_9 MEMCHR(VG_Z_DYLD, memchr) @@ -1673,6 +1686,8 @@ static inline void my_exit ( int x ) GLIBC25_MEMPCPY(VG_Z_LD_LINUX_SO_3, mempcpy) /* ld-linux.so.3 */ GLIBC25_MEMPCPY(VG_Z_LD_LINUX_X86_64_SO_2, mempcpy) /* ld-linux-x86-64.so.2 */ +#elif defined(VGO_freebsd) + GLIBC25_MEMPCPY(VG_Z_LIBC_SONAME, mempcpy) #elif defined(VGO_darwin) //GLIBC25_MEMPCPY(VG_Z_LIBC_SONAME, mempcpy)