Update sparc ULPs.
[jlayton/glibc.git] / configure.in
index b2949b4958b62383191b92d0372c7468794ae5ed..bbdf156b094bbaea2a6febdfe7c31df4a8f3f436 100644 (file)
@@ -1,11 +1,44 @@
 dnl Process this file with autoconf to produce a configure script.
-AC_REVISION([$CVSid$])
-AC_PREREQ(2.53)dnl             dnl Minimum Autoconf version required.
+dnl Note we do not use AC_PREREQ here!  See aclocal.m4 for what we use instead.
 AC_INIT([GNU C Library], [(see version.h)], [http://sourceware.org/bugzilla/], [glibc])
 AC_CONFIG_SRCDIR([include/features.h])
 AC_CONFIG_HEADERS([config.h])
 AC_CONFIG_AUX_DIR([scripts])
 
+ACX_PKGVERSION([GNU libc])
+ACX_BUGURL([http://www.gnu.org/software/libc/bugs.html])
+AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"],
+                  [Package description])
+AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"],
+                  [Bug reporting address])
+
+# Glibc should not depend on any header files
+AC_DEFUN([_AC_INCLUDES_DEFAULT_REQUIREMENTS],
+  [m4_divert_text([DEFAULTS],
+    [ac_includes_default='/* none */'])])
+
+# We require GCC, and by default use its preprocessor.  Override AC_PROG_CPP
+# here to work around the Autoconf issue discussed in
+# <http://sourceware.org/ml/libc-alpha/2013-01/msg00721.html>.
+AC_DEFUN([AC_PROG_CPP],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_ARG_VAR([CPP],      [C preprocessor])dnl
+_AC_ARG_VAR_CPPFLAGS()dnl
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  CPP="$CC -E"
+fi
+AC_SUBST(CPP)dnl
+])# AC_PROG_CPP
+
+# We require GCC.  Override _AC_PROG_CC_C89 here to work around the Autoconf
+# issue discussed in
+# <http://sourceware.org/ml/libc-alpha/2013-01/msg00757.html>.
+AC_DEFUN([_AC_PROG_CC_C89], [[$1]])
+
 dnl This is here so we can set $subdirs directly based on configure fragments.
 AC_CONFIG_SUBDIRS()
 
@@ -19,6 +52,7 @@ AC_SUBST(cross_compiling)
 AC_PROG_CPP
 # We need the C++ compiler only for testing.
 AC_PROG_CXX
+AC_CHECK_TOOL(READELF, readelf, false)
 
 if test "`cd $srcdir; /bin/pwd`" = "`/bin/pwd`"; then
   AC_MSG_ERROR([you must configure in a separate build directory])
@@ -78,21 +112,11 @@ AC_ARG_WITH([binutils],
                           [specify location of binutils (as and ld)]),
            [path_binutils=$withval],
            [path_binutils=''])
-AC_ARG_WITH([elf],
-           AC_HELP_STRING([--with-elf],
-                          [if using the ELF object format]),
-           [elf=$withval],
-           [elf=no])
 AC_ARG_WITH([selinux],
            AC_HELP_STRING([--with-selinux],
                           [if building with SELinux support]),
            [with_selinux=$withval],
            [with_selinux=auto])
-AC_ARG_WITH([xcoff],
-           AC_HELP_STRING([--with-xcoff],
-                          [if using the XCOFF object format]),
-           [xcoff=$withval],
-           [xcoff=no])
 
 AC_ARG_WITH([headers],
            AC_HELP_STRING([--with-headers=PATH],
@@ -101,6 +125,7 @@ AC_ARG_WITH([headers],
                            @<:@default=compiler default@:>@]),
            [sysheaders=$withval],
            [sysheaders=''])
+AC_SUBST(sysheaders)
 
 AC_SUBST(use_default_link)
 AC_ARG_WITH([default-link],
@@ -115,44 +140,16 @@ AC_ARG_ENABLE([sanity-checks],
              [enable_sanity=$enableval],
              [enable_sanity=yes])
 
-AC_SUBST(enable_check_abi)
-AC_ARG_ENABLE([check-abi],
-             AC_HELP_STRING([--enable-check-abi],
-                            [do "make check-abi" in "make check" (no/warn/yes)
-                             @<:@default=no@:>@]),
-             [enable_check_abi=$enableval],
-             [enable_check_abi=no])
-
-dnl Arguments to enable or disable building the static, shared, profiled,
-dnl and -fomit-frame-pointer libraries.
-dnl I've disabled this for now since we cannot build glibc without static
-dnl libraries built in the moment.
-dnl AC_ARG_ENABLE([static],
-dnl               AC_HELP_STRING([--enable-static],
-dnl                              [build static library @<:@default=yes@:>@]),
-dnl               [static=$enableval],
-dnl               [static=yes])
-static=yes
 AC_ARG_ENABLE([shared],
              AC_HELP_STRING([--enable-shared],
-                            [build shared library @<:@default=yes if GNU ld & ELF@:>@]),
+                            [build shared library @<:@default=yes if GNU ld@:>@]),
              [shared=$enableval],
-             [shared=default])
+             [shared=yes])
 AC_ARG_ENABLE([profile],
              AC_HELP_STRING([--enable-profile],
                             [build profiled library @<:@default=no@:>@]),
              [profile=$enableval],
              [profile=no])
-AC_ARG_ENABLE([omitfp],
-             AC_HELP_STRING([--enable-omitfp],
-                            [build undebuggable optimized library @<:@default=no@:>@]),
-             [omitfp=$enableval],
-             [omitfp=no])
-AC_ARG_ENABLE([bounded],
-             AC_HELP_STRING([--enable-bounded],
-                            [build with runtime bounds checking @<:@default=no@:>@]),
-             [bounded=$enableval],
-             [bounded=no])
 AC_ARG_ENABLE([versioning],
              AC_HELP_STRING([--disable-versioning],
                             [do not include versioning information in the library objects @<:@default=yes if supported@:>@]),
@@ -171,6 +168,13 @@ else
 fi
 AC_SUBST(oldest_abi)
 
+AC_ARG_ENABLE([hardcoded-path-in-tests],
+             AC_HELP_STRING([--enable-hardcoded-path-in-tests],
+                            [hardcode newly built glibc path in tests @<:@default=no@:>@]),
+             [hardcoded_path_in_tests=$enableval],
+             [hardcoded_path_in_tests=no])
+AC_SUBST(hardcoded_path_in_tests)
+
 AC_ARG_ENABLE([stackguard-randomization],
              AC_HELP_STRING([--enable-stackguard-randomization],
                             [initialize __stack_chk_guard canary with a random number at program start]),
@@ -291,6 +295,55 @@ else
 fi
 AC_SUBST(libc_cv_nss_crypt)
 
+
+AC_ARG_ENABLE([obsolete-rpc],
+              AC_HELP_STRING([--enable-obsolete-rpc],
+                             [build and install the obsolete RPC code for link-time usage]),
+              [link_obsolete_rpc=$enableval],
+              [link_obsolete_rpc=no])
+AC_SUBST(link_obsolete_rpc)
+
+if test "$link_obsolete_rpc" = yes; then
+  AC_DEFINE(LINK_OBSOLETE_RPC)
+fi
+
+AC_ARG_ENABLE([systemtap],
+              [AS_HELP_STRING([--enable-systemtap],
+              [enable systemtap static probe points @<:@default=no@:>@])],
+              [systemtap=$enableval],
+             [systemtap=no])
+if test "x$systemtap" != xno; then
+  AC_CACHE_CHECK([for systemtap static probe support], libc_cv_sdt, [dnl
+  old_CFLAGS="$CFLAGS"
+  CFLAGS="-std=gnu99 $CFLAGS"
+  AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <sys/sdt.h>
+void foo (int i, void *p)
+{
+  asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) ""
+       :: STAP_PROBE_ASM_OPERANDS (2, i, p));
+}]])], [libc_cv_sdt=yes], [libc_cv_sdt=no])
+  CFLAGS="$old_CFLAGS"])
+  if test $libc_cv_sdt = yes; then
+    AC_DEFINE([USE_STAP_PROBE])
+  elif test "x$systemtap" != xauto; then
+    AC_MSG_FAILURE([systemtap support needs sys/sdt.h with asm support])
+  fi
+fi
+
+AC_ARG_ENABLE([build-nscd],
+             [AS_HELP_STRING([--disable-build-nscd],
+              [disable building and installing the nscd daemon])],
+             [build_nscd=$enableval],
+             [build_nscd=default])
+AC_SUBST(build_nscd)
+
+# Note the use of $use_nscd is near the bottom of the file.
+AC_ARG_ENABLE([nscd],
+             [AS_HELP_STRING([--disable-nscd],
+              [library functions will not contact the nscd daemon])],
+             [use_nscd=$enableval],
+             [use_nscd=yes])
+
 # The way shlib-versions is used to generate soversions.mk uses a
 # fairly simplistic model for name recognition that can't distinguish
 # i486-pc-linux-gnu fully from i486-pc-gnu.  So we mutate a $host_os
@@ -314,20 +367,7 @@ test "$config_vendor" = unknown && config_vendor=
 config_os="`echo $config_os | sed 's/^unknown-//'`"
 
 # Some configurations imply other options.
-case "$host_os" in
-# i586-linuxaout is mangled into i586-pc-linux-gnuaout
-linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
-  ;;
-gnu* | linux* | freebsd* | netbsd* | sysv4* | solaris2* | irix6*)
-  # These systems (almost) always use the ELF format.
-  elf=yes
-  ;;
-aix*)
-  # These systems are always xcoff
-  xcoff=yes
-  elf=no
-  ;;
-esac
+elf=yes
 
 # The configure fragment of an add-on port can modify these to supplement
 # or override the table in the case statement below.  No fragment should
@@ -361,6 +401,9 @@ AC_ARG_WITH([cpu],
   esac
 ])
 
+dnl Let sysdeps/*/preconfigure act here, like they can in add-ons.
+LIBC_PRECONFIGURE([$srcdir], [for sysdeps])
+
 # An add-on can set this when it wants to disable the sanity check below.
 libc_config_ok=no
 
@@ -480,16 +523,7 @@ relative path required for add-on using \$libc_add_on_config_subdirs) ;;
       }
     fi
     if test -n "$libc_add_on"; then
-      if frags=`ls -d $libc_add_on_srcdir/sysdeps/*/preconfigure 2> /dev/null`
-      then
-       AC_MSG_CHECKING(add-on $libc_add_on for preconfigure fragments)
-       for frag in $frags; do
-         name=`echo "$frag" | sed 's@/[[^/]]*$@@;s@^.*/@@'`
-         echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
-         . "$frag"
-       done
-       AC_MSG_RESULT()
-      fi
+      LIBC_PRECONFIGURE([$libc_add_on_srcdir], [add-on $libc_add_on for])
       use_add_ons="$use_add_ons $libc_add_on"
       add_ons_pfx="$add_ons_pfx $libc_add_on/"
       test -z "$libc_add_on_canonical" ||
@@ -513,7 +547,7 @@ AC_SUBST(add_on_subdirs)
 ###
 if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then
   case "$machine-$host_os" in
-  *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*)
+  *-linux* | *-gnu*)
     ;;
   *)
     echo "*** The GNU C library is currently not available for this platform."
@@ -533,13 +567,7 @@ changequote(,)dnl
 # type and particular chip.  If an add-on configure fragment already set
 # base_machine, we don't change it.
 test -n "$base_machine" || case "$machine" in
-a29k | am29000)        base_machine=a29k machine=a29k ;;
-c3[012])       base_machine=cx0 machine=cx0/c30 ;;
-c4[04])                base_machine=cx0 machine=cx0/c40 ;;
 i[34567]86)    base_machine=i386 machine=i386/$machine ;;
-ia64)          base_machine=ia64 machine=ia64 ;;
-m88???)                base_machine=m88k machine=m88k/$machine ;;
-m88k)          base_machine=m88k machine=m88k/m88100 ;;
 powerpc)       base_machine=powerpc machine=powerpc/powerpc32 ;;
 powerpc64)     base_machine=powerpc machine=powerpc/powerpc64 ;;
 s390)           base_machine=s390 machine=s390/s390-32 ;;
@@ -575,17 +603,32 @@ if test "$base_machine" = "i386"; then
   AC_DEFINE(USE_REGPARMS)
 fi
 
-# For the multi-arch option we need support in the assembler.
-AC_CACHE_CHECK([for assembler gnu_indirect_function symbol type support],
-              libc_cv_asm_gnu_indirect_function, [dnl
-cat > conftest.s <<EOF
+# For the multi-arch option we need support in the assembler & linker.
+AC_CACHE_CHECK([for assembler and linker STT_GNU_IFUNC support],
+              libc_cv_ld_gnu_indirect_function, [dnl
+cat > conftest.S <<EOF
 .type foo,%gnu_indirect_function
+foo:
+.globl _start
+_start:
+.globl __start
+__start:
+.data
+#ifdef _LP64
+.quad foo
+#else
+.long foo
+#endif
 EOF
-if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD;
-then
-  libc_cv_asm_gnu_indirect_function=yes
-else
-  libc_cv_asm_gnu_indirect_function=no
+libc_cv_ld_gnu_indirect_function=no
+if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
+           -nostartfiles -nostdlib \
+           -o conftest conftest.S 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
+  # Do a link to see if the backend supports IFUNC relocs.
+  $READELF -r conftest 1>&AS_MESSAGE_LOG_FD
+  LC_ALL=C $READELF -r conftest | grep 'no relocations' >/dev/null || {
+    libc_cv_ld_gnu_indirect_function=yes
+  }
 fi
 rm -f conftest*])
 
@@ -605,56 +648,14 @@ else
   AC_MSG_RESULT(yes)
 fi
 
-AC_CACHE_CHECK(for assembler global-symbol directive,
-              libc_cv_asm_global_directive, [dnl
-libc_cv_asm_global_directive=UNKNOWN
-for ac_globl in .globl .global .EXPORT; do
-  cat > conftest.s <<EOF
-       ${libc_cv_dot_text}
-       ${ac_globl} foo
-foo:
-EOF
-  if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
-    libc_cv_asm_global_directive=${ac_globl}
-  fi
-  rm -f conftest*
-  test $libc_cv_asm_global_directive != UNKNOWN && break
-done])
-if test $libc_cv_asm_global_directive = UNKNOWN; then
-  AC_MSG_ERROR(cannot determine asm global directive)
-else
-  AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
-fi
-
-AC_CACHE_CHECK(for assembler .type directive prefix,
-              libc_cv_asm_type_prefix, [dnl
-libc_cv_asm_type_prefix=no
-for ac_try_prefix in '@' '%' '#'; do
-  cat > conftest.s <<EOF
-       ${libc_cv_dot_text}
-       ${libc_cv_asm_global_directive} foo
-       .type foo, ${ac_try_prefix}object
-       .size foo, 1
-foo:
-       .byte 1
-EOF
-  if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
-    libc_cv_asm_type_prefix=${ac_try_prefix}
-  fi
-  rm -f conftest*
-  test "x$libc_cv_asm_type_prefix" != xno && break
-done])
-if test "x$libc_cv_asm_type_prefix" != xno; then
-  AC_DEFINE_UNQUOTED(ASM_TYPE_DIRECTIVE_PREFIX, ${libc_cv_asm_type_prefix})
-fi
-
-if test x"$libc_cv_asm_gnu_indirect_function" != xyes -a x"$libc_cv_asm_type_prefix" = xno; then
+if test x"$libc_cv_ld_gnu_indirect_function" != xyes; then
   if test x"$multi_arch" = xyes; then
     AC_MSG_ERROR([--enable-multi-arch support requires assembler and linker support])
   else
     multi_arch=no
   fi
 fi
+multi_arch_d=
 if test x"$multi_arch" != xno; then
   multi_arch_d=/multiarch
 fi
@@ -671,22 +672,8 @@ os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
 test "x$base_os" != x || case "$os" in
 gnu*)
   base_os=mach/hurd ;;
-netbsd* | 386bsd* | freebsd* | bsdi*)
-  base_os=unix/bsd/bsd4.4 ;;
-osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
-  base_os=unix/bsd ;;
-sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
+linux*)
   base_os=unix/sysv ;;
-irix6*)
-  base_os=unix/sysv/irix6/$os ;;
-solaris[2-9]*)
-  base_os=unix/sysv/sysv4 ;;
-hpux*)
-  base_os=unix/sysv/hpux/$os ;;
-aix4.3*)
-  base_os=unix/sysv/aix/aix4.3 ;;
-none)
-  base_os=standalone ;;
 esac
 
 # For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
@@ -722,11 +709,16 @@ while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
   set $m
   # Prepend the machine's FPU directory unless --without-fp.
   if test "$with_fp" = yes; then
-    mach="$mach /$1/fpu"
+    maybe_fpu=/fpu
   else
-    mach="$mach /$1/nofpu"
+    maybe_fpu=/nofpu
   fi
-  mach="$mach /$1"
+  # For each machine term, try it with and then without /multiarch.
+  for try_fpu in $maybe_fpu ''; do
+    for try_multi in $multi_arch_d ''; do
+      mach="$mach /$1$try_fpu$try_multi"
+    done
+  done
   tail="$2"
 done
 
@@ -742,15 +734,16 @@ for b in $base ''; do
       test "$v" = / && continue
       for o in /$ostry ''; do
        test "$o" = / && continue
-       for m in $multi_arch_d $mach ''; do
+       for m in $mach ''; do
          for d in $add_ons_pfx ''; do
            for a in $add_ons_sfx ''; do
-             if test -n "$m0$m0sub$b$v$o$m$msub"; then
+             try_suffix="$m0$b$v$o$m"
+             if test -n "$try_suffix"; then
                try_srcdir="${srcdir}/"
                case "$d" in
                /*) try_srcdir= ;;
                esac
-               try="${d}sysdeps$m0$m0sub$b$v$o$m$msub$a"
+               try="${d}sysdeps$try_suffix$a"
                test -n "$enable_debug_configure" &&
                echo "$0 [DEBUG]: try $try" >&2
                if test -d "$try_srcdir$try"; then
@@ -803,25 +796,6 @@ AC_SUBST(submachine)
 
 # We have now validated the configuration.
 
-
-# If using ELF, look for an `elf' subdirectory of each machine directory.
-# We prepend these rather than inserting them whereever the machine appears
-# because things specified by the machine's ELF ABI should override
-# OS-specific things, and should always be the same for any OS on the
-# machine (otherwise what's the point of an ABI?).
-if test "$elf" = yes; then
-  elf_dirs=
-  for d in $add_ons_pfx ''; do
-    for m in $mach; do
-      if test -d $srcdir/${d}sysdeps$m/elf; then
-       elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
-      fi
-    done
-  done
-  sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
-fi
-
-
 # Expand the list of system names into a full list of directories
 # from each element's parent name and Implies file (if present).
 set $sysnames
@@ -847,41 +821,42 @@ while test $# -gt 0; do
   test -n "$enable_debug_configure" &&
   echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
 
-  if test -f $xsrcdir$name/Implies; then
-    # Collect more names from the `Implies' file (removing comments).
-    implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
-    implied=
-    for x in $implied_candidate; do
-      found=no
-      if test -d $xsrcdir$name_base/$x; then
-       implied="$implied $name_base/$x";
-       found=yes
-      fi
-      for d in $add_ons_pfx ''; do
-       try="${d}sysdeps/$x"
-       case $d in
-        /*) try_srcdir= ;;
-        *) try_srcdir=$srcdir/ ;;
-       esac
-       test -n "$enable_debug_configure" &&
-        echo "[DEBUG]: $name implied $x try($d) {$try_srcdir}$try" >&2
-       if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
-       then
-         implied="$implied $try"
+  for implies_file in Implies Implies-before Implies-after; do
+    implies_type=`echo $implies_file | sed s/-/_/`
+    eval ${implies_type}=
+    if test -f $xsrcdir$name/$implies_file; then
+      # Collect more names from the `Implies' file (removing comments).
+      implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/$implies_file`"
+      for x in $implied_candidate; do
+       found=no
+       if test -d $xsrcdir$name_base/$x; then
+         eval "${implies_type}=\"\$${implies_type} \$name_base/\$x\""
          found=yes
-         case "$sysnames_add_ons" in
-         *" $d "*) ;;
-         *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
+       fi
+       for d in $add_ons_pfx ''; do
+         try="${d}sysdeps/$x"
+         case $d in
+          /*) try_srcdir= ;;
+          *) try_srcdir=$srcdir/ ;;
          esac
+         test -n "$enable_debug_configure" &&
+          echo "[DEBUG]: $name $implies_file $x try($d) {$try_srcdir}$try" >&2
+         if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
+         then
+           eval "${implies_type}=\"\$${implies_type} \$try\""
+           found=yes
+           case "$sysnames_add_ons" in
+           *" $d "*) ;;
+           *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
+           esac
+         fi
+       done
+       if test $found = no; then
+         AC_MSG_WARN($name/$implies_file specifies nonexistent $x)
        fi
       done
-      if test $found = no; then
-       AC_MSG_WARN($name/Implies specifies nonexistent $x)
-      fi
-    done
-  else
-    implied=
-  fi
+    fi
+  done
 
   # Add NAME to the list of names.
   names="$names $name"
@@ -891,6 +866,10 @@ changequote(,)dnl
   parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
 changequote([,])dnl
 
+  test -n "$enable_debug_configure" &&
+    echo "[DEBUG]: $name Implies='$Implies' rest='$*' parent='$parent' \
+Implies_before='$Implies_before' Implies_after='$Implies_after'" >&2
+
   # Add the names implied by NAME, and NAME's parent (if it has one), to
   # the list of names to be processed (the argument list).  We prepend the
   # implied names to the list and append the parent.  We want implied
@@ -898,15 +877,12 @@ changequote([,])dnl
   # configuration components; this ensures that for sysv4, unix/common
   # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
   # after sysv4).
-  sysnames="`echo $implied $* $parent`"
+  sysnames="`echo $Implies $* $Implies_before $parent $Implies_after`"
   test -n "$sysnames" && set $sysnames
 done
 
 # Add the default directories.
-default_sysnames=sysdeps/generic
-if test "$elf" = yes; then
-  default_sysnames="sysdeps/generic/elf $default_sysnames"
-fi
+default_sysnames="sysdeps/generic"
 sysnames="$names $default_sysnames"
 AC_SUBST(sysnames)
 # The other names were emitted during the scan.
@@ -978,30 +954,19 @@ fi
 AC_PROG_LN_S
 
 LIBC_PROG_BINUTILS
-AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
 
-# Accept binutils 2.13 or newer.
+# Accept binutils 2.20 or newer.
 AC_CHECK_PROG_VER(AS, $AS, --version,
                  [GNU assembler.* \([0-9]*\.[0-9.]*\)],
-                 [2.1[3-9]*|2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*], AS=: critic_missing="$critic_missing as")
+                 [2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*], AS=: critic_missing="$critic_missing as")
 AC_CHECK_PROG_VER(LD, $LD, --version,
                  [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
-                 [2.1[3-9]*|2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*], LD=: critic_missing="$critic_missing ld")
-
-# We need the physical current working directory.  We cannot use the
-# "pwd -P" shell builtin since that's not portable.  Instead we try to
-# find a pwd binary.  Note that assigning to the PWD environment
-# variable might have some interesting side effects, so we don't do
-# that.
-AC_PATH_PROG(PWD_P, pwd, no)
-if test "$PWD_P" = no; then
-  AC_MSG_ERROR(*** A pwd binary could not be found.)
-fi
+                 [2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*], LD=: critic_missing="$critic_missing ld")
 
 # These programs are version sensitive.
 AC_CHECK_TOOL_PREFIX
 AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
-  [version \([egcygnustpi-]*[0-9.]*\)], [3.4* | 4.[0-9]* ],
+  [version \([egcygnustpi-]*[0-9.]*\)], [4.[3-9].* | 4.[1-9][0-9].* | [5-9].* ],
   critic_missing="$critic_missing gcc")
 AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
   [GNU Make[^0-9]*\([0-9][0-9.]*\)],
@@ -1013,14 +978,17 @@ AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
   MSGFMT=: aux_missing="$aux_missing msgfmt")
 AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
   [GNU texinfo.* \([0-9][0-9.]*\)],
-  [4.*],
+  [4.[5-9]*|4.[1-9][0-9]*|[5-9].*],
   MAKEINFO=: aux_missing="$aux_missing makeinfo")
 AC_CHECK_PROG_VER(SED, sed, --version,
-  [GNU sed version \([0-9]*\.[0-9.]*\)],
+  [GNU sed[^0-9]* \([0-9]*\.[0-9.]*\)],
   [3.0[2-9]*|3.[1-9]*|[4-9]*],
   SED=: aux_missing="$aux_missing sed")
+AC_CHECK_PROG_VER(AWK, gawk, --version,
+  [GNU Awk[^0-9]*\([0-9][0-9.]*\)],
+  [[3-9].*], critic_missing="$critic_missing gawk")
 
-AC_CHECK_TOOL(READELF, readelf, false)
+AC_CHECK_TOOL(NM, nm, false)
 
 AC_CHECK_PROGS(AUTOCONF, autoconf, no)
 case "x$AUTOCONF" in
@@ -1061,19 +1029,17 @@ if test -n "$sysheaders"; then
   SYSINCLUDES="$SYSINCLUDES \
 -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
   if test -n "$CXX"; then
-    cxxversion=`$CXX -dumpversion 2>&AS_MESSAGE_LOG_FD` &&
-    cxxmachine=`$CXX -dumpmachine 2>&AS_MESSAGE_LOG_FD` &&
-    cxxheaders=`$CXX -print-file-name=../../../../include/c++/`"$cxxversion" &&
-    CXX_SYSINCLUDES="-isystem $cxxheaders \
--isystem $cxxheaders/$cxxmachine -isystem $cxxheaders/backward"
+    CXX_SYSINCLUDES=
+    for cxxheaders in `$CXX -v -S -x c++ /dev/null -o /dev/null 2>&1 \
+    | sed -n -e '1,/#include/d' -e 's/^ \(\/.*\/[cg]++\)/\1/p'`; do
+      test "x$cxxheaders" != x &&
+      CXX_SYSINCLUDES="$CXX_SYSINCLUDES -isystem $cxxheaders"
+    done
   fi
 fi
 AC_SUBST(SYSINCLUDES)
 AC_SUBST(CXX_SYSINCLUDES)
 
-# ranlib is never necessary on Linux and Hurd systems
-RANLIB=:
-
 # Test if LD_LIBRARY_PATH contains the notation for the current directory
 # since this would lead to problems installing/building glibc.
 # LD_LIBRARY_PATH contains the current directory if one of the following
@@ -1101,7 +1067,7 @@ AC_MSG_ERROR([
 fi
 
 AC_CACHE_CHECK(whether GCC supports -static-libgcc, libc_cv_gcc_static_libgcc, [dnl
-if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then
+if $CC -v -static-libgcc 2>&1 | grep 'unrecognized option.*static-libgcc' >/dev/null; then
   libc_cv_gcc_static_libgcc=
 else
   libc_cv_gcc_static_libgcc=-static-libgcc
@@ -1133,7 +1099,6 @@ else
 fi
 AC_SUBST(libc_cv_have_ksh)
 
-AC_PROG_AWK
 AC_PATH_PROG(PERL, perl, no)
 if test "$PERL" != no &&
    (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
@@ -1143,24 +1108,6 @@ AC_PATH_PROG(INSTALL_INFO, install-info, no,
             $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
 AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
 
-AC_CACHE_CHECK(for signed size_t type, libc_cv_signed_size_t, [dnl
-echo '#include <stddef.h>
-FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
-if eval "$ac_cpp conftest.c 2>/dev/null" \
-| grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then
-  libc_cv_signed_size_t=no
-else
-  libc_cv_signed_size_t=yes
-fi
-rm -f conftest*])
-if test $libc_cv_signed_size_t = yes; then
-  dnl Do this by hand instead of AC_DEFINE so can add #undef to avoid warnings.
-  cat >> confdefs.h <<\EOF
-#undef __SIZE_TYPE__
-#define __SIZE_TYPE__ unsigned
-EOF
-fi
-
 AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
 AC_TRY_COMPILE(dnl
 [#define __need_size_t
@@ -1201,7 +1148,7 @@ cat > conftest.s <<EOF
 ${libc_cv_dot_text}
 foo:
 .set glibc_conftest_frobozz,foo
-$libc_cv_asm_global_directive glibc_conftest_frobozz
+.globl glibc_conftest_frobozz
 EOF
 # The alpha-dec-osf1 assembler gives only a warning for `.set'
 # (but it doesn't work), so we must do a linking check to be sure.
@@ -1226,7 +1173,7 @@ AC_CACHE_CHECK(for assembler gnu_unique_object symbol type,
 cat > conftest.s <<EOF
 ${libc_cv_dot_text}
 _sym:
-.type _sym, ${libc_cv_asm_type_prefix}gnu_unique_object
+.type _sym, %gnu_unique_object
 EOF
 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
   libc_cv_asm_unique_object=yes
@@ -1295,62 +1242,61 @@ else
 fi
 AC_SUBST(VERSIONING)
 
-if test $elf = yes && test $shared != no && test $VERSIONING = no; then
+if test $shared != no && test $VERSIONING = no; then
   echo "\
 *** WARNING: You should not compile GNU libc without versioning. Not using
 *** versioning will introduce incompatibilities so that old binaries
 *** will not run anymore.
 *** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
 fi
-if test $elf = yes; then
-  AC_CACHE_CHECK(for .previous assembler directive,
-                libc_cv_asm_previous_directive, [dnl
-  cat > conftest.s <<EOF
+AC_CACHE_CHECK(for .previous assembler directive,
+              libc_cv_asm_previous_directive, [dnl
+cat > conftest.s <<EOF
 .section foo_section
 .previous
+EOF
+if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
+  libc_cv_asm_previous_directive=yes
+else
+  libc_cv_asm_previous_directive=no
+fi
+rm -f conftest*])
+if test $libc_cv_asm_previous_directive = yes; then
+  AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
+else
+  AC_CACHE_CHECK(for .popsection assembler directive,
+                libc_cv_asm_popsection_directive, [dnl
+  cat > conftest.s <<EOF
+.pushsection foo_section
+.popsection
 EOF
   if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
-    libc_cv_asm_previous_directive=yes
+    libc_cv_asm_popsection_directive=yes
   else
-    libc_cv_asm_previous_directive=no
+    libc_cv_asm_popsection_directive=no
   fi
   rm -f conftest*])
-  if test $libc_cv_asm_previous_directive = yes; then
-    AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
-  else
-    AC_CACHE_CHECK(for .popsection assembler directive,
-                  libc_cv_asm_popsection_directive, [dnl
-    cat > conftest.s <<EOF
-.pushsection foo_section
-.popsection
-EOF
-    if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
-      libc_cv_asm_popsection_directive=yes
-    else
-      libc_cv_asm_popsection_directive=no
-    fi
-    rm -f conftest*])
-    if test $libc_cv_asm_popsection_directive = yes; then
-      AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
-    fi
+  if test $libc_cv_asm_popsection_directive = yes; then
+    AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
   fi
-  AC_CACHE_CHECK(for .protected and .hidden assembler directive,
-                libc_cv_asm_protected_directive, [dnl
-  cat > conftest.s <<EOF
+fi
+AC_CACHE_CHECK(for .protected and .hidden assembler directive,
+              libc_cv_asm_protected_directive, [dnl
+cat > conftest.s <<EOF
 .protected foo
 foo:
 .hidden bar
 bar:
 EOF
-  if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
-    libc_cv_asm_protected_directive=yes
-  else
-    AC_MSG_ERROR(assembler support for symbol visibility is required)
-  fi
-  rm -f conftest*])
+if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
+  libc_cv_asm_protected_directive=yes
+else
+  AC_MSG_ERROR(assembler support for symbol visibility is required)
+fi
+rm -f conftest*])
 
-  if test $libc_cv_asm_protected_directive = yes; then
-    AC_CACHE_CHECK(whether __attribute__((visibility())) is supported,
+if test $libc_cv_asm_protected_directive = yes; then
+  AC_CACHE_CHECK(whether __attribute__((visibility())) is supported,
                 libc_cv_visibility_attribute,
                 [cat > conftest.c <<EOF
                  int foo __attribute__ ((visibility ("hidden"))) = 1;
@@ -1366,13 +1312,13 @@ EOF
                  fi
                  rm -f conftest.{c,s}
                 ])
-    if test $libc_cv_visibility_attribute != yes; then
-      AC_MSG_ERROR(compiler support for visibility attribute is required)
-    fi
+  if test $libc_cv_visibility_attribute != yes; then
+    AC_MSG_ERROR(compiler support for visibility attribute is required)
   fi
+fi
 
-  if test $libc_cv_visibility_attribute = yes; then
-    AC_CACHE_CHECK(for broken __attribute__((visibility())),
+if test $libc_cv_visibility_attribute = yes; then
+  AC_CACHE_CHECK(for broken __attribute__((visibility())),
                 libc_cv_broken_visibility_attribute,
                 [cat > conftest.c <<EOF
                  int foo (int x);
@@ -1389,36 +1335,36 @@ changequote([,])dnl
                  fi
                  rm -f conftest.c conftest.s
                 ])
-    if test $libc_cv_broken_visibility_attribute = yes; then
-      AC_MSG_ERROR(working compiler support for visibility attribute is required)
-    fi
+  if test $libc_cv_broken_visibility_attribute = yes; then
+    AC_MSG_ERROR(working compiler support for visibility attribute is required)
   fi
+fi
 
-  AC_CACHE_CHECK(for broken __attribute__((alias())),
-                libc_cv_broken_alias_attribute,
-                [cat > conftest.c <<EOF
-                 extern int foo (int x) __asm ("xyzzy");
-                 int bar (int x) { return x; }
-                 extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
-                 extern int dfoo;
-                 extern __typeof (dfoo) dfoo __asm ("abccb");
-                 int dfoo = 1;
+AC_CACHE_CHECK(for broken __attribute__((alias())),
+              libc_cv_broken_alias_attribute,
+              [cat > conftest.c <<EOF
+              extern int foo (int x) __asm ("xyzzy");
+              int bar (int x) { return x; }
+              extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
+              extern int dfoo;
+              extern __typeof (dfoo) dfoo __asm ("abccb");
+              int dfoo = 1;
 EOF
-                 libc_cv_broken_alias_attribute=yes
-                 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
-                   if grep 'xyzzy' conftest.s >/dev/null &&
-                      grep 'abccb' conftest.s >/dev/null; then
-                     libc_cv_broken_alias_attribute=no
-                   fi
-                 fi
-                 rm -f conftest.c conftest.s
-                ])
-  if test $libc_cv_broken_alias_attribute = yes; then
-    AC_MSG_ERROR(working alias attribute support required)
-  fi
-
-  if test $libc_cv_visibility_attribute = yes; then
-    AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
+              libc_cv_broken_alias_attribute=yes
+              if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
+                if grep 'xyzzy' conftest.s >/dev/null &&
+                   grep 'abccb' conftest.s >/dev/null; then
+                  libc_cv_broken_alias_attribute=no
+                fi
+              fi
+              rm -f conftest.c conftest.s
+              ])
+if test $libc_cv_broken_alias_attribute = yes; then
+  AC_MSG_ERROR(working alias attribute support required)
+fi
+
+if test $libc_cv_visibility_attribute = yes; then
+  AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
                 libc_cv_have_sdata_section,
                 [echo "int i;" > conftest.c
                  libc_cv_have_sdata_section=no
@@ -1428,43 +1374,36 @@ EOF
                  fi
                  rm -f conftest.c conftest.so
                 ])
-    if test $libc_cv_have_sdata_section = yes; then
-      AC_DEFINE(HAVE_SDATA_SECTION)
-    fi
+  if test $libc_cv_have_sdata_section = yes; then
+    AC_DEFINE(HAVE_SDATA_SECTION)
   fi
+fi
 
-  AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
-                libc_cv_initfini_array, [dnl
-  cat > conftest.c <<EOF
-int _start (void) { return 0; }
-int __start (void) { return 0; }
+AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
+              libc_cv_initfini_array, [dnl
+LIBC_TRY_LINK_STATIC([
 int foo (void) { return 1; }
 int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
-EOF
-  if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest conftest.c
-                    -static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD])
-  then
-    if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then
-      libc_cv_initfini_array=yes
-    else
-      libc_cv_initfini_array=no
-    fi
+],
+  [if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then
+    libc_cv_initfini_array=yes
   else
     libc_cv_initfini_array=no
-  fi
-  rm -f conftest*])
-  if test $libc_cv_initfini_array != yes; then
-    AC_MSG_ERROR([Need linker with .init_array/.fini_array support.])
-  fi
+  fi],
+  [libc_cv_initfini_array=no])
+])
+if test $libc_cv_initfini_array != yes; then
+  AC_MSG_ERROR([Need linker with .init_array/.fini_array support.])
+fi
 
-  AC_CACHE_CHECK(whether to use .ctors/.dtors header and trailer,
-                libc_cv_ctors_header, [dnl
-    libc_cv_ctors_header=yes
-    AC_TRY_LINK([], [
-__attribute__ ((constructor)) void ctor (void) { puts("ctor"); }
-__attribute__ ((destructor))  void dtor (void) { puts("dtor"); }
+AC_CACHE_CHECK(whether to use .ctors/.dtors header and trailer,
+              libc_cv_ctors_header, [dnl
+  libc_cv_ctors_header=yes
+  LIBC_TRY_LINK_STATIC([
+__attribute__ ((constructor)) void ctor (void) { asm (""); }
+__attribute__ ((destructor))  void dtor (void) { asm (""); }
 ],
-               [dnl
+             [dnl
       AS_IF([$READELF -WS conftest$ac_exeext | $AWK '
        { gsub(/\@<:@ */, "@<:@") }
        $2 == ".ctors" || $2 == ".dtors" {
@@ -1482,102 +1421,59 @@ __attribute__ ((destructor))  void dtor (void) { puts("dtor"); }
     ], [dnl
       AC_MSG_ERROR([missing __attribute__ ((constructor)) support??])
     ])
-  ])
-  if test $libc_cv_ctors_header = no; then
-    AC_DEFINE(NO_CTORS_DTORS_SECTIONS)
-  fi
-
-  AC_CACHE_CHECK(for libunwind-support in compiler,
-                libc_cv_cc_with_libunwind, [
-    cat > conftest.c <<EOF
-int main (void) { return 0; }
-EOF
-    if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
-       conftest.c -v 2>&1 >/dev/null | grep -q " -lunwind "; then
-      libc_cv_cc_with_libunwind=yes
-    else
-      libc_cv_cc_with_libunwind=no
-    fi
-    rm -f conftest*])
-  AC_SUBST(libc_cv_cc_with_libunwind)
-  if test $libc_cv_cc_with_libunwind = yes; then
-    AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
-  fi
-
-  AC_CACHE_CHECK(for -z nodelete option,
-                libc_cv_z_nodelete, [dnl
-  cat > conftest.c <<EOF
-int _start (void) { return 42; }
-EOF
-  if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-                    -fPIC -shared -o conftest.so conftest.c
-                    -nostartfiles -nostdlib
-                    -Wl,--enable-new-dtags,-z,nodelete 1>&AS_MESSAGE_LOG_FD])
-  then
-    libc_cv_z_nodelete=yes
-  else
-    AC_MSG_ERROR(linker with -z nodelete support required)
-  fi
-  rm -f conftest*])
-
-  AC_CACHE_CHECK(for -z nodlopen option,
-                libc_cv_z_nodlopen, [dnl
-  cat > conftest.c <<EOF
-int _start (void) { return 42; }
-EOF
-  if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-                       -fPIC -shared -o conftest.so conftest.c
-                       -nostartfiles -nostdlib
-                       -Wl,--enable-new-dtags,-z,nodlopen 1>&AS_MESSAGE_LOG_FD])
-  then
-    libc_cv_z_nodlopen=yes
-  else
-    AC_MSG_ERROR(linker with -z nodlopen support required)
-  fi
-  rm -f conftest*])
+])
+if test $libc_cv_ctors_header = no; then
+  AC_DEFINE(NO_CTORS_DTORS_SECTIONS)
+fi
 
-  AC_CACHE_CHECK(for -z initfirst option,
-                libc_cv_z_initfirst, [dnl
+AC_CACHE_CHECK(for libunwind-support in compiler,
+              libc_cv_cc_with_libunwind, [
   cat > conftest.c <<EOF
-int _start (void) { return 42; }
+int main (void) { return 0; }
 EOF
-  if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-                       -fPIC -shared -o conftest.so conftest.c
-                       -nostartfiles -nostdlib
-                       -Wl,--enable-new-dtags,-z,initfirst 1>&AS_MESSAGE_LOG_FD])
-  then
-    libc_cv_z_initfirst=yes
+  if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
+     conftest.c -v 2>&1 >/dev/null | grep ' -lunwind ' >/dev/null; then
+    libc_cv_cc_with_libunwind=yes
   else
-    AC_MSG_ERROR(linker with -z initfirst support required)
+    libc_cv_cc_with_libunwind=no
   fi
   rm -f conftest*])
+AC_SUBST(libc_cv_cc_with_libunwind)
+if test $libc_cv_cc_with_libunwind = yes; then
+  AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
+fi
+
+LIBC_LINKER_FEATURE([-z nodelete], [-Wl,--enable-new-dtags,-z,nodelete],
+                   [libc_cv_z_nodelete=yes],
+                   [AC_MSG_ERROR(linker with -z nodelete support required)])
+
+LIBC_LINKER_FEATURE([-z nodlopen], [-Wl,--enable-new-dtags,-z,nodlopen],
+                   [libc_cv_z_nodlopen=yes],
+                   [AC_MSG_ERROR(linker with -z nodlopen support required)])
+
+LIBC_LINKER_FEATURE([-z initfirst], [-Wl,--enable-new-dtags,-z,initfirst],
+                   [libc_cv_z_initfirst=yes],
+                   [AC_MSG_ERROR(linker with -z initfirst support required)])
+
+# Add-on fragments can set these for other machines.
+libc_commonpagesize=${libc_commonpagesize:-no}
+libc_relro_required=${libc_relro_required:-no}
+case "$base_machine" in
+  i[[34567]]86 | x86_64 | powerpc* | s390*)
+    libc_commonpagesize=0x1000
+    libc_relro_required=yes
+    ;;
+  sparc*)
+    libc_commonpagesize=0x2000
+    libc_relro_required=yes
+    ;;
+esac
 
-  # Add-on fragments can set these for other machines.
-  libc_commonpagesize=${libc_commonpagesize:-no}
-  libc_relro_required=${libc_relro_required:-no}
-  case "$base_machine" in
-    i[[34567]]86 | x86_64 | powerpc* | s390*)
-      libc_commonpagesize=0x1000
-      libc_relro_required=yes
-      ;;
-    sparc*)
-      libc_commonpagesize=0x2000
-      libc_relro_required=yes
-      ;;
-    ia64*)
-      libc_commonpagesize=0x4000
-      ;;
-    alpha*)
-      libc_commonpagesize=0x10000
-      libc_relro_required=yes
-      ;;
-  esac
-
-  if test $libc_commonpagesize != no; then
-    AC_CACHE_CHECK(for -z relro option,
-                  libc_cv_z_relro, [dnl
-    libc_cv_z_relro=no
-    AC_LANG_CONFTEST([AC_LANG_SOURCE([[
+if test $libc_commonpagesize != no; then
+  AC_CACHE_CHECK(for -z relro option,
+                libc_cv_z_relro, [dnl
+  libc_cv_z_relro=no
+  AC_LANG_CONFTEST([AC_LANG_SOURCE([[
 int _start (void) { return 42; }
 extern void _exit (int);
 /* Since these pointers are const, they should go in rodata.
@@ -1589,7 +1485,7 @@ const void *const relro[] = { &_start, &_exit, 0 };
    follows it, or only very small writable data.  */
 int data[0x10000] = { 1, };
 ]])])
-    cat > conftest.awk <<\EOF
+  cat > conftest.awk <<\EOF
 BEGIN {
   result = "no"
   commonpagesize = strtonum(commonpagesize)
@@ -1605,184 +1501,130 @@ $1 == "GNU_RELRO" {
 }
 END { print result }
 EOF
-    AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
+  AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
                    -fPIC -shared -o conftest.so conftest.c
                    -nostartfiles -nostdlib
                    -Wl,-z,relro 1>&AS_MESSAGE_LOG_FD]) &&
-    AC_TRY_COMMAND([$READELF -Wl conftest.so > conftest.ph]) &&
-    AC_TRY_COMMAND([
+  AC_TRY_COMMAND([$READELF -Wl conftest.so > conftest.ph]) &&
+  AC_TRY_COMMAND([
       $AWK -v commonpagesize=$libc_commonpagesize -f conftest.awk
           conftest.ph > conftest.cps
     ]) &&
-    libc_cv_z_relro=`cat conftest.cps 2>&AS_MESSAGE_LOG_FD`
-    rm -f conftest*])
-    if { test "x$libc_relro_required" = xyes &&
-        test "x$libc_cv_z_relro" != xyes
-       }
-    then
-      AC_MSG_ERROR(linker with -z relro support required)
-    fi
-  else
-    AC_MSG_WARN([missing architecture parameter to check for working -z relro])
-  fi
-
-  AC_CACHE_CHECK(for -Bgroup option,
-                libc_cv_Bgroup, [dnl
-  cat > conftest.c <<EOF
-int _start (void) { return 42; }
-EOF
-  if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-                             -fPIC -shared -o conftest.so conftest.c
-                             -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
+  libc_cv_z_relro=`cat conftest.cps 2>&AS_MESSAGE_LOG_FD`
+  rm -f conftest*])
+  if { test "x$libc_relro_required" = xyes &&
+       test "x$libc_cv_z_relro" != xyes
+     }
   then
-    libc_cv_Bgroup=yes
-  else
-    libc_cv_Bgroup=no
+    AC_MSG_ERROR(linker with -z relro support required)
   fi
-  rm -f conftest*])
-  AC_SUBST(libc_cv_Bgroup)
-
-  AC_CACHE_CHECK(for libgcc_s suffix,
-                libc_cv_libgcc_s_suffix, [dnl
-  cat > conftest.c <<EOF
-int main (void) { return 0; }
-EOF
-changequote(,)dnl
-  libc_cv_libgcc_s_suffix=`${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
-                          -fPIC -shared -shared-libgcc -o conftest.so \
-                          conftest.c -v 2>&1 >/dev/null \
-                          | sed -n 's/^.* -lgcc_s\([^ ]*\) .*$/\1/p'`
-changequote([,])dnl
-  rm -f conftest*])
-  AC_SUBST(libc_cv_libgcc_s_suffix)
+else
+  AC_MSG_WARN([missing architecture parameter to check for working -z relro])
+fi
 
-  AC_CACHE_CHECK(for --as-needed option,
-                libc_cv_as_needed, [dnl
-  cat > conftest.c <<EOF
-int main (void) { return 0; }
+AC_CACHE_CHECK(for -Bgroup option,
+              libc_cv_Bgroup, [dnl
+cat > conftest.c <<EOF
+int _start (void) { return 42; }
 EOF
-  if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-                             -fPIC -shared -o conftest.so conftest.c
-                             -lgcc_s$libc_cv_libgcc_s_suffix -Wl,--as-needed
-                             -nostdlib 1>&AS_MESSAGE_LOG_FD])
-  then
-    libc_cv_as_needed=yes
-  else
-    libc_cv_as_needed=no
-  fi
-  rm -f conftest*])
-  AC_SUBST(libc_cv_as_needed)
+if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
+                           -fPIC -shared -o conftest.so conftest.c
+                           -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
+then
+  libc_cv_Bgroup=yes
+else
+  libc_cv_Bgroup=no
+fi
+rm -f conftest*])
+AC_SUBST(libc_cv_Bgroup)
 
-  ASFLAGS_config=
-  AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
-                libc_cv_as_noexecstack, [dnl
-  cat > conftest.c <<EOF
+ASFLAGS_config=
+AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
+              libc_cv_as_noexecstack, [dnl
+cat > conftest.c <<EOF
 void foo (void) { }
 EOF
-  if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
-                    -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
-     && grep -q .note.GNU-stack conftest.s \
-     && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
-                      -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
-  then
-    libc_cv_as_noexecstack=yes
-  else
-    libc_cv_as_noexecstack=no
-  fi
-  rm -f conftest*])
-  if test $libc_cv_as_noexecstack = yes; then
-    ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
-  fi
-  AC_SUBST(ASFLAGS_config)
+if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
+                  -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
+   && grep .note.GNU-stack conftest.s >/dev/null \
+   && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
+                     -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
+then
+  libc_cv_as_noexecstack=yes
+else
+  libc_cv_as_noexecstack=no
+fi
+rm -f conftest*])
+if test $libc_cv_as_noexecstack = yes; then
+  ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
+fi
+AC_SUBST(ASFLAGS_config)
 
-  AC_CACHE_CHECK(for -z combreloc,
-                libc_cv_z_combreloc, [dnl
-  cat > conftest.c <<EOF
+AC_CACHE_CHECK(for -z combreloc,
+              libc_cv_z_combreloc, [dnl
+cat > conftest.c <<EOF
 extern int bar (int);
 extern int mumble;
 int foo (void) { return bar (mumble); }
 EOF
-  if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
+if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
                        -fPIC -shared -o conftest.so conftest.c
                        -nostdlib -nostartfiles
                        -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
-  then
+then
 dnl The following test is a bit weak.  We must use a tool which can test
 dnl cross-platform since the gcc used can be a cross compiler.  Without
 dnl introducing new options this is not easily doable.  Instead use a tool
 dnl which always is cross-platform: readelf.  To detect whether -z combreloc
 dnl look for a section named .rel.dyn.
-    if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
-      libc_cv_z_combreloc=yes
-    else
-      libc_cv_z_combreloc=no
-    fi
+  if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
+    libc_cv_z_combreloc=yes
   else
     libc_cv_z_combreloc=no
   fi
-  rm -f conftest*])
-  if test "$libc_cv_z_combreloc" = yes; then
-    AC_DEFINE(HAVE_Z_COMBRELOC)
-  fi
-  AC_SUBST(libc_cv_z_combreloc)
+else
+  libc_cv_z_combreloc=no
+fi
+rm -f conftest*])
+if test "$libc_cv_z_combreloc" = yes; then
+  AC_DEFINE(HAVE_Z_COMBRELOC)
+fi
+AC_SUBST(libc_cv_z_combreloc)
 
-  AC_CACHE_CHECK(for -z execstack,
-                libc_cv_z_execstack, [dnl
-  cat > conftest.c <<EOF
-int _start (void) { return 42; }
-EOF
-  if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-                             -fPIC -shared -o conftest.so conftest.c
-                             -Wl,-z,execstack -nostdlib
-                             1>&AS_MESSAGE_LOG_FD])
-  then
-    libc_cv_z_execstack=yes
-  else
-    libc_cv_z_execstack=no
-  fi
-  rm -f conftest*])
-  AC_SUBST(libc_cv_z_execstack)
+LIBC_LINKER_FEATURE([-z execstack], [-Wl,-z,execstack],
+                   [libc_cv_z_execstack=yes], [libc_cv_z_execstack=no])
+AC_SUBST(libc_cv_z_execstack)
 
-  AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
-  cat > conftest.c <<EOF
-int foo;
-main () { return 0;}
-EOF
-  if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fpie
-                             -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
-  then
-    libc_cv_fpie=yes
-  else
-    libc_cv_fpie=no
-  fi
-  rm -f conftest*])
+AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
+LIBC_TRY_CC_OPTION([-fpie], [libc_cv_fpie=yes], [libc_cv_fpie=no])
+])
 
-  AC_SUBST(libc_cv_fpie)
+AC_SUBST(libc_cv_fpie)
 
-  AC_CACHE_CHECK(for --hash-style option,
-                libc_cv_hashstyle, [dnl
-  cat > conftest.c <<EOF
+AC_CACHE_CHECK(for --hash-style option,
+              libc_cv_hashstyle, [dnl
+cat > conftest.c <<EOF
 int _start (void) { return 42; }
 EOF
-  if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-                             -fPIC -shared -o conftest.so conftest.c
-                             -Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
-  then
-    libc_cv_hashstyle=yes
-  else
-    libc_cv_hashstyle=no
-  fi
-  rm -f conftest*])
-  AC_SUBST(libc_cv_hashstyle)
-
-  # The linker's default -shared behavior is good enough if it
-  # does these things that our custom linker scripts ensure that
-  # all allocated NOTE sections come first.
-  if test "$use_default_link" = default; then
-    AC_CACHE_CHECK([for sufficient default -shared layout],
-                  libc_cv_use_default_link, [dnl
-    libc_cv_use_default_link=no
-    cat > conftest.s <<\EOF
+if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
+                           -fPIC -shared -o conftest.so conftest.c
+                           -Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
+then
+  libc_cv_hashstyle=yes
+else
+  libc_cv_hashstyle=no
+fi
+rm -f conftest*])
+AC_SUBST(libc_cv_hashstyle)
+
+# The linker's default -shared behavior is good enough if it
+# does these things that our custom linker scripts ensure that
+# all allocated NOTE sections come first.
+if test "$use_default_link" = default; then
+  AC_CACHE_CHECK([for sufficient default -shared layout],
+                 libc_cv_use_default_link, [dnl
+  libc_cv_use_default_link=no
+  cat > conftest.s <<\EOF
          .section .note.a,"a",%note
          .balign 4
          .long 4,4,9
@@ -1794,7 +1636,7 @@ EOF
          .string "GNU"
          .string "bar"
 EOF
-    if AC_TRY_COMMAND([dnl
+  if AC_TRY_COMMAND([dnl
   ${CC-cc} $ASFLAGS -shared -o conftest.so conftest.s 1>&AS_MESSAGE_LOG_FD]) &&
        ac_try=`$READELF -S conftest.so | sed -n \
         ['${x;p;}
@@ -1803,30 +1645,29 @@ EOF
          b
          : a
          H']`
-    then
-      libc_seen_a=no libc_seen_b=no
-      set -- $ac_try
-      while test $# -ge 2 -a "$1" = NOTE; do
-       case "$2" in
-       .note.a) libc_seen_a=yes ;;
-       .note.b) libc_seen_b=yes ;;
-       esac
-       shift 2
-      done
-      case "$libc_seen_a$libc_seen_b" in
-      yesyes)
-       libc_cv_use_default_link=yes
-       ;;
-      *)
-       echo >&AS_MESSAGE_LOG_FD "\
+  then
+    libc_seen_a=no libc_seen_b=no
+    set -- $ac_try
+    while test $# -ge 2 -a "$1" = NOTE; do
+      case "$2" in
+      .note.a) libc_seen_a=yes ;;
+      .note.b) libc_seen_b=yes ;;
+      esac
+      shift 2
+    done
+    case "$libc_seen_a$libc_seen_b" in
+    yesyes)
+      libc_cv_use_default_link=yes
+      ;;
+    *)
+      echo >&AS_MESSAGE_LOG_FD "\
 $libc_seen_a$libc_seen_b from:
 $ac_try"
-       ;;
-      esac
-    fi
-    rm -f conftest*])
-    use_default_link=$libc_cv_use_default_link
+      ;;
+    esac
   fi
+  rm -f conftest*])
+  use_default_link=$libc_cv_use_default_link
 fi
 
 AC_CACHE_CHECK(linker output format, libc_cv_output_format, [dnl
@@ -1860,18 +1701,10 @@ fi
 AC_SUBST(fno_unit_at_a_time)
 
 AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl
-cat > conftest.c <<EOF
-int foo;
-main () { return 0;}
-EOF
-if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Werror -fstack-protector
-                           -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
-then
-  libc_cv_ssp=yes
-else
-  libc_cv_ssp=no
-fi
-rm -f conftest*])
+LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector],
+                  [libc_cv_ssp=yes],
+                  [libc_cv_ssp=no])
+])
 AC_SUBST(libc_cv_ssp)
 
 AC_CACHE_CHECK(for -fgnu89-inline, libc_cv_gnu89_inline, [dnl
@@ -1898,95 +1731,32 @@ else
 fi
 AC_SUBST(gnu89_inline)
 
-if test $elf != yes; then
-  AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
-                [AC_TRY_COMPILE(, [asm (".section .init");
-                                   asm (".section .fini");
-                                   asm ("${libc_cv_dot_text}");],
-                                libc_cv_have_initfini=yes,
-                                libc_cv_have_initfini=no)])
-  AC_SUBST(libc_cv_have_initfini)dnl
-  if test $libc_cv_have_initfini = yes; then
-    AC_DEFINE(HAVE_INITFINI)
-  fi
-fi
-
-if test $elf = yes; then
-  AC_CACHE_CHECK(whether cc puts quotes around section names,
-                libc_cv_have_section_quotes,
-                [cat > conftest.c <<EOF
-                 static const int foo
-                 __attribute__ ((section ("bar"))) = 1;
+AC_CACHE_CHECK(whether cc puts quotes around section names,
+              libc_cv_have_section_quotes,
+              [cat > conftest.c <<EOF
+               static const int foo
+               __attribute__ ((section ("bar"))) = 1;
 EOF
-                 if ${CC-cc} -S conftest.c -o conftest.s; then
-                   if grep '\.section.*"bar"' conftest.s >/dev/null; then
-                     libc_cv_have_section_quotes=yes
-                   else
-                     libc_cv_have_section_quotes=no
-                   fi
+               if ${CC-cc} -S conftest.c -o conftest.s; then
+                 if grep '\.section.*"bar"' conftest.s >/dev/null; then
+                   libc_cv_have_section_quotes=yes
                  else
-                   libc_cv_have_section_quotes=unknown
+                   libc_cv_have_section_quotes=no
                  fi
-                 rm -f conftest.{c,s}
-                ])
-  if test $libc_cv_have_section_quotes = yes; then
-    AC_DEFINE(HAVE_SECTION_QUOTES)
-  fi
-fi
-
-dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
-AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
-[cat > conftest.$ac_ext <<EOF
-dnl This sometimes fails to find confdefs.h, for some reason.
-dnl [#]line $LINENO "[$]0"
-[#]line $LINENO "configure"
-#include "confdefs.h"
-void underscore_test(void) {
-return; }
-EOF
-if AC_TRY_EVAL(ac_compile); then
-  if grep _underscore_test conftest* >/dev/null; then
-    ifelse([$1], , :, [rm -f conftest*
-    $1])
-  else
-    ifelse([$2], , , [rm -f conftest*
-    $2])
-  fi
-else
-  echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
-  cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD
-  ifelse([$2], , , [rm -f conftest*
-  $2])
-fi
-rm -f conftest*])
-
-if test $elf = yes; then
-  libc_cv_asm_underscores=no
-else
-  if test $ac_cv_prog_cc_works = yes; then
-    AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
-                  [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
-                               libc_cv_asm_underscores=yes,
-                               libc_cv_asm_underscores=no)])
-  else
-    AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
-                  [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes,
-                                           libc_cv_asm_underscores=no)])
-  fi
-fi
-if test $libc_cv_asm_underscores = no; then
-  AC_DEFINE(NO_UNDERSCORES)
-fi
-
-if test $elf = yes; then
-  libc_cv_weak_symbols=yes
+               else
+                 libc_cv_have_section_quotes=unknown
+               fi
+               rm -f conftest.{c,s}
+               ])
+if test $libc_cv_have_section_quotes = yes; then
+  AC_DEFINE(HAVE_SECTION_QUOTES)
 fi
 
 AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
               [dnl
 cat > conftest.s <<EOF
 ${libc_cv_dot_text}
-${libc_cv_asm_global_directive} foo
+.globl foo
 foo:
 .weak foo
 .weak bar; bar = foo
@@ -2004,11 +1774,11 @@ if test $libc_cv_asm_weak_directive = no; then
                 [dnl
 cat > conftest.s <<EOF
 ${libc_cv_dot_text}
-${libc_cv_asm_global_directive} foo
+.globl foo
 foo:
 .weakext bar foo
 .weakext baz
-${libc_cv_asm_global_directive} baz
+.globl baz
 baz:
 EOF
   if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
@@ -2101,28 +1871,6 @@ if test "$libc_cv_c_asmcr0_bug" != 'no'; then
 fi
 fi
 
-dnl Check whether compiler understands __builtin_expect.
-AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
-[cat > conftest.c <<EOF
-#line $LINENO "configure"
-int foo (int a)
-{
-  a = __builtin_expect (a, 10);
-  return a == 10 ? 0 : 1;
-}
-EOF
-dnl No \ in command here because it ends up inside ''.
-if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
-                           -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
-  libc_cv_gcc_builtin_expect=yes
-else
-  libc_cv_gcc_builtin_expect=no
-fi
-rm -f conftest*])
-if test "$libc_cv_gcc_builtin_expect" = no; then
-  AC_MSG_ERROR([support for __builtin_expect needed])
-fi
-
 AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
 cat > conftest.c <<\EOF
 void zero (void *x)
@@ -2192,15 +1940,23 @@ if test "$libc_cv_gcc_tls_model_attr" = no; then
   AC_MSG_ERROR([support for the tls_model attribute is required])
 fi
 
+dnl Determine how to disable generation of FMA instructions.
+AC_CACHE_CHECK([for compiler option to disable generation of FMA instructions],
+              libc_cv_cc_nofma, [dnl
+libc_cv_cc_nofma=
+for opt in -ffp-contract=off -mno-fused-madd; do
+  LIBC_TRY_CC_OPTION([$opt], [libc_cv_cc_nofma=$opt; break])
+done])
+AC_SUBST(libc_cv_cc_nofma)
+
 if test -n "$submachine"; then
   AC_CACHE_CHECK([for compiler option for CPU variant],
                 libc_cv_cc_submachine, [dnl
   libc_cv_cc_submachine=no
   for opt in "-march=$submachine" "-mcpu=$submachine"; do
-    if AC_TRY_COMMAND([${CC-cc} $opt -xc /dev/null -S -o /dev/null]); then
+    LIBC_TRY_CC_OPTION([$opt], [
       libc_cv_cc_submachine="$opt"
-      break
-    fi
+      break], [])
   done])
   if test "x$libc_cv_cc_submachine" = xno; then
     AC_MSG_ERROR([${CC-cc} does not support $submachine])
@@ -2279,6 +2035,62 @@ AC_CHECK_SIZEOF(long double, 0)
 sizeof_long_double=$ac_cv_sizeof_long_double
 AC_SUBST(sizeof_long_double)
 
+CPPUNDEFS=
+dnl Check for silly hacked compilers predefining _FORTIFY_SOURCE.
+dnl Since we are building the implementations of the fortified functions here,
+dnl having the macro defined interacts very badly.
+AC_CACHE_CHECK([for _FORTIFY_SOURCE predefine], libc_cv_predef_fortify_source,
+[AC_TRY_COMPILE([], [
+#ifdef _FORTIFY_SOURCE
+# error bogon
+#endif],
+               [libc_cv_predef_fortify_source=no],
+               [libc_cv_predef_fortify_source=yes])])
+if test $libc_cv_predef_fortify_source = yes; then
+  CPPUNDEFS="${CPPUNDEFS:+$CPPUNDEFS }-U_FORTIFY_SOURCE"
+fi
+AC_SUBST(CPPUNDEFS)
+
+dnl Check for silly hacked compilers inserting -fstack-protector.
+dnl This breaks badly for the early startup code we compile, since
+dnl the compiled code can refer to a magic machine-dependent location
+dnl for the canary value before we have sufficient setup for that to
+dnl work.  It's also questionable to build all of libc with this flag
+dnl even when you're doing that for most applications you build, since
+dnl libc's code is so heavily-used and performance-sensitive.  If we
+dnl ever really want to make that work, it should be enabled explicitly
+dnl in the libc build, not inherited from implicit compiler settings.
+AC_CACHE_CHECK([whether $CC implicitly enables -fstack-protector],
+              libc_cv_predef_stack_protector, [
+AC_TRY_COMPILE([extern void foobar (char *);],
+              [char large_array[2048]; foobar (large_array);], [
+libc_undefs=`$NM -u conftest.o |
+  LC_ALL=C $AWK '$1 == "U" { print $2 | "sort -u"; next } { exit(1) }' \
+    2>&AS_MESSAGE_LOG_FD` || {
+  AC_MSG_ERROR([confusing output from $NM -u])
+}
+echo >&AS_MESSAGE_LOG_FD "libc_undefs='$libc_undefs'"
+# On some architectures, there are architecture-specific undefined
+# symbols (resolved by the linker), so filter out unknown symbols.
+# This will fail to produce the correct result if the compiler
+# defaults to -fstack-protector but this produces an undefined symbol
+# other than __stack_chk_fail.  However, compilers like that have not
+# been encountered in practice.
+libc_undefs=`echo "$libc_undefs" | egrep '^(foobar|__stack_chk_fail)$'`
+case "$libc_undefs" in
+foobar) libc_cv_predef_stack_protector=no ;;
+'__stack_chk_fail
+foobar') libc_cv_predef_stack_protector=yes ;;
+*) AC_MSG_ERROR([unexpected symbols in test: $libc_undefs]) ;;
+esac],
+              [AC_MSG_ERROR([test compilation failed])])
+])
+libc_extra_cflags=
+if test $libc_cv_predef_stack_protector = yes; then
+  libc_extra_cflags=-fno-stack-protector
+fi
+AC_SUBST(libc_extra_cflags)
+
 ### End of automated tests.
 ### Now run sysdeps configure fragments.
 
@@ -2286,6 +2098,7 @@ AC_SUBST(sizeof_long_double)
 use_ldconfig=no
 ldd_rewrite_script=no
 libc_cv_sysconfdir=$sysconfdir
+libc_cv_localstatedir=$localstatedir
 libc_cv_gcc_unwind_find_fde=no
 libc_cv_idn=no
 
@@ -2307,6 +2120,22 @@ if test x$libc_cv_gcc_unwind_find_fde = xyes; then
 fi
 AC_SUBST(libc_cv_gcc_unwind_find_fde)
 
+# A sysdeps configure fragment can reset this if IFUNC is not actually
+# usable even though the assembler knows how to generate the symbol type.
+if test x"$libc_cv_ld_gnu_indirect_function" = xyes; then
+  AC_DEFINE(HAVE_IFUNC)
+fi
+
+# This is far from the AC_ARG_ENABLE that sets it so that a sysdeps
+# configure fragment can override the value to prevent this AC_DEFINE.
+AC_SUBST(use_nscd)
+if test "x$use_nscd" != xno; then
+  AC_DEFINE([USE_NSCD])
+fi
+if test "x$build_nscd" = xdefault; then
+  build_nscd=$use_nscd
+fi
+
 # Test for old glibc 2.0.x headers so that they can be removed properly
 # Search only in includedir.
 AC_MSG_CHECKING(for old glibc 2.0.x headers)
@@ -2324,34 +2153,21 @@ fi
 AC_SUBST(old_glibc_headers)
 
 AC_SUBST(libc_cv_slibdir)
+AC_SUBST(libc_cv_rtlddir)
 AC_SUBST(libc_cv_localedir)
 AC_SUBST(libc_cv_sysconfdir)
+AC_SUBST(libc_cv_localstatedir)
 AC_SUBST(libc_cv_rootsbindir)
 AC_SUBST(libc_cv_forced_unwind)
 
-dnl sysdeps/CPU/configure.in checks set this via arch-specific asm tests
-AC_SUBST(libc_cv_cpp_asm_debuginfo)
-AC_SUBST(libc_cv_cc_sse4)
-AC_SUBST(libc_cv_cc_avx)
-AC_SUBST(libc_cv_cc_novzeroupper)
-AC_SUBST(libc_cv_as_i686)
-
+if test x$use_ldconfig = xyes; then
+  AC_DEFINE(USE_LDCONFIG)
+fi
 AC_SUBST(use_ldconfig)
 AC_SUBST(ldd_rewrite_script)
 
-AC_SUBST(elf) AC_SUBST(xcoff)
-if test $elf = yes; then
-  AC_DEFINE(HAVE_ELF)
-fi
-if test $xcoff = yes; then
-  AC_DEFINE(HAVE_XCOFF)
-fi
-
 AC_SUBST(static)
 AC_SUBST(shared)
-if test $shared = default; then
-  shared=$elf
-fi
 
 AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default,
 [libc_cv_pic_default=yes
@@ -2367,28 +2183,19 @@ rm -f conftest.*])
 AC_SUBST(libc_cv_pic_default)
 
 AC_SUBST(profile)
-AC_SUBST(omitfp)
-AC_SUBST(bounded)
 AC_SUBST(static_nss)
-AC_SUBST(nopic_initfini)
 
 AC_SUBST(DEFINES)
 
 dnl See sysdeps/mach/configure.in for this variable.
 AC_SUBST(mach_interface_list)
 
-if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
-  config_makefile=
-else
-  config_makefile=Makefile
-fi
-
 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
 AC_SUBST(VERSION)
 AC_SUBST(RELEASE)
 
-AC_CONFIG_FILES([config.make ${config_makefile}])
+AC_CONFIG_FILES([config.make Makefile])
 AC_CONFIG_COMMANDS([default],[[
 case $CONFIG_FILES in *config.make*)
 echo "$config_vars" >> config.make;;