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
This commit is contained in:
Paul Floyd 2022-06-01 22:09:50 +02:00
parent 7289e2639c
commit 4fb52a67b5
4 changed files with 34 additions and 16 deletions

View File

@ -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

View File

@ -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);

View File

@ -33,6 +33,7 @@
#include <string.h>
#include <strings.h>
#include <fcntl.h>
#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

View File

@ -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)