diff --git a/configure.in b/configure.in index 0adec58..d2cf025 100644 --- a/configure.in +++ b/configure.in @@ -1017,6 +1017,29 @@ AC_MSG_RESULT([no]) AM_CONDITIONAL([HAVE_AT_FDCWD], [test x$ac_have_at_fdcwd = xyes]) +# Check for stpncpy function definition in string.h + +AC_MSG_CHECKING([for stpncpy]) +safe_CFLAGS=$CFLAGS +CFLAGS="-Werror" +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#define _GNU_SOURCE +#include +]], [[ + char *d; + char *s; + size_t n = 0; + char *r = stpncpy(d, s, n); +]])], [ +ac_have_stpncpy=yes +AC_MSG_RESULT([yes]) +], [ +ac_have_stpncpy=no +AC_MSG_RESULT([no]) +]) +CFLAGS=$safe_CFLAGS + +AM_CONDITIONAL([HAVE_STPNCPY], [test x$ac_have_stpncpy = xyes]) # Check for CLOCK_MONOTONIC diff --git a/memcheck/tests/Makefile.am b/memcheck/tests/Makefile.am index 018ecc0..0429591 100644 --- a/memcheck/tests/Makefile.am +++ b/memcheck/tests/Makefile.am @@ -288,7 +288,6 @@ check_PROGRAMS = \ sbfragment \ sh-mem sh-mem-random \ sigaltstack signal2 sigprocmask static_malloc sigkill \ - stpncpy \ strchr \ str_tester \ supp_unknown supp1 supp2 suppfree \ @@ -307,6 +306,10 @@ if DWARF4 check_PROGRAMS += dw4 endif +if HAVE_STPNCPY +check_PROGRAMS += stpncpy +endif + AM_CFLAGS += $(AM_FLAG_M3264_PRI) AM_CXXFLAGS += $(AM_FLAG_M3264_PRI) diff --git a/memcheck/tests/stpncpy.c b/memcheck/tests/stpncpy.c index 4c83419..fe348f8 100644 --- a/memcheck/tests/stpncpy.c +++ b/memcheck/tests/stpncpy.c @@ -1,5 +1,7 @@ #include #include + +#define _GNU_SOURCE #include int main(int argc, char **argv) diff --git a/memcheck/tests/stpncpy.vgtest b/memcheck/tests/stpncpy.vgtest index fbfcaa7..a54595a 100644 --- a/memcheck/tests/stpncpy.vgtest +++ b/memcheck/tests/stpncpy.vgtest @@ -1,2 +1,3 @@ prog: stpncpy +prereq: test -e ./stpncpy vgopts: -q