This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Remove unneeded Tru64 cases.
[perl5.git] / Configure
index 0d45e13..69dd589 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -372,6 +372,9 @@ cppstdin=''
 d__fwalk=''
 d_access=''
 d_accessx=''
+d_acosh=''
+d_asinh=''
+d_atanh=''
 d_aintl=''
 d_alarm=''
 asctime_r_proto=''
@@ -395,6 +398,7 @@ d_c99_variadic_macros=''
 d_casti32=''
 castflags=''
 d_castneg=''
+d_cbrt=''
 d_chown=''
 d_chroot=''
 d_chsize=''
@@ -404,6 +408,7 @@ d_closedir=''
 d_void_closedir=''
 d_cmsghdr_s=''
 d_const=''
+d_copysign=''
 d_copysignl=''
 d_cplusplus=''
 cryptlib=''
@@ -452,26 +457,39 @@ endpwent_r_proto=''
 d_endsent=''
 d_endservent_r=''
 endservent_r_proto=''
+d_erf=''
+d_erfc=''
+d_exp2=''
+d_expm1=''
 d_faststdio=''
 d_fchdir=''
 d_fchmod=''
 d_fchown=''
 d_fcntl=''
 d_fcntl_can_lock=''
+d_fdim=''
 d_fd_macros=''
 d_fd_set=''
 d_fds_bits=''
+d_fegetround=''
 d_fgetpos=''
 d_finite=''
 d_finitel=''
 d_flexfnam=''
 d_flock=''
 d_flockproto=''
+d_fdim=''
+d_fma=''
+d_fmax=''
+d_fmin=''
 d_fork=''
 d_fp_class=''
+d_fp_classl=''
 d_fpclass=''
+d_fp_classify=''
 d_fpclassify=''
 d_fpclassl=''
+d_fpgetround=''
 d_fpos64_t=''
 d_frexpl=''
 d_fs_data_s=''
@@ -571,6 +589,8 @@ d_gnulibc=''
 gnulibc_version=''
 d_hasmntopt=''
 d_htonl=''
+d_hypot=''
+d_ilogb=''
 d_ilogbl=''
 d_inetaton=''
 d_inetntop=''
@@ -579,25 +599,40 @@ d_int64_t=''
 d_isascii=''
 d_isblank=''
 d_isfinite=''
+d_isfinitel=''
 d_isinf=''
+d_isinfl=''
 d_isnan=''
 d_isnanl=''
+d_isnormal=''
+d_j0=''
+d_j0l=''
 d_killpg=''
 d_lchown=''
 d_ldbl_dig=''
+d_lgamma=''
+d_lgamma_r=''
 d_libm_lib_version=''
 d_link=''
+d_llrint=''
+d_llround=''
 d_localtime_r=''
 d_localtime_r_needs_tzset=''
 localtime_r_proto=''
 d_locconv=''
+d_lc_monetary_2008=''
 d_lockf=''
 d_ldexpl=''
+d_log1p=''
+d_log2=''
+d_logb=''
 d_longdbl=''
 longdblkind=''
 longdblsize=''
 d_longlong=''
 longlongsize=''
+d_lrint=''
+d_lround=''
 d_lseekproto=''
 d_lstat=''
 d_madvise=''
@@ -631,6 +666,10 @@ d_msgrcv=''
 d_msgsnd=''
 d_msync=''
 d_munmap=''
+d_nan=''
+d_nearbyint=''
+d_nextafter=''
+d_nexttoward=''
 d_nice=''
 d_nl_langinfo=''
 d_off64_t=''
@@ -667,12 +706,17 @@ readdir_r_proto=''
 d_readlink=''
 d_readv=''
 d_recvmsg=''
+d_remainder=''
+d_remquo=''
 d_rename=''
+d_rint=''
 d_rmdir=''
+d_round=''
 d_safebcpy=''
 d_safemcpy=''
 d_sanemcmp=''
 d_sbrkproto=''
+d_scalbn=''
 d_scalbnl=''
 d_select=''
 d_sem=''
@@ -825,7 +869,10 @@ clocktype=''
 d_times=''
 d_tmpnam_r=''
 tmpnam_r_proto=''
+d_tgamma=''
+d_trunc=''
 d_truncate=''
+d_truncl=''
 d_ttyname_r=''
 ttyname_r_proto=''
 d_tzname=''
@@ -864,6 +911,7 @@ ld=''
 ld_can_script=''
 lddlflags=''
 usedl=''
+doublekind=''
 doublesize=''
 ebcdic=''
 fflushNULL=''
@@ -904,6 +952,7 @@ i_dirent=''
 i_dlfcn=''
 i_execinfo=''
 i_fcntl=''
+i_fenv=''
 i_float=''
 i_fp=''
 i_fp_class=''
@@ -946,10 +995,12 @@ d_pwgecos=''
 d_pwpasswd=''
 d_pwquota=''
 i_pwd=''
+i_quadmath=''
 i_shadow=''
 i_socks=''
 i_stdbool=''
 i_stddef=''
+i_stdint=''
 i_stdlib=''
 i_string=''
 strings=''
@@ -1247,6 +1298,7 @@ libswanted_uselargefiles=''
 uselargefiles=''
 uselongdouble=''
 usemorebits=''
+usequadmath=''
 usemultiplicity=''
 nm_opt=''
 nm_so_opt=''
@@ -2651,11 +2703,11 @@ EOM
                # The most common problem is -D_REENTRANT for threads.
                # This heuristic catches that case, but gets false positives
                # if -Dusethreads was not actually specified.  Better to
-               # bail out here with a useful message than fail 
+               # bail out here with a useful message than fail
                # mysteriously later. Should we perhaps just try to
                # re-invoke Configure -Dcc=gcc config_args ?
                if $test -f usethreads.cbu; then
-                       $cat >&4 <<EOM 
+                       $cat >&4 <<EOM
 
 *** However, any setting of the C compiler flags (e.g. for thread support)
 *** will be lost.  It may be necessary for you to restart Configure and
@@ -2677,7 +2729,7 @@ EOM
                         echo "Cannot find myread, sorry.  Aborting." >&2
                         exit 1
                     fi
-                fi  
+                fi
                 case "$ans" in
                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
                 esac
@@ -2693,9 +2745,9 @@ cat <<EOS >checkcc
 $startsh
 EOS
 cat <<'EOSC' >>checkcc
-case "$cc" in        
+case "$cc" in
 '') ;;
-*)  $rm -f try try.*              
+*)  $rm -f try try.*
     $cat >try.c <<EOM
 int main(int argc, char *argv[]) {
   return 0;
@@ -2707,7 +2759,7 @@ EOM
         if $test X"$despair" = Xyes; then
            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
         fi
-        $cat >&4 <<EOM         
+        $cat >&4 <<EOM
 You need to find a working C compiler.
 Either (purchase and) install the C compiler supplied by your OS vendor,
 or for a free C compiler try http://gcc.gnu.org/
@@ -2800,38 +2852,41 @@ $define|true|[yY]*)
        *)      case "$lns:$issymlink" in
                *"ln"*" -s:"*"test -"?)
                        echo "Creating the symbolic links..." >&4
-                       echo "(First creating the subdirectories...)" >&4
                        cd ..
-                       awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
-                               read directory
-                               test -z "$directory" && break
-                               mkdir -p $directory
-                       done
+                       awk '{print $1}' $src/MANIFEST | sed -e 's:/\([^/]*\)$: \1:' |
+                       awk 'NF == 1 {
+                               dir=".";
+                               file=$1 "";
+                            }
+                            NF == 2 {
+                               dir=$1 "";
+                               file=$2 "";
+                            }
+                            {
+                                print "# dir = ", dir, "file = ", file
+                                mf[dir] = mf[dir]" "src"/"dir"/"file;
+                            } END {
+                                for (d in mf) {
+                                    if (d != ".") { print("mkdir -p "d) }
+                                    print("ln -sf "mf[d]" "d);
+                                }
+                            }' src="$src" > UU/mksymlinks.$$
+                       sh UU/mksymlinks.$$
+                       rm UU/mksymlinks.$$
                        # Sanity check 1.
                        if test ! -d t/base; then
                                echo "Failed to create the subdirectories.  Aborting." >&4
                                exit 1
                        fi
-                       echo "(Then creating the symlinks...)" >&4
-                       awk '{print $1}' $src/MANIFEST | while true; do
-                               read filename
-                               test -z "$filename" && break
-                               if test -f $filename; then
-                                       if $issymlink $filename; then
-                                               rm -f $filename
-                                       fi
-                               fi
-                               if test -f $filename; then
-                                       echo "$filename already exists, not symlinking."
-                               else
-                                       ln -s $src/$filename $filename
-                               fi
-                       done
                        # Sanity check 2.
                        if test ! -f t/base/lex.t; then
                                echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
                                exit 1
                        fi
+                       if test ! -f win32/win32.c; then
+                               echo "Failed to create the symlinks (win32/win32.c missing).  Aborting." >&4
+                               exit 1
+                       fi
                        cd UU
                        ;;
                *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
@@ -4432,6 +4487,14 @@ esac
 set usemultiplicity
 eval $setvar
 
+: Check if usequadmath is requested
+case "$usequadmath" in
+"$define"|true|[yY]*)
+       usequadmath="$define"
+       ;;
+*)     usequadmath="$undef" ;;
+esac
+
 : Check if morebits is requested
 case "$usemorebits" in
 "$define"|true|[yY]*)
@@ -5155,6 +5218,9 @@ esac
 case "$usecbacktrace" in
 "$define") libswanted="$libswanted bfd" ;;
 esac
+case "$usequadmath" in
+"$define") libswanted="$libswanted quadmath" ;;
+esac
 libsfound=''
 libsfiles=''
 libsdirs=''
@@ -5169,6 +5235,9 @@ for thislib in $libswanted; do
                xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
                $test -f "$xxx" && eval $libscheck
                $test -f "$xxx" && libstyle=shared
+               xxx=`ls $thisdir/lib$thislib.[0-9].$so 2>/dev/null|sed -n '$p'`
+               $test -f "$xxx" && eval $libscheck
+               $test -f "$xxx" && libstyle=shared
            fi
            if test ! -f "$xxx"; then
                xxx=$thisdir/lib$thislib.$so
@@ -5369,8 +5438,15 @@ default|recommended)
        # as that way the compiler can do the right implementation dependant
        # thing. (NWC)
        case "$gccversion" in
-       ?*)     set stack-protector -fstack-protector
+       ?*)     set stack-protector-strong -fstack-protector-strong
                eval $checkccflag
+               case "$dflt" in
+               *-fstack-protector-strong*) ;; # It got added.
+               *) # Try the plain/older -fstack-protector.
+                  set stack-protector -fstack-protector
+                  eval $checkccflag
+                  ;;
+               esac
                ;;
        esac
        ;;
@@ -5513,6 +5589,12 @@ case "$ldflags" in
 esac
 # See note above about -fstack-protector
 case "$ccflags" in
+*-fstack-protector-strong*)
+       case "$dflt" in
+       *-fstack-protector-strong*) ;; # Don't add it again
+       *) dflt="$dflt -fstack-protector-strong" ;;
+       esac
+       ;;
 *-fstack-protector*)
        case "$dflt" in
        *-fstack-protector*) ;; # Don't add it again
@@ -6746,6 +6828,93 @@ $rm_try
 set float.h i_float
 eval $inhdr
 
+echo " "
+$echo "Checking the kind of doubles you have..." >&4
+$cat <<EOP >try.c
+#$i_stdlib I_STDLIB
+#define DOUBLESIZE $doublesize
+#ifdef I_STDLIB
+#include <stdlib.h>
+#endif
+#include <stdio.h>
+static const double d = -0.1;
+int main() {
+  unsigned const char* b = (unsigned const char*)(&d);
+#if DOUBLESIZE == 4
+  if (b[0] == 0xCD && b[3] == 0xBD) {
+    /* IEEE 754 32-bit little-endian */
+    printf("1\n");
+    exit(0);
+  }
+  if (b[0] == 0xBD && b[3] == 0xCD) {
+    /* IEEE 754 32-bit big-endian */
+    printf("2\n");
+    exit(0);
+  }
+#endif
+#if DOUBLESIZE == 8
+  if (b[0] == 0x9A && b[7] == 0xBF) {
+    /* IEEE 754 64-bit little-endian */
+    printf("3\n");
+    exit(0);
+  }
+  if (b[0] == 0xBF && b[7] == 0x9A) {
+    /* IEEE 754 64-bit big-endian */
+    printf("4\n");
+    exit(0);
+  }
+  if (b[0] == 0x99 && b[3] == 0xBF && b[4] == 0x9A && b[7] == 0x99) {
+   /* ARM mixed endian: two little-endian 32-bit floats, in big endian order:
+    * 4 5 6 7 0 1 2 3 (MSB = 7, LSB = 0)
+    * 99 99 b9 bf 9a 99 99 99 */
+    printf("7\n");
+    exit(0);
+  }
+  if (b[0] == 0x99 && b[3] == 0x9A && b[4] == 0xBF && b[7] == 0x99) {
+   /* The opposite of case 7, mixed endian: two big-endian 32-bit floats,
+    * in little endian order: 3 2 1 0 7 6 5 4 (MSB = 7, LSB = 0)
+    * 99 99 99 9a bf b9 99 99 */
+    printf("8\n");
+    exit(0);
+  }
+#endif
+#if DOUBLESIZE == 16
+  if (b[0] == 0x9A && b[15] == 0xBF) {
+    /* IEEE 754 128-bit little-endian */
+    printf("5\n");
+    exit(0);
+  }
+  if (b[0] == 0xBF && b[15] == 0x9A) {
+    /* IEEE 754 128-bit big-endian */
+    printf("6\n");
+    exit(0);
+  }
+#endif
+  /* Rumoredly some old ARM processors have 'mixed endian' doubles,
+   * two 32-bit little endians stored in big-endian order. */
+  /* Then there are old mainframe/miniframe formats like VAX, IBM, and CRAY.
+   * Whether those environments can still build Perl is debatable. */
+  printf("-1\n"); /* unknown */
+  exit(0);
+}
+EOP
+set try
+if eval $compile; then
+    doublekind=`$run ./try`
+else
+    doublekind=-1
+fi
+case "$doublekind" in
+1) echo "You have IEEE 754 32-bit little endian doubles." >&4 ;;
+2) echo "You have IEEE 754 32-bit big endian doubles." >&4 ;;
+3) echo "You have IEEE 754 64-bit little endian doubles." >&4 ;;
+4) echo "You have IEEE 754 64-bit big endian doubles." >&4 ;;
+5) echo "You have IEEE 754 128-bit little endian doubles." >&4 ;;
+6) echo "You have IEEE 754 128-bit big endian doubles." >&4 ;;
+*) echo "Cannot figure out your double.  You VAX, or something?" >&4 ;;
+esac
+$rm_try
+
 : check for long doubles
 echo " "
 echo "Checking to see if you have long double..." >&4
@@ -6766,6 +6935,10 @@ eval $setvar
 set ldexpl d_ldexpl
 eval $inlibc
 
+: see if this is a quadmath.h system
+set quadmath.h i_quadmath
+eval $inhdr
+
 : check for length of long double
 case "${d_longdbl}${longdblsize}" in
 $define)
@@ -6800,6 +6973,7 @@ EOCP
 esac
 $rm_try
 
+echo " "
 $echo "Checking the kind of long doubles you have..." >&4
 case "$d_longdbl" in
 define)
@@ -6807,17 +6981,22 @@ $cat <<EOP >try.c
 #$i_float I_FLOAT
 #$i_stdlib I_STDLIB
 #define LONGDBLSIZE $longdblsize
+#define DOUBLESIZE $doublesize
 #ifdef I_FLOAT
 #include <float.h>
 #endif
 #ifdef I_STDLIB
 #include <stdlib.h>
 #endif
-#include <stdio.h>
 static const long double d = -0.1L;
+#include <stdio.h>
 int main() {
   unsigned const char* b = (unsigned const char*)(&d);
-#if LDBL_MANT_DIG == 113 && LONGDBLSIZE == 16
+#if DOUBLESIZE == LONGDBLSIZE
+  printf("0\n"); /* if it floats like double */
+  exit(0);
+#endif
+#if (LDBL_MANT_DIG == 113 || FLT128_MANT_DIG == 113) && LONGDBLSIZE == 16
   if (b[0] == 0x9A && b[1] == 0x99 && b[15] == 0xBF) {
     /* IEEE 754 128-bit little-endian */
     printf("1\n");
@@ -6829,6 +7008,8 @@ int main() {
     exit(0);
   }
 #endif
+/* For alignment 32-bit platforms have the 80 bits in 12 bytes,
+ * while 64-bits platforms have it in 16 bytes. */
 #if LDBL_MANT_DIG == 64 && (LONGDBLSIZE == 16 || LONGDBLSIZE == 12)
   if (b[0] == 0xCD && b[9] == 0xBF && b[10] == 0x00) {
     /* x86 80-bit little-endian, sizeof 12 (ILP32, Solaris x86)
@@ -6837,15 +7018,15 @@ int main() {
     printf("3\n");
     exit(0);
   }
-  if (b[LONGDBLSIZE - 11] == 0x00 && b[LONGDBLSIZE - 10] == 0xBF &&
-      b[LONGDBLSIZE -  1] == 0xCD) {
+  if (b[0] == 0xBF && b[9] == 0xCD && b[10] == 0x00) {
     /* is there ever big-endian 80-bit, really? */
     printf("4\n");
     exit(0);
   }
 #endif
-#if LDBL_MANT_DIG == 106 && LONGDBLSIZE == 16
-  /* software "double double", the 106 is 53+53 */
+#if (LDBL_MANT_DIG == 106 || LDBL_MANT_DIG == 107) && LONGDBLSIZE == 16
+  /* software "double double", the 106 is 53+53.
+   * but irix thinks it is 107. */
   if (b[0] == 0x9A && b[7] == 0x3C && b[8] == 0x9A && b[15] == 0xBF) {
     /* double double 128-bit little-endian,
      * 9a 99 99 99 99 99 59 3c 9a 99 99 99 99 99 b9 bf */
@@ -6877,10 +7058,160 @@ case "$longdblkind" in
 1) echo "You have IEEE 754 128-bit little endian long doubles." >&4 ;;
 2) echo "You have IEEE 754 128-bit big endian long doubles." >&4 ;;
 3) echo "You have x86 80-bit little endian long doubles." >& 4 ;;
+4) echo "You have x86 80-bit big endian long doubles." >& 4 ;;
+5) echo "You have 128-bit little-endian double-double long doubles." >& 4 ;;
+6) echo "You have 128-bit big-endian double-double long doubles." >& 4 ;;
 *) echo "Cannot figure out your long double." >&4 ;;
 esac
 $rm_try
 
+: Check print/scan long double stuff
+echo " "
+
+if $test X"$d_longdbl" = X"$define"; then
+
+echo "Checking how to print long doubles..." >&4
+
+if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
+       $cat >try.c <<'EOCP'
+#include <sys/types.h>
+#include <stdio.h>
+int main() {
+  double d = 123.456;
+  printf("%.3f\n", d);
+}
+EOCP
+       set try
+       if eval $compile; then
+               yyy=`$run ./try`
+               case "$yyy" in
+               123.456)
+                       sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
+                       sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
+                       echo "We will use %f."
+                       ;;
+               esac
+       fi
+fi
+
+if $test X"$sPRIfldbl" = X; then
+       $cat >try.c <<'EOCP'
+#include <sys/types.h>
+#include <stdio.h>
+int main() {
+  long double d = 123.456;
+  printf("%.3Lf\n", d);
+}
+EOCP
+       set try
+       if eval $compile; then
+               yyy=`$run ./try`
+               case "$yyy" in
+               123.456)
+                       sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
+                       sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
+                       echo "We will use %Lf."
+                       ;;
+               esac
+       fi
+fi
+
+if $test X"$sPRIfldbl" = X; then
+       $cat >try.c <<'EOCP'
+#include <sys/types.h>
+#include <stdio.h>
+int main() {
+  long double d = 123.456;
+  printf("%.3llf\n", d);
+}
+EOCP
+       set try
+       if eval $compile; then
+               yyy=`$run ./try`
+               case "$yyy" in
+               123.456)
+                       sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
+                       sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
+                       echo "We will use %llf."
+                       ;;
+               esac
+       fi
+fi
+
+if $test X"$sPRIfldbl" = X; then
+       $cat >try.c <<'EOCP'
+#include <sys/types.h>
+#include <stdio.h>
+int main() {
+  long double d = 123.456;
+  printf("%.3lf\n", d);
+}
+EOCP
+       set try
+       if eval $compile; then
+               yyy=`$run ./try`
+               case "$yyy" in
+               123.456)
+                       sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
+                       sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
+                       echo "We will use %lf."
+                       ;;
+               esac
+       fi
+fi
+
+if $test X"$sPRIfldbl" = X; then
+       echo "Cannot figure out how to print long doubles." >&4
+else
+       sSCNfldbl=$sPRIfldbl    # expect consistency
+fi
+
+$rm_try
+
+fi # d_longdbl
+
+case "$sPRIfldbl" in
+'')    d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
+       d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
+       d_SCNfldbl="$undef";
+       ;;
+*)     d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
+       d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
+       d_SCNfldbl="$define";
+       ;;
+esac
+
+: Before committing on uselongdouble, see whether that looks sane.
+if $test "$uselongdouble" = "$define"; then
+    message=""
+    echo " "
+    echo "Checking if your long double math functions work right..." >&4
+    $cat > try.c <<EOF
+#include <math.h>
+#include <stdio.h>
+int main() {
+  printf("%"$sPRIgldbl"\n", sqrtl(logl(expl(cosl(sinl(0.0L))))+powl(2.0L, 3.0L)));
+}
+EOF
+    case "$osname:$gccversion" in
+    aix:)      saveccflags="$ccflags"
+               ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
+    esac
+    set try
+    if eval $compile_ok; then
+      yyy=`$run ./try`
+    fi
+    case "$yyy" in
+    3) echo "Your long double math functions are working correctly." >&4 ;;
+    *) echo "Your long double math functions are broken, not using long doubles." >&4
+       uselongdouble=$undef
+       ;;
+    esac
+    $rm_try
+    case "$osname:$gccversion" in
+    aix:)      ccflags="$saveccflags" ;; # restore
+    esac
+fi
 
 : determine the architecture name
 echo " "
@@ -7008,6 +7339,18 @@ $define)
        esac
        ;;
 esac
+case "$usequadmath" in
+$define)
+       echo "quadmath selected." >&4
+       case "$archname" in
+        *-ld*) echo "...and architecture name already has -quadmath." >&4
+                ;;
+        *)      archname="$archname-quadmath"
+                echo "...setting architecture name to $archname." >&4
+               ;;
+        esac
+       ;;
+esac
 if $test -f archname.cbu; then
        echo "Your platform has some specific hints for architecture name, using them..."
        . ./archname.cbu
@@ -7892,12 +8235,12 @@ case "$prototype" in
        cat <<EOM >&4
 
 $me:  FATAL ERROR:
-This version of $package can only be compiled by a compiler that 
-understands function prototypes.  Unfortunately, your C compiler 
+This version of $package can only be compiled by a compiler that
+understands function prototypes.  Unfortunately, your C compiler
        $cc $ccflags
 doesn't seem to understand them.  Sorry about that.
 
-If GNU cc is available for your system, perhaps you could try that instead.  
+If GNU cc is available for your system, perhaps you could try that instead.
 
 Eventually, we hope to support building Perl with pre-ANSI compilers.
 If you would like to help in that effort, please contact <perlbug@perl.org>.
@@ -8385,6 +8728,12 @@ EOM
        esac
 
        case "$ldflags" in
+           *-fstack-protector-strong*)
+               case "$dflt" in
+                   *-fstack-protector-strong*) ;; # Don't add it again
+                   *) dflt="$dflt -fstack-protector-strong" ;;
+               esac
+               ;;
            *-fstack-protector*)
                case "$dflt" in
                    *-fstack-protector*) ;; # Don't add it again
@@ -9913,122 +10262,6 @@ esac
 set qgcvt d_qgcvt
 eval $inlibc
 
-: Check print/scan long double stuff
-echo " "
-
-if $test X"$d_longdbl" = X"$define"; then
-
-echo "Checking how to print long doubles..." >&4
-
-if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
-       $cat >try.c <<'EOCP'
-#include <sys/types.h>
-#include <stdio.h>
-int main() {
-  double d = 123.456;
-  printf("%.3f\n", d);
-}
-EOCP
-       set try
-       if eval $compile; then
-               yyy=`$run ./try`
-               case "$yyy" in
-               123.456)
-                       sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
-                       sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
-                       echo "We will use %f."
-                       ;;
-               esac
-       fi
-fi
-
-if $test X"$sPRIfldbl" = X; then
-       $cat >try.c <<'EOCP'
-#include <sys/types.h>
-#include <stdio.h>
-int main() {
-  long double d = 123.456;
-  printf("%.3Lf\n", d);
-}
-EOCP
-       set try
-       if eval $compile; then
-               yyy=`$run ./try`
-               case "$yyy" in
-               123.456)
-                       sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
-                       sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
-                       echo "We will use %Lf."
-                       ;;
-               esac
-       fi
-fi
-
-if $test X"$sPRIfldbl" = X; then
-       $cat >try.c <<'EOCP'
-#include <sys/types.h>
-#include <stdio.h>
-int main() {
-  long double d = 123.456;
-  printf("%.3llf\n", d);
-}
-EOCP
-       set try
-       if eval $compile; then
-               yyy=`$run ./try`
-               case "$yyy" in
-               123.456)
-                       sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
-                       sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
-                       echo "We will use %llf."
-                       ;;
-               esac
-       fi
-fi
-
-if $test X"$sPRIfldbl" = X; then
-       $cat >try.c <<'EOCP'
-#include <sys/types.h>
-#include <stdio.h>
-int main() {
-  long double d = 123.456;
-  printf("%.3lf\n", d);
-}
-EOCP
-       set try
-       if eval $compile; then
-               yyy=`$run ./try`
-               case "$yyy" in
-               123.456)
-                       sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
-                       sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
-                       echo "We will use %lf."
-                       ;;
-               esac
-       fi
-fi
-
-if $test X"$sPRIfldbl" = X; then
-       echo "Cannot figure out how to print long doubles." >&4
-else
-       sSCNfldbl=$sPRIfldbl    # expect consistency
-fi
-
-$rm_try
-
-fi # d_longdbl
-
-case "$sPRIfldbl" in
-'')    d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
-       d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
-       d_SCNfldbl="$undef";
-       ;;
-*)     d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
-       d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
-       d_SCNfldbl="$define";
-       ;;
-esac
-
 : Check how to convert floats to strings.
 
 if test "X$d_Gconvert" = X; then
@@ -12925,29 +13158,169 @@ set d_open3
 eval $setvar
 $rm_try
 
-: see if this is a sys/file.h system
-val=''
-set sys/file.h val
-eval $inhdr
+: see if this is a sys/file.h system
+val=''
+set sys/file.h val
+eval $inhdr
+
+: do we need to include sys/file.h ?
+case "$val" in
+"$define")
+       echo " "
+       if $h_sysfile; then
+               val="$define"
+               echo "We'll be including <sys/file.h>." >&4
+       else
+               val="$undef"
+               echo "We won't be including <sys/file.h>." >&4
+       fi
+       ;;
+*)
+       h_sysfile=false
+       ;;
+esac
+set i_sysfile
+eval $setvar
+
+: see if acosh exists
+set acosh d_acosh
+eval $inlibc
+
+: see if asinh exists
+set asinh d_asinh
+eval $inlibc
+
+: see if atanh exists
+set atanh d_atanh
+eval $inlibc
+
+: see if cbrt exists
+set cbrt d_cbrt
+eval $inlibc
+
+: see if copysign exists
+set copysign d_copysign
+eval $inlibc
+
+: see if erf exists
+set erf d_erf
+eval $inlibc
+
+: see if erfc exists
+set erfc d_erfc
+eval $inlibc
+
+: see if exp2 exists
+set exp2 d_exp2
+eval $inlibc
+
+: see if expm1 exists
+set expm1 d_expm1
+eval $inlibc
+
+: see if fdim exists
+set fdim d_fdim
+eval $inlibc
+
+: see if fma exists
+set fma d_fma
+eval $inlibc
+
+: see if fmax exists
+set fmax d_fmax
+eval $inlibc
+
+: see if fmin exists
+set fmin d_fmin
+eval $inlibc
+
+: see if hypot exists
+set hypot d_hypot
+eval $inlibc
+
+: see if ilogb exists
+set ilogb d_ilogb
+eval $inlibc
+
+: see if lgamma exists
+set lgamma d_lgamma
+eval $inlibc
+
+: see if lgamma_r exists
+set lgamma_r d_lgamma_r
+eval $inlibc
+
+: see if llrint exists
+set llrint d_llrint
+eval $inlibc
+
+: see if llround exists
+set llround d_llround
+eval $inlibc
+
+: see if log1p exists
+set log1p d_log1p
+eval $inlibc
+
+: see if log2 exists
+set log2 d_log2
+eval $inlibc
+
+: see if logb exists
+set logb d_logb
+eval $inlibc
+
+: see if lrint exists
+set lrint d_lrint
+eval $inlibc
+
+: see if lround exists
+set lround d_lround
+eval $inlibc
+
+: see if nan exists
+set nan d_nan
+eval $inlibc
+
+: see if nearbyint exists
+set nearbyint d_nearbyint
+eval $inlibc
+
+: see if nextafter exists
+set nextafter d_nextafter
+eval $inlibc
+
+: see if nexttoward exists
+set nexttoward d_nexttoward
+eval $inlibc
+
+: see if remainder exists
+set remainder d_remainder
+eval $inlibc
+
+: see if remquo exists
+set remquo d_remquo
+eval $inlibc
 
-: do we need to include sys/file.h ?
-case "$val" in
-"$define")
-       echo " "
-       if $h_sysfile; then
-               val="$define"
-               echo "We'll be including <sys/file.h>." >&4
-       else
-               val="$undef"
-               echo "We won't be including <sys/file.h>." >&4
-       fi
-       ;;
-*)
-       h_sysfile=false
-       ;;
-esac
-set i_sysfile
-eval $setvar
+: see if rint exists
+set rint d_rint
+eval $inlibc
+
+: see if round exists
+set round d_round
+eval $inlibc
+
+: see if scalbn exists
+set scalbn d_scalbn
+eval $inlibc
+
+: see if tgamma exists
+set tgamma d_tgamma
+eval $inlibc
+
+: see if trunc exists
+set trunc d_trunc
+eval $inlibc
 
 : see if fcntl.h is there
 val=''
@@ -13661,6 +14034,10 @@ EOM
 fi
 $rm_try
 
+: see if fegetround exists
+set fegetround d_fegetround
+eval $inlibc
+
 : see if fgetpos exists
 set fgetpos d_fgetpos
 eval $inlibc
@@ -13686,6 +14063,39 @@ eval $hasproto
 set fp_class d_fp_class
 eval $inlibc
 
+: see if this is a math.h system
+set math.h i_math
+eval $inhdr
+
+: check for fpclassify
+echo "Checking to see if you have fpclassify..." >&4
+$cat >try.c <<EOCP
+#$i_math I_MATH
+#ifdef I_MATH
+#include <math.h>
+#endif
+int main() { return fpclassify(1.0) == FP_NORMAL ? 0 : 1; }
+EOCP
+set try
+if eval $compile; then
+       val="$define"
+       echo "You have fpclassify."
+else
+       val="$undef"
+       echo "You do not have fpclassify."
+fi
+$rm_try
+set d_fpclassify
+eval $setvar
+
+: see if fp_classify exists
+set fp_classify d_fp_classify
+eval $inlibc
+
+: see if fp_classl exists
+set fp_classl d_fp_classl
+eval $inlibc
+
 : see if pathconf exists
 set pathconf d_pathconf
 eval $inlibc
@@ -13698,14 +14108,14 @@ eval $inlibc
 set fpclass d_fpclass
 eval $inlibc
 
-: see if fpclassify exists
-set fpclassify d_fpclassify
-eval $inlibc
-
 : see if fpclassl exists
 set fpclassl d_fpclassl
 eval $inlibc
 
+: see if fpgetround exists
+set fpgetround d_fpgetround
+eval $inlibc
+
 : check for fpos64_t
 echo " "
 echo "Checking to see if you have fpos64_t..." >&4
@@ -15435,22 +15845,131 @@ set d_isblank
 eval $setvar
 $rm -f isblank*
 
-: see if isfinite exists
-set isfinite d_isfinite
-eval $inlibc
+: check for isfinite
+echo "Checking to see if you have isfinite..." >&4
+$cat >try.c <<EOCP
+#$i_math I_MATH
+#ifdef I_MATH
+#include <math.h>
+#endif
+int main() { return isfinite(0.0); }
+EOCP
+set try
+if eval $compile; then
+       val="$define"
+       echo "You have isfinite."
+else
+       val="$undef"
+       echo "You do not have isfinite."
+fi
+$rm_try
+set d_isfinite
+eval $setvar
 
-: see if isinf exists
-set isinf d_isinf
+: see if isfinitel exists
+set isfinitel d_isfinitel
 eval $inlibc
 
-: see if isnan exists
-set isnan d_isnan
+: check for isinf
+echo "Checking to see if you have isinf..." >&4
+$cat >try.c <<EOCP
+#$i_math I_MATH
+#ifdef I_MATH
+#include <math.h>
+#endif
+int main() { return isinf(0.0); }
+EOCP
+set try
+if eval $compile; then
+       val="$define"
+       echo "You have isinf."
+else
+       val="$undef"
+       echo "You do not have isinf."
+fi
+$rm_try
+set d_isinf
+eval $setvar
+
+: see if isinfl exists
+set isinfl d_isinfl
 eval $inlibc
 
+: check for isless
+echo "Checking to see if you have isless..." >&4
+$cat >try.c <<EOCP
+#$i_math I_MATH
+#ifdef I_MATH
+#include <math.h>
+#endif
+int main() { return isless(0.0); }
+EOCP
+set try
+if eval $compile; then
+       val="$define"
+       echo "You have isless."
+else
+       val="$undef"
+       echo "You do not have isless."
+fi
+$rm_try
+set d_isless
+eval $setvar
+
+: check for isnan
+echo "Checking to see if you have isnan..." >&4
+$cat >try.c <<EOCP
+#$i_math I_MATH
+#ifdef I_MATH
+#include <math.h>
+#endif
+int main() { return isnan(0.0); }
+EOCP
+set try
+if eval $compile; then
+       val="$define"
+       echo "You have isnan."
+else
+       val="$undef"
+       echo "You do not have isnan."
+fi
+$rm_try
+set d_isnan
+eval $setvar
+
 : see if isnanl exists
 set isnanl d_isnanl
 eval $inlibc
 
+: check for isnormal
+echo "Checking to see if you have isnormal..." >&4
+$cat >try.c <<EOCP
+#$i_math I_MATH
+#ifdef I_MATH
+#include <math.h>
+#endif
+int main() { return isnormal(0.0); }
+EOCP
+set try
+if eval $compile; then
+       val="$define"
+       echo "You have isnormal."
+else
+       val="$undef"
+       echo "You do not have isnormal."
+fi
+$rm_try
+set d_isnormal
+eval $setvar
+
+: see if j0 exists
+set j0 d_j0
+eval $inlibc
+
+: see if j0l exists
+set j0l d_j0l
+eval $inlibc
+
 : see if killpg exists
 set killpg d_killpg
 eval $inlibc
@@ -15514,10 +16033,6 @@ $rm -f ldbl_dig.?
 set d_ldbl_dig
 eval $setvar
 
-: see if this is a math.h system
-set math.h i_math
-eval $inhdr
-
 : check to see if math.h defines _LIB_VERSION
 d_libm_lib_version="$undef"
 case $i_math in
@@ -15546,6 +16061,98 @@ EOCP
 
     esac
 
+: check for fpclassify
+echo " "
+echo "Checking to see if you have fpclassify..." >&4
+$cat >try.c <<EOCP
+#$i_math I_MATH
+#ifdef I_MATH
+#include <math.h>
+#endif
+int main() { return fpclassify(1.0) == FP_NORMAL ? 0 : 1; }
+EOCP
+set try
+if eval $compile; then
+       val="$define"
+       echo "You have fpclassify."
+else
+       val="$undef"
+       echo "You do not have fpclassify."
+fi
+$rm_try
+set d_fpclassify
+eval $setvar
+
+: check for isfinite
+echo " "
+echo "Checking to see if you have isfinite..." >&4
+$cat >try.c <<EOCP
+#$i_math I_MATH
+#ifdef I_MATH
+#include <math.h>
+#endif
+int main() { return isfinite(0.0); }
+EOCP
+set try
+if eval $compile; then
+       val="$define"
+       echo "You have isfinite."
+else
+       val="$undef"
+       echo "You do not have isfinite."
+fi
+$rm_try
+set d_isfinite
+eval $setvar
+
+: check for isinf
+echo " "
+echo "Checking to see if you have isinf..." >&4
+$cat >try.c <<EOCP
+#$i_math I_MATH
+#ifdef I_MATH
+#include <math.h>
+#endif
+int main() { return isinf(0.0); }
+EOCP
+set try
+if eval $compile; then
+       val="$define"
+       echo "You have isinf."
+else
+       val="$undef"
+       echo "You do not have isinf."
+fi
+$rm_try
+set d_isinf
+eval $setvar
+
+: check for isnan
+echo " "
+echo "Checking to see if you have isnan..." >&4
+$cat >try.c <<EOCP
+#$i_math I_MATH
+#ifdef I_MATH
+#include <math.h>
+#endif
+int main() { return isnan(0.0); }
+EOCP
+set try
+if eval $compile; then
+       val="$define"
+       echo "You have isnan."
+else
+       val="$undef"
+       echo "You do not have isnan."
+fi
+$rm_try
+set d_isnan
+eval $setvar
+
+: see if this is a quadmath.h system
+set quadmath.h i_quadmath
+eval $inhdr
+
 : see if link exists
 set link d_link
 eval $inlibc
@@ -15673,6 +16280,27 @@ $rm_try
 set localeconv d_locconv
 eval $inlibc
 
+: see if libc has the POSIX.1-2008 currency locale rules
+case "$d_locconv:$d_lc_monetary_2008" in
+  $define:)
+       $cat >try.c <<EOCP
+#include <locale.h>
+int main() {
+       struct lconv *lc = localeconv();
+       char int_p_cs_precedes = lc->int_p_cs_precedes;
+       return 0;
+}
+EOCP
+       set try
+       if eval $compile; then
+               d_lc_monetary_2008="$define"
+       else
+               d_lc_monetary_2008="$undef"
+       fi;
+       $rm_try
+       ;;
+esac
+
 : see if lockf exists
 set lockf d_lockf
 eval $inlibc
@@ -15789,6 +16417,10 @@ eval $inlibc
 set scalbnl d_scalbnl
 eval $inlibc
 
+: see if truncl exists
+set truncl d_truncl
+eval $inlibc
+
 : see if modfl exists
 set modfl d_modfl
 eval $inlibc
@@ -15867,10 +16499,14 @@ if $test "$uselongdouble" = "$define"; then
        message="$message sqrtl"
     fi
     if $test "$d_modfl" != "$define"; then
-       if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
-           echo "You have both aintl and copysignl, so I can emulate modfl."
+       if $test "$d_truncl:$d_copysignl" = "$define:$define"; then
+           echo "You have both truncl and copysignl, so I can emulate modfl."
        else
-           message="$message modfl"
+           if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
+               echo "You have both aintl and copysignl, so I can emulate modfl."
+           else
+               message="$message modfl"
+           fi
        fi
     fi
     if $test "$d_frexpl" != "$define"; then
@@ -16045,6 +16681,48 @@ define:define)
        ;;
 esac
 
+case "$usequadmath:$i_quadmath" in
+define:define)
+  nvtype="__float128"
+  nvsize=16
+  case "$libs" in
+  *quadmath*) ;;
+  *) $cat <<EOM >&4
+
+*** You requested the use of the quadmath library, but you
+*** do not seem to have the quadmath library installed.
+*** Cannot continue, aborting.
+EOM
+    exit 1
+    ;;
+  esac
+  ;;
+define:*) $cat <<EOM >&4
+
+*** You requested the use of the quadmath library, but you
+*** do not seem to have the required header, <quadmath.h>.
+EOM
+  case "$gccversion" in
+  [23].*|4.[0-5]*)
+   $cat <<EOM >&4
+*** Your gcc looks a bit old:
+*** $gccversion
+EOM
+    ;;
+  '')
+   $cat <<EOM >&4
+*** You are not running a gcc.
+EOM
+    ;;
+  esac
+  $cat <<EOM >&4
+*** For the quadmath library you need at least gcc 4.6.
+*** Cannot continue, aborting.
+EOM
+  exit 1
+  ;;
+esac
+
 $echo "(IV will be "$ivtype", $ivsize bytes)"
 $echo "(UV will be "$uvtype", $uvsize bytes)"
 $echo "(NV will be "$nvtype", $nvsize bytes)"
@@ -16531,6 +17209,9 @@ d_prctl_set_name=$undef
 case $d_prctl in
     $define)
        $cat >try.c <<EOM
+#ifdef __ANDROID__
+#include <unistd.h>
+#endif
 #include <sys/prctl.h>
 
 int main (int argc, char *argv[])
@@ -20343,20 +21024,29 @@ else
        fi
 fi
 
-if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
+if $test X"$usequadmath" = X"$define"; then
+    nveformat='"Qe"'
+    nvfformat='"Qf"'
+    nvgformat='"Qg"'
+    nvEUformat='"QE"'
+    nvFUformat='"QF"'
+    nvGUformat='"QG"'
+else
+    if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
        nveformat="$sPRIeldbl"
        nvfformat="$sPRIfldbl"
        nvgformat="$sPRIgldbl"
        nvEUformat="$sPRIEUldbl"
        nvFUformat="$sPRIFUldbl"
        nvGUformat="$sPRIGUldbl"
-else
+    else
        nveformat='"e"'
        nvfformat='"f"'
        nvgformat='"g"'
        nvEUformat='"E"'
        nvFUformat='"F"'
        nvGUformat='"G"'
+    fi
 fi
 
 case "$ivdformat" in
@@ -20529,7 +21219,7 @@ rp="What is the type used for the length parameter for string functions?"
 set size_t sizetype 'unsigned int' stdio.h sys/types.h
 eval $typedef_ask
 
-: check for type of arguments to gethostbyaddr. 
+: check for type of arguments to gethostbyaddr.
 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
        case "$d_gethbyaddr" in
        $define)
@@ -20538,8 +21228,8 @@ if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
 Checking to see what type of arguments are accepted by gethostbyaddr().
 EOM
                hdrs="$define sys/types.h
-                       $d_socket sys/socket.h 
-                       $i_niin netinet/in.h 
+                       $d_socket sys/socket.h
+                       $i_niin netinet/in.h
                        $i_netdb netdb.h
                        $i_unistd unistd.h"
                : The first arg can 'char *' or 'void *'
@@ -20576,12 +21266,12 @@ EOM
                netdb_hlen_type="$sizetype"
                ;;
        esac
-       # Remove the "const" if needed. -- but then we'll have a 
+       # Remove the "const" if needed. -- but then we'll have a
        # prototype clash!
        # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
 fi
 
-: check for type of argument to gethostbyname. 
+: check for type of argument to gethostbyname.
 if test "X$netdb_name_type" = X ; then
        case "$d_gethbyname" in
        $define)
@@ -20590,8 +21280,8 @@ if test "X$netdb_name_type" = X ; then
 Checking to see what type of argument is accepted by gethostbyname().
 EOM
                hdrs="$define sys/types.h
-                       $d_socket sys/socket.h 
-                       $i_niin netinet/in.h 
+                       $d_socket sys/socket.h
+                       $i_niin netinet/in.h
                        $i_netdb netdb.h
                        $i_unistd unistd.h"
                for xxx in "const char *" "char *"; do
@@ -20619,7 +21309,7 @@ EOM
        esac
 fi
 
-: check for type of 1st argument to getnetbyaddr. 
+: check for type of 1st argument to getnetbyaddr.
 if test "X$netdb_net_type" = X ; then
        case "$d_getnbyaddr" in
        $define)
@@ -20628,8 +21318,8 @@ if test "X$netdb_net_type" = X ; then
 Checking to see what type of 1st argument is accepted by getnetbyaddr().
 EOM
                hdrs="$define sys/types.h
-                       $d_socket sys/socket.h 
-                       $i_niin netinet/in.h 
+                       $d_socket sys/socket.h
+                       $i_niin netinet/in.h
                        $i_netdb netdb.h
                        $i_unistd unistd.h"
                for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
@@ -21993,6 +22683,10 @@ eval $inhdr
 set execinfo.h i_execinfo
 eval $inhdr
 
+: see if this is a fenv.h system
+set fenv.h i_fenv
+eval $inhdr
+
 : see if this is a fp.h system
 set fp.h i_fp
 eval $inhdr
@@ -22415,6 +23109,10 @@ eval $setvar
 set stddef.h i_stddef
 eval $inhdr
 
+: see if stdint is available
+set stdint.h i_stdint
+eval $inhdr
+
 : see if sys/access.h is available
 set sys/access.h i_sysaccess
 eval $inhdr
@@ -23120,11 +23818,14 @@ d_SCNfldbl='$d_SCNfldbl'
 d__fwalk='$d__fwalk'
 d_access='$d_access'
 d_accessx='$d_accessx'
+d_acosh='$d_acosh'
 d_aintl='$d_aintl'
 d_alarm='$d_alarm'
 d_archlib='$d_archlib'
 d_asctime64='$d_asctime64'
 d_asctime_r='$d_asctime_r'
+d_asinh='$d_asinh'
+d_atanh='$d_atanh'
 d_atolf='$d_atolf'
 d_atoll='$d_atoll'
 d_attribute_deprecated='$d_attribute_deprecated'
@@ -23147,6 +23848,7 @@ d_bzero='$d_bzero'
 d_c99_variadic_macros='$d_c99_variadic_macros'
 d_casti32='$d_casti32'
 d_castneg='$d_castneg'
+d_cbrt='$d_cbrt'
 d_charvspr='$d_charvspr'
 d_chown='$d_chown'
 d_chroot='$d_chroot'
@@ -23156,6 +23858,7 @@ d_clearenv='$d_clearenv'
 d_closedir='$d_closedir'
 d_cmsghdr_s='$d_cmsghdr_s'
 d_const='$d_const'
+d_copysign='$d_copysign'
 d_copysignl='$d_copysignl'
 d_cplusplus='$d_cplusplus'
 d_crypt='$d_crypt'
@@ -23195,7 +23898,11 @@ d_endpwent_r='$d_endpwent_r'
 d_endsent='$d_endsent'
 d_endservent_r='$d_endservent_r'
 d_eofnblk='$d_eofnblk'
+d_erf='$d_erf'
+d_erfc='$d_erfc'
 d_eunice='$d_eunice'
+d_exp2='$d_exp2'
+d_expm1='$d_expm1'
 d_faststdio='$d_faststdio'
 d_fchdir='$d_fchdir'
 d_fchmod='$d_fchmod'
@@ -23204,19 +23911,27 @@ d_fcntl='$d_fcntl'
 d_fcntl_can_lock='$d_fcntl_can_lock'
 d_fd_macros='$d_fd_macros'
 d_fd_set='$d_fd_set'
+d_fdim='$d_fdim'
 d_fds_bits='$d_fds_bits'
+d_fegetround='$d_fegetround'
 d_fgetpos='$d_fgetpos'
 d_finite='$d_finite'
 d_finitel='$d_finitel'
 d_flexfnam='$d_flexfnam'
 d_flock='$d_flock'
 d_flockproto='$d_flockproto'
+d_fma='$d_fma'
+d_fmax='$d_fmax'
+d_fmin='$d_fmin'
 d_fork='$d_fork'
 d_fp_class='$d_fp_class'
+d_fp_classify='$d_fp_classify'
+d_fp_classl='$d_fp_classl'
 d_fpathconf='$d_fpathconf'
 d_fpclass='$d_fpclass'
 d_fpclassify='$d_fpclassify'
 d_fpclassl='$d_fpclassl'
+d_fpgetround='$d_fpgetround'
 d_fpos64_t='$d_fpos64_t'
 d_frexpl='$d_frexpl'
 d_fs_data_s='$d_fs_data_s'
@@ -23294,6 +24009,8 @@ d_gnulibc='$d_gnulibc'
 d_grpasswd='$d_grpasswd'
 d_hasmntopt='$d_hasmntopt'
 d_htonl='$d_htonl'
+d_hypot='$d_hypot'
+d_ilogb='$d_ilogb'
 d_ilogbl='$d_ilogbl'
 d_inc_version_list='$d_inc_version_list'
 d_index='$d_index'
@@ -23308,23 +24025,39 @@ d_ipv6_mreq_source='$d_ipv6_mreq_source'
 d_isascii='$d_isascii'
 d_isblank='$d_isblank'
 d_isfinite='$d_isfinite'
+d_isfinitel='$d_isfinitel'
 d_isinf='$d_isinf'
+d_isinfl='$d_isinfl'
 d_isnan='$d_isnan'
 d_isnanl='$d_isnanl'
+d_isnormal='$d_isnormal'
+d_j0='$d_j0'
+d_j0l='$d_j0l'
 d_killpg='$d_killpg'
 d_lchown='$d_lchown'
+d_lc_monetary_2008='$d_lc_monetary_2008'
 d_ldbl_dig='$d_ldbl_dig'
 d_ldexpl='$d_ldexpl'
+d_lgamma='$d_lgamma'
+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_llrint='$d_llrint'
+d_llround='$d_llround'
 d_localtime64='$d_localtime64'
 d_localtime_r='$d_localtime_r'
 d_localtime_r_needs_tzset='$d_localtime_r_needs_tzset'
 d_locconv='$d_locconv'
+d_lgamma='$d_lgamma'
 d_lockf='$d_lockf'
+d_log1p='$d_log1p'
+d_log2='$d_log2'
+d_logb='$d_logb'
 d_longdbl='$d_longdbl'
 d_longlong='$d_longlong'
+d_lrint='$d_lrint'
+d_lround='$d_lround'
 d_lseekproto='$d_lseekproto'
 d_lstat='$d_lstat'
 d_madvise='$d_madvise'
@@ -23364,8 +24097,12 @@ d_msgsnd='$d_msgsnd'
 d_msync='$d_msync'
 d_munmap='$d_munmap'
 d_mymalloc='$d_mymalloc'
+d_nan='$d_nan'
 d_ndbm='$d_ndbm'
 d_ndbm_h_uses_prototypes='$d_ndbm_h_uses_prototypes'
+d_nearbyint='$d_nearbyint'
+d_nextafter='$d_nextafter'
+d_nexttoward='$d_nexttoward'
 d_nice='$d_nice'
 d_nl_langinfo='$d_nl_langinfo'
 d_nv_preserves_uv='$d_nv_preserves_uv'
@@ -23408,13 +24145,18 @@ d_readdir_r='$d_readdir_r'
 d_readlink='$d_readlink'
 d_readv='$d_readv'
 d_recvmsg='$d_recvmsg'
+d_remainder='$d_remainder'
+d_remquo='$d_remquo'
 d_rename='$d_rename'
 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'
 d_sched_yield='$d_sched_yield'
 d_scm_rights='$d_scm_rights'
@@ -23528,6 +24270,7 @@ d_tcgetpgrp='$d_tcgetpgrp'
 d_tcsetpgrp='$d_tcsetpgrp'
 d_telldir='$d_telldir'
 d_telldirproto='$d_telldirproto'
+d_tgamma='$d_tgamma'
 d_time='$d_time'
 d_timegm='$d_timegm'
 d_times='$d_times'
@@ -23535,6 +24278,8 @@ d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
 d_tm_tm_zone='$d_tm_tm_zone'
 d_tmpnam_r='$d_tmpnam_r'
 d_truncate='$d_truncate'
+d_trunc='$d_trunc'
+d_truncl='$d_truncl'
 d_ttyname_r='$d_ttyname_r'
 d_tzname='$d_tzname'
 d_u32align='$d_u32align'
@@ -23575,6 +24320,7 @@ db_version_patch='$db_version_patch'
 direntrytype='$direntrytype'
 dlext='$dlext'
 dlsrc='$dlsrc'
+doublekind='$doublekind'
 doublesize='$doublesize'
 drand01='$drand01'
 drand48_r_proto='$drand48_r_proto'
@@ -23674,6 +24420,7 @@ i_dirent='$i_dirent'
 i_dlfcn='$i_dlfcn'
 i_execinfo='$i_execinfo'
 i_fcntl='$i_fcntl'
+i_fenv='$i_fenv'
 i_float='$i_float'
 i_fp='$i_fp'
 i_fp_class='$i_fp_class'
@@ -23702,6 +24449,7 @@ i_poll='$i_poll'
 i_prot='$i_prot'
 i_pthread='$i_pthread'
 i_pwd='$i_pwd'
+i_quadmath='$i_quadmath'
 i_rpcsvcdbm='$i_rpcsvcdbm'
 i_sgtty='$i_sgtty'
 i_shadow='$i_shadow'
@@ -23709,6 +24457,7 @@ i_socks='$i_socks'
 i_stdarg='$i_stdarg'
 i_stdbool='$i_stdbool'
 i_stddef='$i_stddef'
+i_stdint='$i_stdint'
 i_stdlib='$i_stdlib'
 i_string='$i_string'
 i_sunmath='$i_sunmath'
@@ -24079,6 +24828,7 @@ usensgetexecutablepath='$usensgetexecutablepath'
 useopcode='$useopcode'
 useperlio='$useperlio'
 useposix='$useposix'
+usequadmath='$usequadmath'
 usereentrant='$usereentrant'
 userelocatableinc='$userelocatableinc'
 useshrplib='$useshrplib'