This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Configure: assume C89 headers in d_c99_variadic_macros probe
[perl5.git] / Configure
index 4492020..2f2d00a 100755 (executable)
--- a/Configure
+++ b/Configure
 #
 # Note: this Configure script was generated automatically by the tool
 # called "metaconfig". Rather than working with this copy of Configure,
-# you may wish to get metaconfig. Perl uses a modified version of this
-# tool, available in the "dist" folder in the checkout of the git repo
-#    $ git clone git://perl5.git.perl.org/metaconfig.git metaconfig
-# The original dist package (including metaconfig) is available via SVN:
-#    $ svn co https://svn.code.sf.net/p/dist/code/trunk/dist
+# you should use metaconfig. Perl uses a modified version of this
+# tool, and this, together with the metaconfig units, are available
+# in the git repository:
+#    $ git clone https://github.com/perl5-metaconfig/metaconfig metaconfig
+# The original dist package (including metaconfig) is available on github:
+#    $ git clone https://github.com/rmanfredi/dist.git dist-git
 #
 # Though this script was generated by metaconfig from metaunits, it is
-# OK to send patches against Configure itself. It's up to the Configure
-# pumpkin to backport the patch to the metaunits if it is accepted.
-# For more information on patching Configure, see pod/perlhack.pod
-#
-# The metaunits are also available from the public git repository:
-#     http://perl5.git.perl.org/metaconfig.git/ or
-#     $ git clone git://perl5.git.perl.org/metaconfig.git metaconfig
-#
-# See Porting/pumpkin.pod for more information on metaconfig.
+# OK to send patches against Configure itself (but not to commit them
+# to blead). It's up to
+# the Configure maintainers to backport the patch to the metaunits if it
+# is accepted. Exceptions to this rule, and more information, is in
+# Porting/pumpkin.pod.
 
 # Generated using [metaconfig 3.5 PL0]
 # (with additional metaconfig patches by perlbug@perl.org)
@@ -394,11 +391,11 @@ d_attribute_unused=''
 d_attribute_warn_unused_result=''
 d_printf_format_null=''
 d_backtrace=''
-d_bcmp=''
-d_bcopy=''
 d_builtin_choose_expr=''
 d_builtin_expect=''
-d_bzero=''
+d_builtin_add_overflow=''
+d_builtin_mul_overflow=''
+d_builtin_sub_overflow=''
 d_c99_variadic_macros=''
 d_casti32=''
 castflags=''
@@ -498,6 +495,11 @@ d_fpgetround=''
 d_fpos64_t=''
 d_frexpl=''
 d_fs_data_s=''
+d_fchmodat=''
+d_linkat=''
+d_openat=''
+d_renameat=''
+d_unlinkat=''
 d_fseeko=''
 d_fsetpos=''
 d_fstatfs=''
@@ -626,6 +628,7 @@ d_llrint=''
 d_llrintl=''
 d_llround=''
 d_llroundl=''
+d_localeconv_l=''
 d_localtime_r=''
 d_localtime_r_needs_tzset=''
 localtime_r_proto=''
@@ -655,14 +658,12 @@ d_madvise=''
 d_malloc_good_size=''
 d_malloc_size=''
 d_mblen=''
+d_mbrlen=''
+d_mbrtowc=''
 d_mbstowcs=''
 d_mbtowc=''
-d_memchr=''
-d_memcmp=''
-d_memcpy=''
 d_memmem=''
-d_memmove=''
-d_memset=''
+d_memrchr=''
 d_mkdir=''
 d_mkdtemp=''
 d_mkfifo=''
@@ -683,6 +684,7 @@ d_msgsnd=''
 d_msync=''
 d_munmap=''
 d_nan=''
+d_nanosleep=''
 d_nearbyint=''
 d_duplocale=''
 d_freelocale=''
@@ -694,6 +696,7 @@ d_nextafter=''
 d_nexttoward=''
 d_nice=''
 d_nl_langinfo=''
+d_thread_safe_nl_langinfo_l=''
 d_off64_t=''
 d_open3=''
 d_fpathconf=''
@@ -737,9 +740,6 @@ d_rename=''
 d_rint=''
 d_rmdir=''
 d_round=''
-d_safebcpy=''
-d_safemcpy=''
-d_sanemcmp=''
 d_sbrkproto=''
 d_scalbn=''
 d_scalbnl=''
@@ -809,8 +809,6 @@ d_signbit=''
 d_sigprocmask=''
 d_sigsetjmp=''
 usesitecustomize=''
-d_snprintf=''
-d_vsnprintf=''
 d_sockatmark=''
 d_sockatmarkproto=''
 d_ip_mreq=''
@@ -863,7 +861,6 @@ stdio_ptr=''
 d_index=''
 d_strchr=''
 d_strcoll=''
-d_strctcpy=''
 d_strerrm=''
 d_strerror=''
 d_sysernlst=''
@@ -874,9 +871,11 @@ strerror_r_proto=''
 d_strftime=''
 d_strlcat=''
 d_strlcpy=''
+d_strnlen=''
 d_strtod=''
 d_strtol=''
 d_strtold=''
+d_strtold_l=''
 d_strtoll=''
 d_strtoq=''
 d_strtoul=''
@@ -927,7 +926,6 @@ d_vfork=''
 usevfork=''
 d_voidsig=''
 signal_t=''
-d_volatile=''
 d_charvspr=''
 d_vprintf=''
 d_wait4=''
@@ -937,6 +935,7 @@ d_wcstombs=''
 d_wcsxfrm=''
 d_wctomb=''
 d_writev=''
+default_inc_excludes_dot=''
 dlext=''
 bin_ELF=''
 cccdlflags=''
@@ -948,6 +947,7 @@ lddlflags=''
 usedl=''
 doublesize=''
 dtraceobject=''
+dtracexnolibs=''
 ebcdic=''
 fflushNULL=''
 fflushall=''
@@ -1085,6 +1085,7 @@ i_stdarg=''
 i_varargs=''
 i_varhdr=''
 i_vfork=''
+i_wchar=''
 d_inc_version_list=''
 inc_version_list=''
 inc_version_list_init=''
@@ -2894,7 +2895,6 @@ case "$lns" in
 *)     echo "No symbolic links, so not testing for their testing..." >&4
        ;;
 esac
-echo " "
 
 : Make symlinks util
 case "$mksymlinks" in
@@ -11354,14 +11354,6 @@ set d_attribute_warn_unused_result
 eval $setvar
 $rm -f attrib*
 
-: see if bcmp exists
-set bcmp d_bcmp
-eval $inlibc
-
-: see if bcopy exists
-set bcopy d_bcopy
-eval $inlibc
-
 : see if getpgrp exists
 set getpgrp d_getpgrp
 eval $inlibc
@@ -11494,6 +11486,117 @@ set d_bsdsetpgrp
 eval $setvar
 $rm_try
 
+: Look for GCC-style __builtin_add_overflow
+case "$d_builtin_add_overflow" in
+'')
+    echo " "
+    echo "Checking whether your compiler can handle __builtin_add_overflow ..." >&4
+    $cat >try.c <<'EOCP'
+int main(void) {
+    const unsigned int uint_max = ~0u;
+    int target_int = 0;
+    if (__builtin_add_overflow(1, 2, &target_int) || target_int != 3) {
+        return 1;
+    }
+    if (!__builtin_add_overflow((int)(uint_max >> 1), 1, &target_int)) {
+        return 1;
+    }
+    if (!__builtin_add_overflow(uint_max, -1, &target_int)) {
+        return 1;
+    }
+    return 0;
+}
+EOCP
+    set try
+    if eval $compile && $run ./try; then
+        echo "Your C compiler supports __builtin_add_overflow."
+        val="$define"
+    else
+        echo "Your C compiler doesn't seem to understand __builtin_add_overflow."
+        val="$undef"
+    fi
+    ;;
+*) val="$d_builtin_add_overflow" ;;
+esac
+
+set d_builtin_add_overflow
+eval $setvar
+$rm_try
+
+: Look for GCC-style __builtin_sub_overflow
+case "$d_builtin_sub_overflow" in
+'')
+    echo " "
+    echo "Checking whether your compiler can handle __builtin_sub_overflow ..." >&4
+    $cat >try.c <<'EOCP'
+int main(void) {
+    const unsigned int uint_max = ~0u;
+    int target_int = 0;
+    if (__builtin_sub_overflow(1, -2, &target_int) || target_int != 3) {
+        return 1;
+    }
+    if (!__builtin_sub_overflow(-(int)(uint_max >> 1), 2, &target_int)) {
+        return 1;
+    }
+    if (!__builtin_sub_overflow(uint_max, 1, &target_int)) {
+        return 1;
+    }
+    return 0;
+}
+EOCP
+    set try
+    if eval $compile && $run ./try; then
+        echo "Your C compiler supports __builtin_sub_overflow."
+        val="$define"
+    else
+        echo "Your C compiler doesn't seem to understand __builtin_sub_overflow."
+        val="$undef"
+    fi
+    ;;
+*) val="$d_builtin_sub_overflow" ;;
+esac
+
+set d_builtin_sub_overflow
+eval $setvar
+$rm_try
+
+: Look for GCC-style __builtin_mul_overflow
+case "$d_builtin_mul_overflow" in
+'')
+    echo " "
+    echo "Checking whether your compiler can handle __builtin_mul_overflow ..." >&4
+    $cat >try.c <<'EOCP'
+int main(void) {
+    const unsigned int uint_max = ~0u;
+    int target_int = 0;
+    if (__builtin_mul_overflow(2, 3, &target_int) || target_int != 6) {
+        return 1;
+    }
+    if (!__builtin_mul_overflow((int)(uint_max >> 1), 2, &target_int)) {
+        return 1;
+    }
+    if (!__builtin_mul_overflow(uint_max, 1, &target_int)) {
+        return 1;
+    }
+    return 0;
+}
+EOCP
+    set try
+    if eval $compile && $run ./try; then
+        echo "Your C compiler supports __builtin_mul_overflow."
+        val="$define"
+    else
+        echo "Your C compiler doesn't seem to understand __builtin_mul_overflow."
+        val="$undef"
+    fi
+    ;;
+*) val="$d_builtin_mul_overflow" ;;
+esac
+
+set d_builtin_mul_overflow
+eval $setvar
+$rm_try
+
 : Look for GCC-style __builtin_choose_expr
 case "$d_builtin_choose_expr" in
 '')
@@ -11561,124 +11664,9 @@ set d_builtin_expect
 eval $setvar
 $rm_try
 
-: see if bzero exists
-set bzero d_bzero
-eval $inlibc
-
-: see if stdarg is available
-echo " "
-if $test `./findhdr stdarg.h`; then
-       echo "<stdarg.h> found." >&4
-       valstd="$define"
-else
-       echo "<stdarg.h> NOT found." >&4
-       valstd="$undef"
-fi
-
-: see if varargs is available
-echo " "
-if $test `./findhdr varargs.h`; then
-       echo "<varargs.h> found." >&4
-else
-       echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
-fi
-
-: set up the varargs testing programs
-$cat > varargs.c <<EOP
-#ifdef I_STDARG
-#include <stdarg.h>
-#endif
-#ifdef I_VARARGS
-#include <varargs.h>
-#endif
-
-#ifdef I_STDARG
-int f(char *p, ...)
-#else
-int f(va_alist)
-va_dcl
-#endif
-{
-       va_list ap;
-#ifndef I_STDARG
-       char *p;
-#endif
-#ifdef I_STDARG
-       va_start(ap,p);
-#else
-       va_start(ap);
-       p = va_arg(ap, char *);
-#endif
-       va_end(ap);
-       return 0;
-}
-EOP
-$cat > varargs <<EOP
-$startsh
-if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
-       echo "true"
-else
-       echo "false"
-fi
-$rm -f varargs$_o
-EOP
-chmod +x varargs
-
-: now check which varargs header should be included
-echo " "
-i_varhdr=''
-val=''
-case "$valstd" in
-"$define")
-       if `./varargs I_STDARG`; then
-               val='stdarg.h'
-       elif `./varargs I_VARARGS`; then
-               val='varargs.h'
-       fi
-       ;;
-*)
-       if `./varargs I_VARARGS`; then
-               val='varargs.h'
-       fi
-       ;;
-esac
-case "$val" in
-'')
-       echo " "
-       echo "*** WHOA THERE!!! ***" >&4
-       echo "    Your C compiler \"$cc\" doesn't seem to support stdarg or varargs!" >&4
-       case "$knowitall" in
-       '')
-       echo "    I'm giving up; maybe you can try again with a different compiler?" >&4
-               exit 1
-               ;;
-       esac
-echo "I could not find the definition for va_dcl... You have problems..." >&4
-       val="$undef"; set i_stdarg; eval $setvar
-       val="$undef"; set i_varargs; eval $setvar
-       ;;
-*)
-       set i_varhdr
-       eval $setvar
-       case "$i_varhdr" in
-       stdarg.h)
-               val="$define"; set i_stdarg; eval $setvar
-               val="$undef"; set i_varargs; eval $setvar
-               ;;
-       varargs.h)
-               val="$undef"; set i_stdarg; eval $setvar
-               val="$define"; set i_varargs; eval $setvar
-               ;;
-       esac
-       echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
-esac
-$rm -f varargs*
-
 : see if the Compiler supports C99 variadic macros
-case "$i_stdarg$i_stdlib" in
-    "$define$define")
-    echo "You have <stdarg.h> and <stdlib.h>, so checking for C99 variadic macros." >&4
-    $cat >try.c <<EOCP
+echo "Checking for C99 variadic macros." >&4
+$cat >try.c <<EOCP
 #include <stdio.h>
 #include <stdarg.h>
 
@@ -11691,29 +11679,23 @@ int main() {
   return 0;
 }
 EOCP
-    set try
-    if eval $compile && $run ./try 2>&1 >/dev/null; then
-       case "`$run ./try`" in
-           "123 456 789")
-           echo "You have C99 variadic macros." >&4
-           d_c99_variadic_macros="$define"
-           ;;
-           *)
-           echo "You don't have functional C99 variadic macros." >&4
-           d_c99_variadic_macros="$undef"
-           ;;
-       esac
-    else
-       echo "I couldn't compile and run the test program, so I assume that you don't have functional C99 variadic macros." >&4
+set try
+if eval $compile && $run ./try 2>&1 >/dev/null; then
+    case "`$run ./try`" in
+       "123 456 789")
+       echo "You have C99 variadic macros." >&4
+       d_c99_variadic_macros="$define"
+       ;;
+       *)
+       echo "You don't have functional C99 variadic macros." >&4
        d_c99_variadic_macros="$undef"
-    fi
-    $rm_try
-    ;;
-    *)
-    echo "You don't have <stdarg.h> and <stdlib.h>, so not checking for C99 variadic macros." >&4
+       ;;
+    esac
+else
+    echo "I couldn't compile and run the test program, so I assume that you don't have functional C99 variadic macros." >&4
     d_c99_variadic_macros="$undef"
-    ;;
-esac
+fi
+$rm_try
 
 : see if signal is declared as pointer to function returning int or void
 echo " "
@@ -11926,39 +11908,148 @@ $rm_try
 set cbrt d_cbrt
 eval $inlibc
 
-: see if vprintf exists
+: see if stdarg is available
 echo " "
-if set vprintf val -f d_vprintf; eval $csym; $val; then
-       echo 'vprintf() found.' >&4
-       val="$define"
-       $cat >try.c <<EOF
-#$i_stdarg I_STDARG  /* Only one of these can be defined by i_varhrd */
-#$i_varargs I_VARARGS
+if $test `./findhdr stdarg.h`; then
+       echo "<stdarg.h> found." >&4
+       valstd="$define"
+else
+       echo "<stdarg.h> NOT found." >&4
+       valstd="$undef"
+fi
 
-#$i_stdlib I_STDLIB
-#$i_unistd I_UNISTD
+: see if varargs is available
+echo " "
+if $test `./findhdr varargs.h`; then
+       echo "<varargs.h> found." >&4
+else
+       echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
+fi
 
+: set up the varargs testing programs
+$cat > varargs.c <<EOP
 #ifdef I_STDARG
-#  include <stdarg.h>
-#else /* I_VARARGS */
-#  include <varargs.h>
-#endif
-
-#ifdef I_UNISTD
-#  include <unistd.h>
+#include <stdarg.h>
 #endif
-
-#ifdef I_STDLIB
-#  include <stdlib.h>
+#ifdef I_VARARGS
+#include <varargs.h>
 #endif
 
-#include <stdio.h> /* vsprintf prototype */
-
 #ifdef I_STDARG
-void xxx(int n, ...)
+int f(char *p, ...)
+#else
+int f(va_alist)
+va_dcl
+#endif
 {
-    va_list args;
-    char buf[10];
+       va_list ap;
+#ifndef I_STDARG
+       char *p;
+#endif
+#ifdef I_STDARG
+       va_start(ap,p);
+#else
+       va_start(ap);
+       p = va_arg(ap, char *);
+#endif
+       va_end(ap);
+       return 0;
+}
+EOP
+$cat > varargs <<EOP
+$startsh
+if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
+       echo "true"
+else
+       echo "false"
+fi
+$rm -f varargs$_o
+EOP
+chmod +x varargs
+
+: now check which varargs header should be included
+echo " "
+i_varhdr=''
+val=''
+case "$valstd" in
+"$define")
+       if `./varargs I_STDARG`; then
+               val='stdarg.h'
+       elif `./varargs I_VARARGS`; then
+               val='varargs.h'
+       fi
+       ;;
+*)
+       if `./varargs I_VARARGS`; then
+               val='varargs.h'
+       fi
+       ;;
+esac
+case "$val" in
+'')
+       echo " "
+       echo "*** WHOA THERE!!! ***" >&4
+       echo "    Your C compiler \"$cc\" doesn't seem to support stdarg or varargs!" >&4
+       case "$knowitall" in
+       '')
+       echo "    I'm giving up; maybe you can try again with a different compiler?" >&4
+               exit 1
+               ;;
+       esac
+echo "I could not find the definition for va_dcl... You have problems..." >&4
+       val="$undef"; set i_stdarg; eval $setvar
+       val="$undef"; set i_varargs; eval $setvar
+       ;;
+*)
+       set i_varhdr
+       eval $setvar
+       case "$i_varhdr" in
+       stdarg.h)
+               val="$define"; set i_stdarg; eval $setvar
+               val="$undef"; set i_varargs; eval $setvar
+               ;;
+       varargs.h)
+               val="$undef"; set i_stdarg; eval $setvar
+               val="$define"; set i_varargs; eval $setvar
+               ;;
+       esac
+       echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
+esac
+$rm -f varargs*
+
+: see if vprintf exists
+echo " "
+if set vprintf val -f d_vprintf; eval $csym; $val; then
+       echo 'vprintf() found.' >&4
+       val="$define"
+       $cat >try.c <<EOF
+#$i_stdarg I_STDARG  /* Only one of these can be defined by i_varhrd */
+#$i_varargs I_VARARGS
+
+#$i_stdlib I_STDLIB
+#$i_unistd I_UNISTD
+
+#ifdef I_STDARG
+#  include <stdarg.h>
+#else /* I_VARARGS */
+#  include <varargs.h>
+#endif
+
+#ifdef I_UNISTD
+#  include <unistd.h>
+#endif
+
+#ifdef I_STDLIB
+#  include <stdlib.h>
+#endif
+
+#include <stdio.h> /* vsprintf prototype */
+
+#ifdef I_STDARG
+void xxx(int n, ...)
+{
+    va_list args;
+    char buf[10];
     va_start(args, n);
     exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
 }
@@ -13977,6 +14068,22 @@ eval $inlibc
 set fchmod d_fchmod
 eval $inlibc
 
+: check for openat, unlinkat, renameat, linkat, fchmodat
+set openat d_openat
+eval $inlibc
+
+set unlinkat d_unlinkat
+eval $inlibc
+
+set renameat d_renameat
+eval $inlibc
+
+set linkat d_linkat
+eval $inlibc
+
+set fchmodat d_fchmodat
+eval $inlibc
+
 : see if fchown exists
 set fchown d_fchown
 eval $inlibc
@@ -16289,6 +16396,10 @@ eval $inlibc
 set llroundl d_llroundl
 eval $inlibc
 
+: see if localeconv_l exists
+set localeconv_l d_localeconv_l
+eval $inlibc
+
 : see if localtime_r exists
 set localtime_r d_localtime_r
 eval $inlibc
@@ -16465,36 +16576,28 @@ eval $inlibc
 set mblen d_mblen
 eval $inlibc
 
-: see if mbstowcs exists
-set mbstowcs d_mbstowcs
+: see if mbrlen exists
+set mbrlen d_mbrlen
 eval $inlibc
 
-: see if mbtowc exists
-set mbtowc d_mbtowc
+: see if mbrtowc exists
+set mbrtowc d_mbrtowc
 eval $inlibc
 
-: see if memchr exists
-set memchr d_memchr
-eval $inlibc
-
-: see if memcmp exists
-set memcmp d_memcmp
+: see if mbstowcs exists
+set mbstowcs d_mbstowcs
 eval $inlibc
 
-: see if memcpy exists
-set memcpy d_memcpy
+: see if mbtowc exists
+set mbtowc d_mbtowc
 eval $inlibc
 
 : see if memmem exists
 set memmem d_memmem
 eval $inlibc
 
-: see if memmove exists
-set memmove d_memmove
-eval $inlibc
-
-: see if memset exists
-set memset d_memset
+: see if memrchr exists
+set memrchr d_memrchr
 eval $inlibc
 
 : see if mkdir exists
@@ -16690,6 +16793,10 @@ eval $inlibc
 set nan d_nan
 eval $inlibc
 
+: see if nanosleep exists
+set nanosleep d_nanosleep
+eval $inlibc
+
 : see if nearbyint exists
 set nearbyint d_nearbyint
 eval $inlibc
@@ -16718,37 +16825,6 @@ eval $inlibc
 set quadmath.h i_quadmath
 eval $inhdr
 
-: check for volatile keyword
-echo " "
-echo 'Checking to see if your C compiler knows about "volatile"...' >&4
-$cat >try.c <<'EOCP'
-int main()
-{
-       typedef struct _goo_struct goo_struct;
-       goo_struct * volatile goo = ((goo_struct *)0);
-       struct _goo_struct {
-               long long_int;
-               int reg_int;
-               char char_var;
-       };
-       typedef unsigned short foo_t;
-       char *volatile foo;
-       volatile int bar;
-       volatile foo_t blech;
-       foo = foo;
-}
-EOCP
-if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
-       val="$define"
-       echo "Yup, it does."
-else
-       val="$undef"
-       echo "Nope, it doesn't."
-fi
-set d_volatile
-eval $setvar
-$rm_try
-
 : Check basic sizes
 echo " "
 $echo "Choosing the C types to be used for Perl's internal types..." >&4
@@ -16942,10 +17018,6 @@ case "$i64type" in
 esac
 
 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
-: volatile so that the compiler has to store it out to memory.
-if test X"$d_volatile" = X"$define"; then
-       volatile=volatile
-fi
 $cat <<EOP >try.c
 #include <stdio.h>
 #$i_stdlib I_STDLIB
@@ -16955,7 +17027,8 @@ $cat <<EOP >try.c
 #include <sys/types.h>
 #include <signal.h>
 #ifdef SIGFPE
-$volatile int bletched = 0;
+/* volatile so that the compiler has to store it out to memory */
+volatile int bletched = 0;
 $signal_t blech(int s) { bletched = 1; }
 #endif
 int main() {
@@ -17006,10 +17079,6 @@ esac
 $rm_try
 
 $echo "Checking to find the largest integer value your NVs can hold..." >&4
-: volatile so that the compiler has to store it out to memory.
-if test X"$d_volatile" = X"$define"; then
-       volatile=volatile
-fi
 $cat <<EOP >try.c
 #include <stdio.h>
 
@@ -17021,10 +17090,11 @@ main() {
   int count = 1;
 
   while(count < 256) {
-    $volatile NV up = value + 1.0;
-    $volatile NV negated = -value;
-    $volatile NV down = negated - 1.0;
-    $volatile NV got_up = up - value;
+    /* volatile so that the compiler has to store it out to memory */
+    volatile NV up = value + 1.0;
+    volatile NV negated = -value;
+    volatile NV down = negated - 1.0;
+    volatile NV got_up = up - value;
     int up_good = got_up == 1.0;
     int got_down = down - negated;
     int down_good = got_down == -1.0;
 $rm_try
 
 $echo "Checking whether NV 0.0 is all bits zero in memory..." >&4
-: volatile so that the compiler has to store it out to memory.
-if test X"$d_volatile" = X"$define"; then
-       volatile=volatile
-fi
 $cat <<EOP >try.c
 #include <stdio.h>
 #$i_stdlib I_STDLIB
@@ -17108,12 +17174,14 @@ $cat <<EOP >try.c
 #include <sys/types.h>
 #include <signal.h>
 #ifdef SIGFPE
-$volatile int bletched = 0;
+/* volatile so that the compiler has to store it out to memory */
+volatile int bletched = 0;
 $signal_t blech(int s) { bletched = 1; }
 #endif
 
-int checkit($nvtype d, char *where) {
-    unsigned char *p = (char *)&d;
+int checkit($nvtype d, const char *where) {
+    void *v = &d;
+    unsigned char *p = (unsigned char *)v;
     unsigned char *end = p + sizeof(d);
     int fail = 0;
 
@@ -17123,7 +17191,7 @@ int checkit($nvtype d, char *where) {
     if (!fail)
        return 0;
 
-    p = (char *)&d;
+    p = (unsigned char *)v;
     printf("No - %s: 0x", where);
     while (p < end)
        printf ("%02X", *p++);
@@ -17738,236 +17806,6 @@ eval $inlibc
 set round d_round
 eval $inlibc
 
-: see if memory.h is available.
-val=''
-set memory.h val
-eval $inhdr
-
-: See if it conflicts with string.h
-case "$val" in
-$define)
-       case "$strings" in
-       '') ;;
-       *)
-               $cppstdin $cppflags $cppminus < $strings > mem.h
-               if $contains 'memcpy' mem.h >/dev/null 2>&1; then
-                       echo " "
-                       echo "We won't be including <memory.h>."
-                       val="$undef"
-               fi
-               $rm -f mem.h
-               ;;
-       esac
-esac
-set i_memory
-eval $setvar
-
-: can bcopy handle overlapping blocks?
-echo " "
-val="$undef"
-case "$d_memmove" in
-"$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
-*)     case "$d_bcopy" in
-       "$define")
-               echo "Checking to see if bcopy() can do overlapping copies..." >&4
-               $cat >try.c <<EOCP
-#$i_memory I_MEMORY
-#$i_stdlib I_STDLIB
-#$i_string I_STRING
-#$i_unistd I_UNISTD
-EOCP
-       $cat >>try.c <<'EOCP'
-#include <stdio.h>
-#ifdef I_MEMORY
-#  include <memory.h>
-#endif
-#ifdef I_STDLIB
-#  include <stdlib.h>
-#endif
-#ifdef I_STRING
-#  include <string.h>
-#else
-#  include <strings.h>
-#endif
-#ifdef I_UNISTD
-#  include <unistd.h>  /* Needed for NetBSD */
-#endif
-int main()
-{
-char buf[128], abc[128];
-char *b;
-int len;
-int off;
-int align;
-
-/* Copy "abcde..." string to char abc[] so that gcc doesn't
-   try to store the string in read-only memory. */
-bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
-
-for (align = 7; align >= 0; align--) {
-       for (len = 36; len; len--) {
-               b = buf+align;
-               bcopy(abc, b, len);
-               for (off = 1; off <= len; off++) {
-                       bcopy(b, b+off, len);
-                       bcopy(b+off, b, len);
-                       if (bcmp(b, abc, len))
-                               exit(1);
-               }
-       }
-}
-exit(0);
-}
-EOCP
-               set try
-               if eval $compile_ok; then
-                       if $run ./try 2>/dev/null; then
-                               echo "Yes, it can."
-                               val="$define"
-                       else
-                               echo "It can't, sorry."
-                       fi
-               else
-                       echo "(I can't compile the test program, so we'll assume not...)"
-               fi
-               ;;
-       esac
-       $rm_try
-       ;;
-esac
-set d_safebcpy
-eval $setvar
-
-: can memcpy handle overlapping blocks?
-echo " "
-val="$undef"
-case "$d_memmove" in
-"$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
-*)     case "$d_memcpy" in
-       "$define")
-               echo "Checking to see if memcpy() can do overlapping copies..." >&4
-               $cat >try.c <<EOCP
-#$i_memory I_MEMORY
-#$i_stdlib I_STDLIB
-#$i_string I_STRING
-#$i_unistd I_UNISTD
-EOCP
-       $cat >>try.c <<'EOCP'
-#include <stdio.h>
-#ifdef I_MEMORY
-#  include <memory.h>
-#endif
-#ifdef I_STDLIB
-#  include <stdlib.h>
-#endif
-#ifdef I_STRING
-#  include <string.h>
-#else
-#  include <strings.h>
-#endif
-#ifdef I_UNISTD
-#  include <unistd.h>  /* Needed for NetBSD */
-#endif
-int main()
-{
-char buf[128], abc[128];
-char *b;
-int len;
-int off;
-int align;
-
-/* Copy "abcde..." string to char abc[] so that gcc doesn't
-   try to store the string in read-only memory. */
-memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
-
-for (align = 7; align >= 0; align--) {
-       for (len = 36; len; len--) {
-               b = buf+align;
-               memcpy(b, abc, len);
-               for (off = 1; off <= len; off++) {
-                       memcpy(b+off, b, len);
-                       memcpy(b, b+off, len);
-                       if (memcmp(b, abc, len))
-                               exit(1);
-               }
-       }
-}
-exit(0);
-}
-EOCP
-               set try
-               if eval $compile_ok; then
-                       if $run ./try 2>/dev/null; then
-                               echo "Yes, it can."
-                               val="$define"
-                       else
-                               echo "It can't, sorry."
-                       fi
-               else
-                       echo "(I can't compile the test program, so we'll assume not...)"
-               fi
-               ;;
-       esac
-       $rm_try
-       ;;
-esac
-set d_safemcpy
-eval $setvar
-
-: can memcmp be trusted to compare relative magnitude?
-val="$undef"
-case "$d_memcmp" in
-"$define")
-       echo " "
-       echo "Checking if your memcmp() can compare relative magnitude..." >&4
-       $cat >try.c <<EOCP
-#$i_memory I_MEMORY
-#$i_stdlib I_STDLIB
-#$i_string I_STRING
-#$i_unistd I_UNISTD
-EOCP
-       $cat >>try.c <<'EOCP'
-#include <stdio.h>
-#ifdef I_MEMORY
-#  include <memory.h>
-#endif
-#ifdef I_STDLIB
-#  include <stdlib.h>
-#endif
-#ifdef I_STRING
-#  include <string.h>
-#else
-#  include <strings.h>
-#endif
-#ifdef I_UNISTD
-#  include <unistd.h>  /* Needed for NetBSD */
-#endif
-int main()
-{
-char a = -1;
-char b = 0;
-if ((a < b) && memcmp(&a, &b, 1) < 0)
-       exit(1);
-exit(0);
-}
-EOCP
-       set try
-       if eval $compile_ok; then
-               if $run ./try 2>/dev/null; then
-                       echo "Yes, it can."
-                       val="$define"
-               else
-                       echo "No, it can't (it uses signed chars)."
-               fi
-       else
-               echo "(I can't compile the test program, so we'll assume not...)"
-       fi
-       ;;
-esac
-$rm_try
-set d_sanemcmp
-eval $setvar
-
 : see if prototype for sbrk is available
 echo " "
 set d_sbrkproto sbrk $i_unistd unistd.h
@@ -18938,71 +18776,6 @@ set d_sigsetjmp
 eval $setvar
 $rm_try
 
-: see if snprintf exists
-set snprintf d_snprintf
-eval $inlibc
-
-: see if vsnprintf exists
-set vsnprintf d_vsnprintf
-eval $inlibc
-
-case "$d_snprintf-$d_vsnprintf" in
-"$define-$define")
-    $cat <<EOM
-Checking whether your snprintf() and vsnprintf() work okay...
-EOM
-    $cat >try.c <<'EOCP'
-/* v?snprintf testing logic courtesy of Russ Allbery.
- * According to C99:
- * - if the buffer is too short it still must be \0-terminated
- * - if the buffer is too short the potentially required length
- *   must be returned and not -1
- * - if the buffer is NULL the potentially required length
- *   must be returned and not -1 or core dump
- */
-#include <stdio.h>
-#include <stdarg.h>
-
-char buf[2];
-
-int test (char *format, ...)
-{
-    va_list args;
-    int count;
-
-    va_start (args, format);
-    count = vsnprintf (buf, sizeof buf, format, args);
-    va_end (args);
-    return count;
-}
-
-int main ()
-{
-    return ((test ("%s", "abcd") == 4 && buf[0] == 'a' && buf[1] == '\0'
-             && snprintf (NULL, 0, "%s", "abcd") == 4) ? 0 : 1);
-}
-EOCP
-    set try
-    if eval $compile; then
-       `$run ./try`
-       case "$?" in
-       0) echo "Your snprintf() and vsnprintf() seem to be working okay." ;;
-       *) cat <<EOM >&4
-Your snprintf() and snprintf() don't seem to be working okay.
-EOM
-          d_snprintf="$undef"
-          d_vsnprintf="$undef"
-          ;;
-       esac
-    else
-       echo "(I can't seem to compile the test program--assuming they don't)"
-       d_snprintf="$undef"
-       d_vsnprintf="$undef"
-    fi
-    $rm_try
-    ;;
-esac
-
 : see if sockatmark exists
 set sockatmark d_sockatmark
 eval $inlibc
@@ -19368,30 +19141,6 @@ esac
 set strcoll d_strcoll
 eval $inlibc
 
-: check for structure copying
-echo " "
-echo "Checking to see if your C compiler can copy structs..." >&4
-$cat >try.c <<'EOCP'
-int main()
-{
-       struct blurfl {
-               int dyick;
-       } foo, bar;
-
-       foo = bar;
-}
-EOCP
-if $cc -c try.c >/dev/null 2>&1 ; then
-       val="$define"
-       echo "Yup, it can."
-else
-       val="$undef"
-       echo "Nope, it can't."
-fi
-set d_strctcpy
-eval $setvar
-$rm_try
-
 : see if strerror and/or sys_errlist[] exist
 echo " "
 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
@@ -19496,6 +19245,10 @@ eval $inlibc
 set strlcpy d_strlcpy
 eval $inlibc
 
+: see if strnlen exists
+set strnlen d_strnlen
+eval $inlibc
+
 : see if strtod exists
 set strtod d_strtod
 eval $inlibc
@@ -19508,6 +19261,10 @@ eval $inlibc
 set strtold d_strtold
 eval $inlibc
 
+: see if strtold_l exists
+set strtold_l d_strtold_l
+eval $inlibc
+
 : see if strtoll exists
 set strtoll d_strtoll
 eval $inlibc
@@ -19805,6 +19562,93 @@ eval $hasproto
 set tgamma d_tgamma
 eval $inlibc
 
+: check for thread_safe_nl_langinfo_l item
+$cat <<EOM
+
+Checking to see if you have nl_langinfo_l() and that it is thread-safe
+EOM
+$cat >try.c <<EOCP
+#$i_stdlib I_STDLIB
+#ifdef I_STDLIB
+#  include <stdlib.h>
+#endif
+#$i_string I_STRING
+#ifdef I_STRING
+#  include <string.h>
+#endif
+#$i_langinfo I_LANGINFO
+#ifdef I_LANGINFO
+#  include <langinfo.h>
+#endif
+#$i_pthread I_PTHREAD
+#ifdef I_PTHREAD
+#  include <pthread.h>
+#endif
+#$i_locale I_LOCALE
+#ifdef I_LOCALE
+#  include <locale.h>
+#endif
+
+void *
+thread_start(void * arg)
+{
+    nl_langinfo(RADIXCHAR);
+}
+
+int main() {
+       char * main_buffer;
+       char save_main_buffer[1000];
+        pthread_t subthread;
+        pthread_attr_t attr;
+       
+       main_buffer = nl_langinfo_l(CODESET, newlocale(LC_ALL_MASK, "C", 0));
+
+       /* If too large for our generous allowance, just assume we don't have
+        * it. */
+       if (strlen(main_buffer) >= sizeof(save_main_buffer)) {
+           exit(1);
+       }
+
+       strcpy(save_main_buffer, main_buffer);
+
+       if (pthread_attr_init(&attr) != 0) {
+           exit(1);
+       }
+
+       if (pthread_create(&subthread, &attr, thread_start, NULL) != 0) {
+           exit(1);
+       }
+
+       if (pthread_join(subthread, NULL) != 0) {
+           exit(1);
+       }
+
+        exit(! (strcmp(main_buffer, save_main_buffer) == 0));
+}
+EOCP
+case "$usethreads" in
+    define)
+       set try
+       if eval $compile; then
+               echo "Your system has nl_langinfo_l()..." >&4
+               if $run ./try; then
+                   echo "and it is thread-safe (just as I'd hoped)." >&4
+                   d_thread_safe_nl_langinfo_l="$define"
+                   echo "$d_thread_safe_nl_langinfo_l" >&4
+               else
+                   echo "but it isn't thread-safe, so we won't use it." >&4
+               fi
+       else
+               echo "your system does not have nl_langinfo_l()" >&4
+       fi
+       ;;
+    *) echo "Since threads aren't selected, we won't bother looking for nl_langinfo_l()" >&4
+esac
+if test X"$d_thread_safe_nl_langinfo_l" = X; then
+       d_thread_safe_nl_langinfo_l="$undef"
+fi
+$rm_try
+
 : see if time exists
 echo " "
 if test "X$d_time" = X -o X"$timetype" = X; then
@@ -20625,6 +20469,34 @@ EOCP
        ;;
 esac
 
+: Include . in @INC
+$cat <<EOM
+
+Historically Perl has provided a final fallback of the current working
+directory '.' when searching for a library. This, however, can lead to
+problems when a Perl program which loads optional modules is called from
+a shared directory. This can lead to executing unexpected code.
+
+EOM
+
+# When changing to exclude by default:
+case "$default_inc_excludes_dot" in
+    $undef|false|[nN]*) dflt="n" ;;
+    *)                  dflt="y" ;;
+esac
+# To turn exclude off by default:
+#case "$default_inc_excludes_dot" in
+#    $define|true|[yY]*) dflt="y" ;;
+#    *)                  dflt="n" ;;
+#esac
+
+rp='Exclude '.' from @INC by default? '
+. ./myread
+case "$ans" in
+    [nN]|undef) default_inc_excludes_dot="$undef"  ;;
+    *)          default_inc_excludes_dot="$define" ;;
+esac
+
 : Check what kind of inf/nan your system has
 $echo "Checking the kind of infinities and nans you have..." >&4
 $echo "(The following tests may crash.  That's okay.)" >&4
@@ -20632,13 +20504,17 @@ $cat >try.c <<EOP
 #define DOUBLESIZE $doublesize
 #$d_longdbl HAS_LONG_DOUBLE
 #ifdef HAS_LONG_DOUBLE
-#define LONGDBLSIZE $longdblsize
-#define LONGDBLKIND $longdblkind
+#define LONG_DOUBLESIZE $longdblsize
+#define LONG_DOUBLEKIND $longdblkind
 #endif
 #$i_math I_MATH
+#$i_string I_STRING
 #ifdef I_MATH
 #include <math.h>
 #endif
+#ifdef I_STRING
+#  include <string.h>
+#endif
 #include <stdio.h>
 /* Note that whether the sign bit is on or off
  * for NaN depends on the CPU/FPU, and possibly
@@ -20655,7 +20531,8 @@ $cat >try.c <<EOP
  * to even mention, causing immediate SIGFPE or equivalent: this is
  * the case with VAX floating point, for example.
  */
-static void bytes(unsigned char *p, unsigned int n) {
+static void bytes(void *v, unsigned int n) {
+  unsigned char *p = (unsigned char *)v;
   int i;
   for (i = 0; i < n; i++) {
     printf("0x%02x%s", p[i], i < n - 1 ? ", " : "\n");
@@ -20670,16 +20547,15 @@ int main(int argc, char *argv[]) {
 #ifdef HAS_LONG_DOUBLE
    long double ldinf = (long double)exp(1e9);
    long double ldnan = (long double)sqrt(-1.0);
-#endif
-  if (argc == 2) {
-    switch (argv[1][0]) {
-    case '1': bytes(&dinf, sizeof(dinf)); break;
-    case '2': bytes(&dnan, sizeof(dnan)); break;
-#ifdef HAS_LONG_DOUBLE
 # if LONG_DOUBLEKIND == 3 || LONG_DOUBLEKIND == 4
 /* the 80-bit long doubles might have garbage in their excess bytes */
     memset((char *)&ldinf + 10, '\0', LONG_DOUBLESIZE - 10);
+    memset((char *)&ldnan + 10, '\0', LONG_DOUBLESIZE - 10);
 # endif
+  if (argc == 2) {
+    switch (argv[1][0]) {
+    case '1': bytes(&dinf, sizeof(dinf)); break;
+    case '2': bytes(&dnan, sizeof(dnan)); break;
     case '3': bytes(&ldinf, sizeof(ldinf)); break;
     case '4': bytes(&ldnan, sizeof(ldnan)); break;
 #endif
@@ -20938,12 +20814,38 @@ randseedtype=U32
 : object file that uses at least one of the probes defined in the .d file
 case "$usedtrace" in
 $define)
+    case "$dtracexnolibs" in
+    $define|true|[yY]*)
+        dtracexnolibs=$define
+       $dtrace -h -xnolibs -s ../perldtrace.d -o perldtrace.h
+       ;;
+    ' '|'')
+        if $dtrace -h -xnolibs -s ../perldtrace.d -o perldtrace.h 2>&1 ; then
+            dtracexnolibs=$define
+            echo "Your dtrace accepts -xnolibs"
+       elif $dtrace -h -s ../perldtrace.d -o perldtrace.h 2>&1 ; then
+            dtracexnolibs=$undef
+            echo "Your dtrace doesn't accept -xnolibs"
+       else
+             echo "Your dtrace doesn't work at all, try building without dtrace support" >&4
+            exit 1
+       fi
+       ;;
+    *)
+        dtracexnolibs=$undef
+       $dtrace -h -s ../perldtrace.d -o perldtrace.h
+       ;;
+    esac
+    case $dtracexnolibs in
+    $define) xnolibs=-xnolibs ;;
+    *) xnolibs= ;;
+    esac
+
     case "$dtraceobject" in
     $define|true|[yY]*)
         dtraceobject=$define
         ;;
     ' '|'')
-        $dtrace -h -s ../perldtrace.d -o perldtrace.h
         $cat >try.c <<EOM
 #include "perldtrace.h"
 int main(void) {
@@ -20953,14 +20855,14 @@ int main(void) {
 EOM
         dtraceobject=$undef
         if $cc -c -o try.o $optimize $ccflags try.c \
-                    && $dtrace -G -s ../perldtrace.d try.o >/dev/null 2>&1; then
+                    && $dtrace -G $xnolibs -s ../perldtrace.d try.o >/dev/null 2>&1; then
                 dtraceobject=$define
             echo "Your dtrace builds an object file"
         fi
-        $rm -f try.c try.o perldtrace.o
         ;;
     *) dtraceobject=$undef ;;
     esac
+    $rm_try perldtrace.o perldtrace.h
 esac
 
 : Determine if this is an EBCDIC system
@@ -23000,7 +22902,7 @@ main(int argc, char **argv) {
        return 4;
     }
 
-    buffer = malloc(size);
+    buffer = (char *)malloc(size);
     if (!buffer) {
        perror("malloc");
        return 5;
@@ -23099,7 +23001,7 @@ main(int argc, char **argv) {
        return 2;
     }
 
-    buffer = malloc(size);
+    buffer = (char *)malloc(size);
     if (!buffer) {
        perror("malloc");
        return 3;
@@ -23283,6 +23185,30 @@ else
        i_machcthr="$undef"
 fi
 
+: see if memory.h is available.
+val=''
+set memory.h val
+eval $inhdr
+
+: See if it conflicts with string.h
+case "$val" in
+$define)
+       case "$strings" in
+       '') ;;
+       *)
+               $cppstdin $cppflags $cppminus < $strings > mem.h
+               if $contains 'memcpy' mem.h >/dev/null 2>&1; then
+                       echo " "
+                       echo "We won't be including <memory.h>."
+                       val="$undef"
+               fi
+               $rm -f mem.h
+               ;;
+       esac
+esac
+set i_memory
+eval $setvar
+
 : see if this is a mntent.h system
 set mntent.h i_mntent
 eval $inhdr
@@ -23552,7 +23478,7 @@ fi
 
 : add -D_FORTIFY_SOURCE if feasible and not already there
 case "$gccversion" in
-[45].*)        case "$optimize$ccflags" in
+[4567].*)      case "$optimize$ccflags" in
        *-O*)   case "$ccflags$cppsymbols" in
                *_FORTIFY_SOURCE=*) # Don't add it again.
                        echo "You seem to have -D_FORTIFY_SOURCE already, not adding it." >&4
@@ -23762,6 +23688,10 @@ case "$d_vfork" in
        ;;
 esac
 
+: see if wchar.h is present
+set wchar.h i_wchar
+eval $inhdr
+
 : Check extensions
 echo " "
 echo "Looking for extensions..." >&4
@@ -24396,14 +24326,14 @@ d_attribute_pure='$d_attribute_pure'
 d_attribute_unused='$d_attribute_unused'
 d_attribute_warn_unused_result='$d_attribute_warn_unused_result'
 d_backtrace='$d_backtrace'
-d_bcmp='$d_bcmp'
-d_bcopy='$d_bcopy'
 d_bsd='$d_bsd'
 d_bsdgetpgrp='$d_bsdgetpgrp'
 d_bsdsetpgrp='$d_bsdsetpgrp'
+d_builtin_add_overflow='$d_builtin_add_overflow'
 d_builtin_choose_expr='$d_builtin_choose_expr'
 d_builtin_expect='$d_builtin_expect'
-d_bzero='$d_bzero'
+d_builtin_mul_overflow='$d_builtin_mul_overflow'
+d_builtin_sub_overflow='$d_builtin_sub_overflow'
 d_c99_variadic_macros='$d_c99_variadic_macros'
 d_casti32='$d_casti32'
 d_castneg='$d_castneg'
@@ -24474,6 +24404,7 @@ d_expm1='$d_expm1'
 d_faststdio='$d_faststdio'
 d_fchdir='$d_fchdir'
 d_fchmod='$d_fchmod'
+d_fchmodat='$d_fchmodat'
 d_fchown='$d_fchown'
 d_fcntl='$d_fcntl'
 d_fcntl_can_lock='$d_fcntl_can_lock'
@@ -24615,10 +24546,12 @@ d_lgamma_r='$d_lgamma_r'
 d_libm_lib_version='$d_libm_lib_version'
 d_libname_unique='$d_libname_unique'
 d_link='$d_link'
+d_linkat='$d_linkat'
 d_llrint='$d_llrint'
 d_llrintl='$d_llrintl'
 d_llround='$d_llround'
 d_llroundl='$d_llroundl'
+d_localeconv_l='$d_localeconv_l'
 d_localtime64='$d_localtime64'
 d_localtime_r='$d_localtime_r'
 d_localtime_r_needs_tzset='$d_localtime_r_needs_tzset'
@@ -24644,14 +24577,12 @@ d_madvise='$d_madvise'
 d_malloc_good_size='$d_malloc_good_size'
 d_malloc_size='$d_malloc_size'
 d_mblen='$d_mblen'
+d_mbrlen='$d_mbrlen'
+d_mbrtowc='$d_mbrtowc'
 d_mbstowcs='$d_mbstowcs'
 d_mbtowc='$d_mbtowc'
-d_memchr='$d_memchr'
-d_memcmp='$d_memcmp'
-d_memcpy='$d_memcpy'
 d_memmem='$d_memmem'
-d_memmove='$d_memmove'
-d_memset='$d_memset'
+d_memrchr='$d_memrchr'
 d_mkdir='$d_mkdir'
 d_mkdtemp='$d_mkdtemp'
 d_mkfifo='$d_mkfifo'
@@ -24678,6 +24609,7 @@ d_msync='$d_msync'
 d_munmap='$d_munmap'
 d_mymalloc='$d_mymalloc'
 d_nan='$d_nan'
+d_nanosleep='$d_nanosleep'
 d_ndbm='$d_ndbm'
 d_ndbm_h_uses_prototypes='$d_ndbm_h_uses_prototypes'
 d_nearbyint='$d_nearbyint'
@@ -24693,6 +24625,7 @@ d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
 d_oldpthreads='$d_oldpthreads'
 d_oldsock='$d_oldsock'
 d_open3='$d_open3'
+d_openat='$d_openat'
 d_pathconf='$d_pathconf'
 d_pause='$d_pause'
 d_perl_otherlibdirs='$d_perl_otherlibdirs'
@@ -24733,13 +24666,11 @@ d_regcomp='$d_regcomp'
 d_remainder='$d_remainder'
 d_remquo='$d_remquo'
 d_rename='$d_rename'
+d_renameat='$d_renameat'
 d_rewinddir='$d_rewinddir'
 d_rint='$d_rint'
 d_rmdir='$d_rmdir'
 d_round='$d_round'
-d_safebcpy='$d_safebcpy'
-d_safemcpy='$d_safemcpy'
-d_sanemcmp='$d_sanemcmp'
 d_sbrkproto='$d_sbrkproto'
 d_scalbn='$d_scalbn'
 d_scalbnl='$d_scalbnl'
@@ -24806,7 +24737,6 @@ d_sigprocmask='$d_sigprocmask'
 d_sigsetjmp='$d_sigsetjmp'
 d_sin6_scope_id='$d_sin6_scope_id'
 d_sitearch='$d_sitearch'
-d_snprintf='$d_snprintf'
 d_sockaddr_in6='$d_sockaddr_in6'
 d_sockaddr_sa_len='$d_sockaddr_sa_len'
 d_sockatmark='$d_sockatmark'
@@ -24836,7 +24766,6 @@ d_stdiobase='$d_stdiobase'
 d_stdstdio='$d_stdstdio'
 d_strchr='$d_strchr'
 d_strcoll='$d_strcoll'
-d_strctcpy='$d_strctcpy'
 d_strerrm='$d_strerrm'
 d_strerror='$d_strerror'
 d_strerror_l='$d_strerror_l'
@@ -24844,9 +24773,11 @@ d_strerror_r='$d_strerror_r'
 d_strftime='$d_strftime'
 d_strlcat='$d_strlcat'
 d_strlcpy='$d_strlcpy'
+d_strnlen='$d_strnlen'
 d_strtod='$d_strtod'
 d_strtol='$d_strtol'
 d_strtold='$d_strtold'
+d_strtold_l='$d_strtold_l'
 d_strtoll='$d_strtoll'
 d_strtoq='$d_strtoq'
 d_strtoul='$d_strtoul'
@@ -24866,6 +24797,7 @@ d_tcsetpgrp='$d_tcsetpgrp'
 d_telldir='$d_telldir'
 d_telldirproto='$d_telldirproto'
 d_tgamma='$d_tgamma'
+d_thread_safe_nl_langinfo_l='$d_thread_safe_nl_langinfo_l'
 d_time='$d_time'
 d_timegm='$d_timegm'
 d_times='$d_times'
@@ -24882,6 +24814,7 @@ d_ualarm='$d_ualarm'
 d_umask='$d_umask'
 d_uname='$d_uname'
 d_union_semun='$d_union_semun'
+d_unlinkat='$d_unlinkat'
 d_unordered='$d_unordered'
 d_unsetenv='$d_unsetenv'
 d_uselocale='$d_uselocale'
@@ -24896,9 +24829,7 @@ d_vfork='$d_vfork'
 d_void_closedir='$d_void_closedir'
 d_voidsig='$d_voidsig'
 d_voidtty='$d_voidtty'
-d_volatile='$d_volatile'
 d_vprintf='$d_vprintf'
-d_vsnprintf='$d_vsnprintf'
 d_wait4='$d_wait4'
 d_waitpid='$d_waitpid'
 d_wcscmp='$d_wcscmp'
@@ -24913,6 +24844,7 @@ db_prefixtype='$db_prefixtype'
 db_version_major='$db_version_major'
 db_version_minor='$db_version_minor'
 db_version_patch='$db_version_patch'
+default_inc_excludes_dot='$default_inc_excludes_dot'
 direntrytype='$direntrytype'
 dlext='$dlext'
 dlsrc='$dlsrc'
@@ -24925,6 +24857,7 @@ drand01='$drand01'
 drand48_r_proto='$drand48_r_proto'
 dtrace='$dtrace'
 dtraceobject='$dtraceobject'
+dtracexnolibs='$dtracexnolibs'
 dynamic_ext='$dynamic_ext'
 eagain='$eagain'
 ebcdic='$ebcdic'
@@ -25100,6 +25033,7 @@ i_values='$i_values'
 i_varargs='$i_varargs'
 i_varhdr='$i_varhdr'
 i_vfork='$i_vfork'
+i_wchar='$i_wchar'
 i_xlocale='$i_xlocale'
 ignore_versioned_solibs='$ignore_versioned_solibs'
 inc_version_list='$inc_version_list'