Fix compile warning in htonll.c
[kopensolaris-gnu/glibc.git] / configure.in
index a990314..8de370b 100644 (file)
@@ -13,18 +13,6 @@ fi
 # This will get text that should go into config.make.
 config_vars=
 
 # This will get text that should go into config.make.
 config_vars=
 
-# Check for a --with-gmp argument and set gmp-srcdir in config.make.
-AC_ARG_WITH([gmp],
-            AC_HELP_STRING([--with-gmp=DIRECTORY],
-                           [find GMP source code in DIRECTORY (not needed)]),
-           [
-case "$with_gmp" in
-yes) AC_MSG_ERROR([--with-gmp requires an argument; use --with-gmp=DIRECTORY]) ;;
-''|no) ;;
-*) config_vars="$config_vars
-gmp-srcdir = $withval" ;;
-esac
-])
 # Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
 AC_ARG_WITH([gd],
             AC_HELP_STRING([--with-gd=DIR],
 # Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
 AC_ARG_WITH([gd],
             AC_HELP_STRING([--with-gd=DIR],
@@ -81,6 +69,11 @@ AC_ARG_WITH([elf],
                            [if using the ELF object format]),
            [elf=$withval],
            [elf=no])
                            [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]),
 AC_ARG_WITH([xcoff],
             AC_HELP_STRING([--with-xcoff],
                            [if using the XCOFF object format]),
@@ -113,6 +106,14 @@ AC_ARG_ENABLE([sanity-checks],
              [enable_sanity=$enableval],
              [enable_sanity=yes])
 
              [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 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
@@ -130,9 +131,9 @@ AC_ARG_ENABLE([shared],
              [shared=default])
 AC_ARG_ENABLE([profile],
               AC_HELP_STRING([--enable-profile],
              [shared=default])
 AC_ARG_ENABLE([profile],
               AC_HELP_STRING([--enable-profile],
-                             [build profiled library @<:@default=yes@:>@]),
+                             [build profiled library @<:@default=no@:>@]),
              [profile=$enableval],
              [profile=$enableval],
-             [profile=yes])
+             [profile=no])
 AC_ARG_ENABLE([omitfp],
               AC_HELP_STRING([--enable-omitfp],
                              [build undebuggable optimized library @<:@default=no@:>@]),
 AC_ARG_ENABLE([omitfp],
               AC_HELP_STRING([--enable-omitfp],
                              [build undebuggable optimized library @<:@default=no@:>@]),
@@ -161,24 +162,28 @@ else
 fi
 AC_SUBST(oldest_abi)
 
 fi
 AC_SUBST(oldest_abi)
 
+AC_ARG_ENABLE([stackguard-randomization],
+             AC_HELP_STRING([--enable-stackguard-randomization],
+                            [initialize __stack_chk_guard canary with a random number at program start]),
+             [enable_stackguard_randomize=$enableval],
+             [enable_stackguard_randomize=no])
+if test "$enable_stackguard_randomize" = yes; then
+  AC_DEFINE(ENABLE_STACKGUARD_RANDOMIZE)
+fi
+
 dnl Generic infrastructure for drop-in additions to libc.
 AC_ARG_ENABLE([add-ons],
               AC_HELP_STRING([--enable-add-ons@<:@=DIRS...@:>@],
 dnl Generic infrastructure for drop-in additions to libc.
 AC_ARG_ENABLE([add-ons],
               AC_HELP_STRING([--enable-add-ons@<:@=DIRS...@:>@],
-                             [configure and build add-ons in DIR1,DIR2,...  search for add-ons if no parameter given]),
-  [case "$enableval" in
-    yes) add_ons=`cd $srcdir && echo */configure | sed -e 's!/configure!!g'`
-        test "$add_ons" = "*" && add_ons= ;;
-    *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;;
-   esac],
-  [add_ons=])
+                             [configure and build add-ons in DIR1,DIR2,...
+                              search for add-ons if no parameter given]),
+                            , [enable_add_ons=yes])
 
 dnl Let the user avoid using TLS.  Don't know why but...
 
 dnl Let the user avoid using TLS.  Don't know why but...
-dnl XXX For now we disable support by default.
 AC_ARG_WITH([tls],
             AC_HELP_STRING([--with-tls],
                            [enable support for TLS]),
            [usetls=$withval],
 AC_ARG_WITH([tls],
             AC_HELP_STRING([--with-tls],
                            [enable support for TLS]),
            [usetls=$withval],
-           [usetls=no])
+           [usetls=yes])
 
 AC_ARG_WITH([__thread],
             AC_HELP_STRING([--without-__thread],
 
 AC_ARG_WITH([__thread],
             AC_HELP_STRING([--without-__thread],
@@ -195,37 +200,12 @@ if test "x$hidden" = xno; then
   AC_DEFINE(NO_HIDDEN)
 fi
 
   AC_DEFINE(NO_HIDDEN)
 fi
 
-AC_CONFIG_SUBDIRS([ ])dnl Bonehead new Autoconf whines if we do it cleanly.
-add_ons_pfx=
-if test x"$add_ons" != x; then
-  for f in $add_ons; do
-    # Some sanity checks
-    if test "$f" = "crypt"; then
-      AC_MSG_ERROR([
-*** It seems that you're using an old \`crypt' add-on.  crypt is now
-*** part of glibc and using the old add-on will not work with this
-*** release.  Start again with fresh sources and without the old
-*** \`crypt' add-on.])
-    fi
-    if test "$f" = "localedata"; then
-      AC_MSG_ERROR([
-*** It seems that you're using an old \`localedata' add-on.  localedata
-*** is now part of glibc and using the old add-on will not work with
-*** this release.  Start again with fresh sources and without the old
-*** \`localedata' add-on.])
-    fi
-    # Test whether such a subdir really exists.
-    if test -d $srcdir/$f; then
-      add_ons_pfx="$add_ons_pfx $f/"
-      dnl This variable is what AC_CONFIG_SUBDIRS is supposed to set,
-      dnl but the new Autoconf maintainers don't care about compatibility
-      dnl so we cannot use it normally any more without complaints.
-      subdirs="$subdirs $f"
-    else
-      AC_MSG_ERROR(add-on directory \"$f\" does not exist)
-    fi
-  done
-fi
+AC_ARG_ENABLE([bind-now],
+             AC_HELP_STRING([--enable-bind-now],
+                            [disable lazy relocations in DSOs]),
+             [bindnow=$enableval],
+             [bindnow=no])
+AC_SUBST(bindnow)
 
 dnl On some platforms we cannot use dynamic loading.  We must provide
 dnl static NSS modules.
 
 dnl On some platforms we cannot use dynamic loading.  We must provide
 dnl static NSS modules.
@@ -300,15 +280,10 @@ config_os="`echo $config_os | sed 's/^unknown-//'`"
 
 # Some configurations imply other options.
 case "$host_os" in
 
 # Some configurations imply other options.
 case "$host_os" in
-gnu* | linux* | bsd4.4* | netbsd* | freebsd*)
-  # These systems always use GNU tools.
-  gnu_ld=yes gnu_as=yes ;;
-esac
-case "$host_os" in
 # i586-linuxaout is mangled into i586-pc-linux-gnuaout
 linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
   ;;
 # i586-linuxaout is mangled into i586-pc-linux-gnuaout
 linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
   ;;
-gnu* | linux* | freebsd* | netbsd* | sysv4* | solaris2* | irix6*)
+gnu* | linux* | freebsd* | netbsd* | sysv4* | solaris2* | irix6* | kopensolaris*-gnu* )
   # These systems (almost) always use the ELF format.
   elf=yes
   ;;
   # These systems (almost) always use the ELF format.
   elf=yes
   ;;
@@ -319,6 +294,9 @@ aix*)
   ;;
 esac
 
   ;;
 esac
 
+# 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
+# ever change the config_* variables, however.
 machine=$config_machine
 vendor=$config_vendor
 os=$config_os
 machine=$config_machine
 vendor=$config_vendor
 os=$config_os
@@ -336,6 +314,145 @@ case "$machine-$host_os" in
     ;;
 esac
 
     ;;
 esac
 
+submachine=
+AC_ARG_WITH([cpu],
+           AS_HELP_STRING([--with-cpu=CPU], [select code for CPU variant]),
+           [dnl
+  case "$withval" in
+  yes|'') AC_MSG_ERROR([--with-cpu requires an argument]) ;;
+  no) ;;
+  *) submachine="$withval" ;;
+  esac
+])
+
+
+# An add-on can set this when it wants to disable the sanity check below.
+libc_config_ok=no
+
+dnl Having this here, though empty, makes sure that if add-ons' fragments
+dnl do AC_CONFIG_SUBDIRS([some-dir]), which just sets $subdirs, then
+dnl our AC_OUTPUT will actually use it.
+AC_CONFIG_SUBDIRS()
+
+case "$enable_add_ons" in
+''|no) add_ons= ;;
+yes|'*')
+ add_ons=`cd $srcdir && ls -d 2> /dev/null */configure */sysdeps |
+         sed 's@/[[^/]]*$@@' | sort | uniq`
+        add_ons_automatic=yes
+        ;;
+*) add_ons=`echo "$enable_add_ons" | sed 's/,/ /g'`
+       add_ons_automatic=no ;;
+esac
+
+configured_add_ons=
+add_ons_sfx=
+add_ons_pfx=
+if test x"$add_ons" != x; then
+  for f in $add_ons; do
+    # Some sanity checks
+    case "$f" in
+    crypt)
+      AC_MSG_ERROR([
+*** It seems that you're using an old \`crypt' add-on.  crypt is now
+*** part of glibc and using the old add-on will not work with this
+*** release.  Start again with fresh sources and without the old
+*** \`crypt' add-on.])
+    ;;
+    localedata)
+      AC_MSG_ERROR([
+*** It seems that you're using an old \`localedata' add-on.  localedata
+*** is now part of glibc and using the old add-on will not work with
+*** this release.  Start again with fresh sources and without the old
+*** \`localedata' add-on.])
+    ;;
+    esac
+  done
+
+  # Now source each add-on's configure fragment.
+  # The fragments can use $srcdir/$libc_add_on to find themselves,
+  # and test $add_ons_automatic to see if they were explicitly requested.
+  # A fragment can clear (or even change) $libc_add_on to affect
+  # whether it goes into the list to be actually used in the build.
+  use_add_ons=
+  for libc_add_on in $add_ons; do
+    # Test whether such a directory really exists.
+    # It can be absolute, or relative to $srcdir, or relative to the build dir.
+    case "$libc_add_on" in
+    /*)
+      libc_add_on_srcdir=$libc_add_on
+      ;;
+    *)
+      test -d "$srcdir/$libc_add_on" || {
+        if test -d "$libc_add_on"; then
+         libc_add_on="`pwd`/$libc_add_on"
+       else
+         AC_MSG_ERROR(add-on directory \"$libc_add_on\" does not exist)
+       fi
+      }
+      libc_add_on_srcdir=$srcdir/$libc_add_on
+      ;;
+    esac
+
+    libc_add_on_frag=$libc_add_on_srcdir/configure
+    libc_add_on_canonical=
+    if test -r "$libc_add_on_frag"; then
+      AC_MSG_NOTICE(running configure fragment for add-on $libc_add_on)
+      libc_add_on_canonical=unknown
+      libc_add_on_subdirs=
+      . "$libc_add_on_frag"
+      test -z "$libc_add_on" || {
+        configured_add_ons="$configured_add_ons $libc_add_on"
+       if test "x$libc_add_on_canonical" = xunknown; then
+         AC_MSG_ERROR(fragment must set \$libc_add_on_canonical)
+       fi
+       for d in $libc_add_on_subdirs; do
+         case "$libc_add_on" in
+         /*) subdir_srcdir="$libc_add_on" ;;
+         *) subdir_srcdir="\$(..)$libc_add_on" ;;
+         esac
+         case "$d" in
+         .)
+           d="${libc_add_on_canonical:-$libc_add_on}"
+           ;;
+         /*)
+           subdir_srcdir="$d"
+           ;;
+         *)
+           subdir_srcdir="$subdir_srcdir/$d"
+           ;;
+         esac
+         d=`echo "$d" | sed 's@/*$@@;s@^.*/@@'`
+         add_on_subdirs="$add_on_subdirs $d"
+         test "$subdir_srcdir" = "\$(..)$d" || config_vars="$config_vars
+$d-srcdir = $subdir_srcdir"
+       done
+      }
+    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
+      use_add_ons="$use_add_ons $libc_add_on"
+      add_ons_pfx="$add_ons_pfx $libc_add_on/"
+      test -z "$libc_add_on_canonical" ||
+      add_ons_sfx="$add_ons_sfx /$libc_add_on_canonical"
+    fi
+  done
+  # Use echo to strip excess whitespace.
+  add_ons="`echo $use_add_ons`"
+fi
+AC_SUBST(add_ons)
+AC_SUBST(add_on_subdirs)
+
+
 ###
 ### I put this here to prevent those annoying emails from people who cannot
 ### read and try to compile glibc on unsupported platforms.  --drepper
 ###
 ### I put this here to prevent those annoying emails from people who cannot
 ### read and try to compile glibc on unsupported platforms.  --drepper
@@ -344,9 +461,9 @@ esac
 ### one can skip this test to make the configuration not fail for unsupported
 ### platforms.
 ###
 ### one can skip this test to make the configuration not fail for unsupported
 ### platforms.
 ###
-if test -z "$enable_hacker_mode"; then
+if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then
   case "$machine-$host_os" in
   case "$machine-$host_os" in
-  *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*)
+  *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.* | kopensolaris*-gnu* )
     ;;
   *)
     echo "*** The GNU C library is currently not available for this platform."
     ;;
   *)
     echo "*** The GNU C library is currently not available for this platform."
@@ -363,23 +480,17 @@ fi
 dnl We need to use [ and ] for other purposes for a while now.
 changequote(,)dnl
 # Expand the configuration machine name into a subdirectory by architecture
 dnl We need to use [ and ] for other purposes for a while now.
 changequote(,)dnl
 # Expand the configuration machine name into a subdirectory by architecture
-# type and particular chip.
-case "$machine" in
+# 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 ;;
 alpha*)                base_machine=alpha machine=alpha/$machine ;;
 a29k | am29000)        base_machine=a29k machine=a29k ;;
 alpha*)                base_machine=alpha machine=alpha/$machine ;;
-arm*)          base_machine=arm machine=arm/arm32/$machine ;;
 c3[012])       base_machine=cx0 machine=cx0/c30 ;;
 c4[04])                base_machine=cx0 machine=cx0/c40 ;;
 c3[012])       base_machine=cx0 machine=cx0/c30 ;;
 c4[04])                base_machine=cx0 machine=cx0/c40 ;;
-hppa*64*)      base_machine=hppa machine=hppa/hppa64 ;;
-hppa*)         base_machine=hppa machine=hppa/hppa1.1 ;;
-i[3456]86)     base_machine=i386 machine=i386/$machine ;;
+i[34567]86)    base_machine=i386 machine=i386/$machine ;;
 ia64)          base_machine=ia64 machine=ia64 ;;
 ia64)          base_machine=ia64 machine=ia64 ;;
-m680?0)                base_machine=m68k machine=m68k/$machine ;;
-m68k)          base_machine=m68k machine=m68k/m68020 ;;
 m88???)                base_machine=m88k machine=m88k/$machine ;;
 m88k)          base_machine=m88k machine=m88k/m88100 ;;
 m88???)                base_machine=m88k machine=m88k/$machine ;;
 m88k)          base_machine=m88k machine=m88k/m88100 ;;
-mips64*)       base_machine=mips64 machine=mips/mips64/$machine ;;
-mips*)         base_machine=mips machine=mips/$machine ;;
 powerpc)       base_machine=powerpc machine=powerpc/powerpc32 ;;
 powerpc64)     base_machine=powerpc machine=powerpc/powerpc64 ;;
 s390)           base_machine=s390 machine=s390/s390-32 ;;
 powerpc)       base_machine=powerpc machine=powerpc/powerpc32 ;;
 powerpc64)     base_machine=powerpc machine=powerpc/powerpc64 ;;
 s390)           base_machine=s390 machine=s390/s390-32 ;;
@@ -393,12 +504,19 @@ sparcv8 | supersparc | hypersparc)
 sparcv8plus | sparcv8plusa | sparcv9)
                base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
 sparcv8plusb | sparcv9b)
 sparcv8plus | sparcv8plusa | sparcv9)
                base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
 sparcv8plusb | sparcv9b)
-               base_machine=sparc machine=sparc/sparc32/sparcv9b ;;
-sparc64 | ultrasparc)
+               base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9b ;;
+sparcv9v)
+               base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9v ;;
+sparcv9v2)
+               base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9v2 ;;
+sparc64)
                base_machine=sparc machine=sparc/sparc64 ;;
                base_machine=sparc machine=sparc/sparc64 ;;
-sparc64b | ultrasparc3)
+sparc64b)
                base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
                base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
-thumb*)                base_machine=thumb machine=arm/thumb/$machine ;;
+sparc64v)
+               base_machine=sparc machine=sparc/sparc64/sparcv9v ;;
+sparc64v2)
+               base_machine=sparc machine=sparc/sparc64/sparcv9v2 ;;
 *)             base_machine=$machine ;;
 esac
 changequote([,])dnl
 *)             base_machine=$machine ;;
 esac
 changequote([,])dnl
@@ -434,6 +552,8 @@ hpux*)
   base_os=unix/sysv/hpux/$os ;;
 aix4.3*)
   base_os=unix/sysv/aix/aix4.3 ;;
   base_os=unix/sysv/hpux/$os ;;
 aix4.3*)
   base_os=unix/sysv/aix/aix4.3 ;;
+kopensolaris*-gnu*)
+  base_os=unix/sysv/solaris2/kopensolaris-gnu ;;
 none)
   base_os=standalone ;;
 *)
 none)
   base_os=standalone ;;
 *)
@@ -468,7 +588,7 @@ done
 
 # For sparc/sparc32, try sparc/sparc32 and then sparc.
 mach=
 
 # For sparc/sparc32, try sparc/sparc32 and then sparc.
 mach=
-tail=$machine
+tail=$machine${submachine:+/$submachine}
 while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
   set $m
   # Prepend the machine's FPU directory unless --without-fp.
 while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
   set $m
   # Prepend the machine's FPU directory unless --without-fp.
@@ -485,33 +605,47 @@ dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
 changequote([,])dnl
 
 # Find what sysdep directories exist.
 changequote([,])dnl
 
 # Find what sysdep directories exist.
+sysnames_add_ons=
 sysnames=
 sysnames=
-IFS="${IFS=    }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-for d in $add_ons_pfx ''; do
-  for b in $base ''; do
-    for m0 in $mach ''; do
-      for v in /$vendor ''; do
-       test "$v" = / && continue
-       for o in /$ostry ''; do
-         test "$o" = / && continue
-         for m in $mach ''; do
-           if test "$m0$b$v$o$m"; then
-             try="${d}sysdeps$m0$b$v$o$m"
-             test -n "$enable_debug_configure" &&
-             echo "$0 [DEBUG]: try $try" >&2
-             if test -d $srcdir/$try; then
-               sysnames="$sysnames $try"
-               { test -n "$o" || test -n "$b"; } && os_used=t
-               { test -n "$m" || test -n "$m0"; } && machine_used=t
+for b in $base ''; do
+  for m0 in $mach ''; do
+    for v in /$vendor ''; do
+      test "$v" = / && continue
+      for o in /$ostry ''; do
+       test "$o" = / && continue
+       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_srcdir="${srcdir}/"
+               case "$d" in
+               /*) try_srcdir= ;;
+               esac
+               try="${d}sysdeps$m0$m0sub$b$v$o$m$msub$a"
+               test -n "$enable_debug_configure" &&
+               echo "$0 [DEBUG]: try $try" >&2
+               if test -d "$try_srcdir$try"; then
+                 sysnames="$sysnames $try"
+                 { test -n "$o" || test -n "$b"; } && os_used=t
+                 { test -n "$m" || test -n "$m0"; } && machine_used=t
+                 case x${m0:-$m} in
+                 x*/$submachine) submachine_used=t ;;
+                 esac
+                 if test -n "$d"; then
+                   case "$sysnames_add_ons" in
+                   *" $d "*) ;;
+                   *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
+                   esac
+                 fi
+               fi
              fi
              fi
-           fi
+           done
          done
        done
       done
     done
   done
 done
          done
        done
       done
     done
   done
 done
-IFS="$ac_save_ifs"
 
 if test -z "$os_used" && test "$os" != none; then
   AC_MSG_ERROR(Operating system $os is not supported.)
 
 if test -z "$os_used" && test "$os" != none; then
   AC_MSG_ERROR(Operating system $os is not supported.)
@@ -519,6 +653,10 @@ fi
 if test -z "$machine_used" && test "$machine" != none; then
   AC_MSG_ERROR(The $machine is not supported.)
 fi
 if test -z "$machine_used" && test "$machine" != none; then
   AC_MSG_ERROR(The $machine is not supported.)
 fi
+if test -z "$submachine_used" && test -n "$submachine"; then
+  AC_MSG_ERROR(The $submachine subspecies of $host_cpu is not supported.)
+fi
+AC_SUBST(submachine)
 
 # We have now validated the configuration.
 
 
 # We have now validated the configuration.
 
@@ -588,6 +726,10 @@ while test $# -gt 0; do
        then
          implied="$implied $try"
          found=yes
        then
          implied="$implied $try"
          found=yes
+         case "$sysnames_add_ons" in
+         *" $d "*) ;;
+         *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
+         esac
        fi
       done
       if test $found = no; then
        fi
       done
       if test $found = no; then
@@ -627,6 +769,61 @@ AC_SUBST(sysnames)
 # The other names were emitted during the scan.
 AC_MSG_RESULT($default_sysnames)
 
 # The other names were emitted during the scan.
 AC_MSG_RESULT($default_sysnames)
 
+# Collect the list of add-ons that supply partial sysdeps trees.
+sysdeps_add_ons=
+for add_on in $add_ons; do
+  case "$add_on" in
+  /*) xsrcdir= ;;
+  *) xsrcdir="$srcdir/" ;;
+  esac
+
+  test -d "$xsrcdir$add_on/sysdeps" || {
+    case "$configured_add_ons " in
+    *" $add_on "*) ;;
+    *|'')
+      AC_MSG_ERROR(add-on $add_on has no configure fragment or sysdeps tree)
+      ;;
+    esac
+    continue
+  }
+
+  sysdeps_add_ons="$sysdeps_add_ons $add_on"
+  case "$sysnames_add_ons" in
+  *" $add_on/ "*) ;;
+  *|'')
+    AC_MSG_WARN(add-on $add_on contributed no sysdeps directories)
+    continue ;;
+  esac
+
+  found=no
+  for d in $sysnames; do
+    case "$d" in
+    $add_on/sysdeps/*) ;;
+    *) continue ;;
+    esac
+    (cd "$xsrcdir$d" && for f in *[[!~]]; do
+       case "$f" in
+       sys|bits)
+        for ff in $f/*.h; do
+          test -d "$ff" || { test -e "$ff" && exit 88; }
+        done
+        ;;
+       *)
+         test -d "$f" || { test -e "$f" && exit 88; }
+        ;;
+       esac
+     done)
+    if test $? -eq 88; then
+      found=yes
+      break
+    fi
+  done
+  if test $found = no; then
+    AC_MSG_WARN(add-on $add_on contributed no useful sysdeps directories)
+  fi
+done
+AC_SUBST(sysdeps_add_ons)
+
 
 ### Locate tools.
 
 
 ### Locate tools.
 
@@ -637,6 +834,25 @@ if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
 fi
 AC_PROG_LN_S
 
 fi
 AC_PROG_LN_S
 
+AC_PROG_CC
+if test $host != $build; then
+  AC_CHECK_PROGS(BUILD_CC, gcc cc)
+fi
+AC_SUBST(cross_compiling)
+AC_PROG_CPP
+# We need the C++ compiler only for testing.
+AC_PROG_CXX
+LIBC_PROG_BINUTILS
+AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
+
+# Accept binutils 2.13 or newer.
+AC_CHECK_PROG_VER(AS, $AS, --version,
+                 [GNU assembler.* \([0-9]*\.[0-9.]*\)],
+                 [2.1[3-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]*], 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
 # 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
@@ -650,20 +866,12 @@ fi
 # These programs are version sensitive.
 AC_CHECK_TOOL_PREFIX
 AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
 # 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.[2-9]*],
+  [version \([egcygnustpi-]*[0-9.]*\)], [3.4* | 4.[0-9]* ],
   critic_missing="$critic_missing gcc")
 AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
   [GNU Make[^0-9]*\([0-9][0-9.]*\)],
   [3.79* | 3.[89]*], critic_missing="$critic_missing make")
 
   critic_missing="$critic_missing gcc")
 AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
   [GNU Make[^0-9]*\([0-9][0-9.]*\)],
   [3.79* | 3.[89]*], critic_missing="$critic_missing make")
 
-
-if test -n "$critic_missing"; then
-AC_MSG_ERROR([
-*** These critical programs are missing or too old:$critic_missing
-*** Check the INSTALL file for required versions.])
-fi
-
-
 AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
   [GNU gettext.* \([0-9]*\.[0-9.]*\)],
   [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
 AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
   [GNU gettext.* \([0-9]*\.[0-9.]*\)],
   [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
@@ -677,58 +885,51 @@ AC_CHECK_PROG_VER(SED, sed, --version,
   [3.0[2-9]*|3.[1-9]*|[4-9]*],
   SED=: aux_missing="$aux_missing sed")
 
   [3.0[2-9]*|3.[1-9]*|[4-9]*],
   SED=: aux_missing="$aux_missing sed")
 
-if test "x$with_cvs" != xyes; then
-  AC_CHECK_PROGS(AUTOCONF, autoconf, no)
-  case "x$AUTOCONF" in
-  xno|x|x:) AUTOCONF=no ;;
-  *)
-    AC_CACHE_CHECK(dnl
+AC_CHECK_PROGS(AUTOCONF, autoconf, no)
+case "x$AUTOCONF" in
+xno|x|x:) AUTOCONF=no ;;
+*)
+  AC_CACHE_CHECK(dnl
 whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
 whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
-    if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
-      libc_cv_autoconf_works=yes
-    else
-      libc_cv_autoconf_works=no
-    fi])
-    test $libc_cv_autoconf_works = yes || AUTOCONF=no
-    ;;
-  esac
-  test "x$AUTOCONF" != xno || aux_missing="$aux_missing autoconf"
-fi
-
-AC_PROG_CC
-if test $host != $build; then
-  AC_CHECK_PROGS(BUILD_CC, gcc cc)
+  if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
+    libc_cv_autoconf_works=yes
+  else
+    libc_cv_autoconf_works=no
+  fi])
+  test $libc_cv_autoconf_works = yes || AUTOCONF=no
+  ;;
+esac
+if test "x$with_cvs" = xyes && test "x$AUTOCONF" = xno; then
+  # If --without-cvs they probably won't change configure.in, so no complaints.
+  aux_missing="$aux_missing autoconf"
 fi
 fi
-AC_SUBST(cross_compiling)
-AC_PROG_CPP
-LIBC_PROG_BINUTILS
-AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
 
 
-# Accept binutils 2.13 or newer.
-AC_CHECK_PROG_VER(AS, $AS, --version,
-                 [GNU assembler.* \([0-9]*\.[0-9.]*\)],
-                 [2.1[3-9]*], AS=: critic_missing=t)
-AC_CHECK_PROG_VER(LD, $LD, --version,
-                 [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
-                 [2.1[3-9]*], LD=: critic_missing=t)
+test -n "$critic_missing" && AC_MSG_ERROR([
+*** These critical programs are missing or too old:$critic_missing
+*** Check the INSTALL file for required versions.])
 
 test -n "$aux_missing" && AC_MSG_WARN([
 *** These auxiliary programs are missing or incompatible versions:$aux_missing
 *** some features will be disabled.
 *** Check the INSTALL file for required versions.])
 
 
 test -n "$aux_missing" && AC_MSG_WARN([
 *** These auxiliary programs are missing or incompatible versions:$aux_missing
 *** some features will be disabled.
 *** Check the INSTALL file for required versions.])
 
-# glibcbug.in wants to know the compiler version.
-CCVERSION=`$CC -v 2>&1 | sed -n 's/gcc version //p'`
-AC_SUBST(CCVERSION)
-
 # if using special system headers, find out the compiler's sekrit
 # header directory and add that to the list.  NOTE: Only does the right
 # thing on a system that doesn't need fixincludes.  (Not presently a problem.)
 if test -n "$sysheaders"; then
   ccheaders=`$CC -print-file-name=include`
 # if using special system headers, find out the compiler's sekrit
 # header directory and add that to the list.  NOTE: Only does the right
 # thing on a system that doesn't need fixincludes.  (Not presently a problem.)
 if test -n "$sysheaders"; then
   ccheaders=`$CC -print-file-name=include`
-  SYSINCLUDES="-nostdinc -isystem $ccheaders -isystem $sysheaders"
+  SYSINCLUDES="-nostdinc -isystem $ccheaders \
+-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"
+  fi
 fi
 AC_SUBST(SYSINCLUDES)
 fi
 AC_SUBST(SYSINCLUDES)
+AC_SUBST(CXX_SYSINCLUDES)
 
 # check if ranlib is necessary
 AC_CACHE_CHECK(whether ranlib is necessary, libc_cv_ranlib_necessary, [dnl
 
 # check if ranlib is necessary
 AC_CACHE_CHECK(whether ranlib is necessary, libc_cv_ranlib_necessary, [dnl
@@ -737,7 +938,7 @@ int a;
 char b;
 void c(void) {}
 EOF
 char b;
 void c(void) {}
 EOF
-$CC $CFLAGS -c conftest.c
+$CC $CFLAGS $CPPFLAGS -c conftest.c
 $AR cr conftest.a conftest.o
 cp conftest.a conftest2.a
 $RANLIB conftest.a
 $AR cr conftest.a conftest.o
 cp conftest.a conftest2.a
 $RANLIB conftest.a
@@ -785,9 +986,9 @@ else
 fi])
 AC_SUBST(libc_cv_gcc_static_libgcc)
 
 fi])
 AC_SUBST(libc_cv_gcc_static_libgcc)
 
-AC_PATH_PROG(BASH, bash, no)
-if test "$BASH" != no &&
-   $BASH -c 'test "$BASH_VERSINFO" \
+AC_PATH_PROG(BASH_SHELL, bash, no)
+if test "$BASH_SHELL" != no &&
+   $BASH_SHELL -c 'test "$BASH_VERSINFO" \
             && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
   libc_cv_have_bash2=yes
 else
             && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
   libc_cv_have_bash2=yes
 else
@@ -796,7 +997,7 @@ fi
 AC_SUBST(libc_cv_have_bash2)
 
 dnl We need a ksh compatible shell for tzselect.
 AC_SUBST(libc_cv_have_bash2)
 
 dnl We need a ksh compatible shell for tzselect.
-if test "$BASH" = no; then
+if test "$BASH_SHELL" = no; then
   AC_PATH_PROG(KSH, ksh, no)
   if test "$KSH" = no; then
     libc_cv_have_ksh=no
   AC_PATH_PROG(KSH, ksh, no)
   if test "$KSH" = no; then
     libc_cv_have_ksh=no
@@ -804,7 +1005,7 @@ if test "$BASH" = no; then
     libc_cv_have_ksh=yes
   fi
 else
     libc_cv_have_ksh=yes
   fi
 else
-  KSH="$BASH"
+  KSH="$BASH_SHELL"
   AC_SUBST(KSH)
   libc_cv_have_ksh=yes
 fi
   AC_SUBST(KSH)
   libc_cv_have_ksh=yes
 fi
@@ -818,33 +1019,6 @@ if test "$PERL" != no &&
 fi
 AC_PATH_PROG(INSTALL_INFO, install-info, no,
             $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
 fi
 AC_PATH_PROG(INSTALL_INFO, install-info, no,
             $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
-if test "$INSTALL_INFO" != "no"; then
-AC_CACHE_CHECK(for old Debian install-info, libc_cv_old_debian_install_info,
- [mkdir conftest.d
-  # There is a hard ^_ on the next line.  I am open to better ideas.
-  (echo '\1f'
-  echo 'File: dir      Node: Top       This is the top of the INFO tree'
-  echo '* Menu:') >conftest.d/dir
-  (echo 'INFO-DIR-SECTION i-d-s works'
-  echo 'START-INFO-DIR-ENTRY'
-  echo '* Prog: (prog).   Program.'
-  echo 'END-INFO-DIR-ENTRY') >conftest.d/prog.info
-  if $INSTALL_INFO --info-dir=conftest.d conftest.d/prog.info >&AS_MESSAGE_LOG_FD 2>&1
-  then
-    if grep -s 'i-d-s works' conftest.d/dir >/dev/null
-    then libc_cv_old_debian_install_info=no
-    else libc_cv_old_debian_install_info=yes
-    fi
-  else libc_cv_old_debian_install_info=no testfailed=t
-  fi
-  rm -fr conftest.d])
-if test -n "$testfailed"
-then AC_MSG_WARN([install-info errored out, check config.log])
-fi
-OLD_DEBIAN_INSTALL_INFO=$libc_cv_old_debian_install_info
-fi
-AC_SUBST(OLD_DEBIAN_INSTALL_INFO)
-
 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
 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
@@ -889,7 +1063,7 @@ cat > conftest.S <<EOF
 #include "confdefs.h"
 /* Nothing whatsoever.  */
 EOF
 #include "confdefs.h"
 /* Nothing whatsoever.  */
 EOF
-if ${CC-cc} $CFLAGS -c conftest.S 2>/dev/null; then
+if AC_TRY_COMMAND(${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&AS_MESSAGE_LOG_FD); then
   libc_cv_need_minus_P=no
 else
   libc_cv_need_minus_P=yes
   libc_cv_need_minus_P=no
 else
   libc_cv_need_minus_P=yes
@@ -906,7 +1080,7 @@ cat > conftest.s <<EOF
 .text
 EOF
 libc_cv_dot_text=
 .text
 EOF
 libc_cv_dot_text=
-if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
+if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
   libc_cv_dot_text=.text
 fi
 rm -f conftest*])
   libc_cv_dot_text=.text
 fi
 rm -f conftest*])
@@ -925,7 +1099,7 @@ for ac_globl in .globl .global .EXPORT; do
        ${ac_globl} foo
 foo:
 EOF
        ${ac_globl} foo
 foo:
 EOF
-  if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
+  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*
     libc_cv_asm_global_directive=${ac_globl}
   fi
   rm -f conftest*
@@ -948,9 +1122,10 @@ EOF
 # (but it doesn't work), so we must do a linking check to be sure.
 cat > conftest1.c <<\EOF
 extern int glibc_conftest_frobozz;
 # (but it doesn't work), so we must do a linking check to be sure.
 cat > conftest1.c <<\EOF
 extern int glibc_conftest_frobozz;
-main () { printf ("%d\n", glibc_conftest_frobozz); }
+void _start() { glibc_conftest_frobozz = 1; }
 EOF
 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
 EOF
 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
+           -nostartfiles -nostdlib \
            -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
   libc_cv_asm_set_directive=yes
 else
            -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
   libc_cv_asm_set_directive=yes
 else
@@ -973,7 +1148,7 @@ for ac_try_prefix in '@' '%' '#'; do
 foo:
        .byte 1
 EOF
 foo:
        .byte 1
 EOF
-  if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
+  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*
     libc_cv_asm_type_prefix=${ac_try_prefix}
   fi
   rm -f conftest*
@@ -983,20 +1158,13 @@ if test "x$libc_cv_asm_type_prefix" != xno; then
   AC_DEFINE_UNQUOTED(ASM_TYPE_DIRECTIVE_PREFIX, ${libc_cv_asm_type_prefix})
 fi
 
   AC_DEFINE_UNQUOTED(ASM_TYPE_DIRECTIVE_PREFIX, ${libc_cv_asm_type_prefix})
 fi
 
-# The Aix ld uses global .symbol_names instead of symbol_names.
-# Unfortunately also used in the PPC64 ELF ABI.
-case "${os}${machine}" in
-aix4.3* | linux*powerpc/powerpc64*)
-  AC_DEFINE(HAVE_ASM_GLOBAL_DOT_NAME)
-esac
-
 AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
 [cat > conftest.s <<EOF
 ${libc_cv_dot_text}
 _sym:
 .symver _sym,sym@VERS
 EOF
 AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
 [cat > conftest.s <<EOF
 ${libc_cv_dot_text}
 _sym:
 .symver _sym,sym@VERS
 EOF
-if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
+if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
   libc_cv_asm_symver_directive=yes
 else
   libc_cv_asm_symver_directive=no
   libc_cv_asm_symver_directive=yes
 else
   libc_cv_asm_symver_directive=no
@@ -1018,10 +1186,11 @@ VERS_2 {
         global: sym;
 } VERS_1;
 EOF
         global: sym;
 } VERS_1;
 EOF
-  if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
-    if AC_TRY_COMMAND([${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
-                                       -nostartfiles -nostdlib
-                                       -Wl,--version-script,conftest.map
+  if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
+    if AC_TRY_COMMAND([${CC-cc} $CFLAGS $LDFLAGS -shared
+                               -o conftest.so conftest.o
+                               -nostartfiles -nostdlib
+                               -Wl,--version-script,conftest.map
                       1>&AS_MESSAGE_LOG_FD]);
     then
       libc_cv_ld_version_script_option=yes
                       1>&AS_MESSAGE_LOG_FD]);
     then
       libc_cv_ld_version_script_option=yes
@@ -1060,7 +1229,7 @@ if test $elf = yes; then
 .section foo_section
 .previous
 EOF
 .section foo_section
 .previous
 EOF
-  if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
+  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
     libc_cv_asm_previous_directive=yes
   else
     libc_cv_asm_previous_directive=no
@@ -1075,7 +1244,7 @@ EOF
 .pushsection foo_section
 .popsection
 EOF
 .pushsection foo_section
 .popsection
 EOF
-    if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
+    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
       libc_cv_asm_popsection_directive=yes
     else
       libc_cv_asm_popsection_directive=no
@@ -1093,15 +1262,12 @@ foo:
 .hidden bar
 bar:
 EOF
 .hidden bar
 bar:
 EOF
-  if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
+  if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
     libc_cv_asm_protected_directive=yes
   else
     libc_cv_asm_protected_directive=yes
   else
-    libc_cv_asm_protected_directive=no
+    AC_MSG_ERROR(assembler support for symbol visibility is required)
   fi
   rm -f conftest*])
   fi
   rm -f conftest*])
-  AC_SUBST(libc_cv_asm_protected_directive)
-  AC_DEFINE(HAVE_PROTECTED)
-  AC_DEFINE(HAVE_HIDDEN)
 
   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,
@@ -1111,7 +1277,7 @@ EOF
                  int bar __attribute__ ((visibility ("protected"))) = 1;
 EOF
                  libc_cv_visibility_attribute=no
                  int bar __attribute__ ((visibility ("protected"))) = 1;
 EOF
                  libc_cv_visibility_attribute=no
-                 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
+                 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
                    if grep '\.hidden.*foo' conftest.s >/dev/null; then
                      if grep '\.protected.*bar' conftest.s >/dev/null; then
                        libc_cv_visibility_attribute=yes
                    if grep '\.hidden.*foo' conftest.s >/dev/null; then
                      if grep '\.protected.*bar' conftest.s >/dev/null; then
                        libc_cv_visibility_attribute=yes
@@ -1120,8 +1286,8 @@ EOF
                  fi
                  rm -f conftest.[cs]
                 ])
                  fi
                  rm -f conftest.[cs]
                 ])
-    if test $libc_cv_visibility_attribute = yes; then
-      AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
+    if test $libc_cv_visibility_attribute != yes; then
+      AC_MSG_ERROR(compiler support for visibility attribute is required)
     fi
   fi
 
     fi
   fi
 
@@ -1134,7 +1300,7 @@ EOF
                  int bar (int x) { return x; }
 EOF
                  libc_cv_broken_visibility_attribute=yes
                  int bar (int x) { return x; }
 EOF
                  libc_cv_broken_visibility_attribute=yes
-                 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
+                 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s1>&AS_MESSAGE_LOG_FD); then
 changequote(,)dnl
                    if grep '\.hidden[  _]foo' conftest.s >/dev/null; then
 changequote([,])dnl
 changequote(,)dnl
                    if grep '\.hidden[  _]foo' conftest.s >/dev/null; then
 changequote([,])dnl
@@ -1144,7 +1310,7 @@ changequote([,])dnl
                  rm -f conftest.c conftest.s
                 ])
     if test $libc_cv_broken_visibility_attribute = yes; then
                  rm -f conftest.c conftest.s
                 ])
     if test $libc_cv_broken_visibility_attribute = yes; then
-      AC_DEFINE(HAVE_BROKEN_VISIBILITY_ATTRIBUTE)
+      AC_MSG_ERROR(working compiler support for visibility attribute is required)
     fi
   fi
 
     fi
   fi
 
@@ -1159,7 +1325,7 @@ changequote([,])dnl
                  int dfoo = 1;
 EOF
                  libc_cv_broken_alias_attribute=yes
                  int dfoo = 1;
 EOF
                  libc_cv_broken_alias_attribute=yes
-                 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
+                 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
                    if grep 'xyzzy' conftest.s >/dev/null &&
                       grep 'abccb' conftest.s >/dev/null; then
                      libc_cv_broken_alias_attribute=no
@@ -1168,15 +1334,15 @@ EOF
                  rm -f conftest.c conftest.s
                 ])
   if test $libc_cv_broken_alias_attribute = yes; then
                  rm -f conftest.c conftest.s
                 ])
   if test $libc_cv_broken_alias_attribute = yes; then
-    AC_DEFINE(HAVE_BROKEN_ALIAS_ATTRIBUTE)
+    AC_MSG_ERROR(working alias attribute support required)
   fi
 
   fi
 
-  if test $libc_cv_visibility_attribute = yes -a $gnu_ld = yes; then
+  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
     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
-                 if ${CC-cc} -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
+                 if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
                     | grep '\.sdata' >/dev/null; then
                    libc_cv_have_sdata_section=yes
                  fi
                     | grep '\.sdata' >/dev/null; then
                    libc_cv_have_sdata_section=yes
                  fi
@@ -1188,28 +1354,44 @@ EOF
   fi
 
   AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
   fi
 
   AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
-                libc_cv_initfinit_array, [dnl
+                libc_cv_initfini_array, [dnl
   cat > conftest.c <<EOF
 int _start (void) { return 0; }
 int __start (void) { return 0; }
 int foo (void) { return 1; }
 int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
 EOF
   cat > conftest.c <<EOF
 int _start (void) { return 0; }
 int __start (void) { return 0; }
 int foo (void) { return 1; }
 int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
 EOF
-  if AC_TRY_COMMAND([${CC-cc} -o conftest conftest.c
+  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
                     -static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD])
   then
     if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
-      libc_cv_initfinit_array=yes
+      libc_cv_initfini_array=yes
     else
     else
-      libc_cv_initfinit_array=no
+      libc_cv_initfini_array=no
     fi
   else
     fi
   else
-    libc_cv_initfinit_array=no
+    libc_cv_initfini_array=no
   fi
   rm -f conftest*])
   fi
   rm -f conftest*])
-  AC_SUBST(libc_cv_initfinit_array)
-  if test $libc_cv_initfinit_array = yes; then
-    AC_DEFINE(HAVE_INITFINI_ARRAY)
+  if test $libc_cv_initfini_array != yes; then
+    AC_MSG_ERROR([Need linker with .init_array/.fini_array support.])
+  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,
   fi
 
   AC_CACHE_CHECK(for -z nodelete option,
@@ -1217,55 +1399,78 @@ EOF
   cat > conftest.c <<EOF
 int _start (void) { return 42; }
 EOF
   cat > conftest.c <<EOF
 int _start (void) { return 42; }
 EOF
-  if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
+  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
                     -nostartfiles -nostdlib
                     -Wl,--enable-new-dtags,-z,nodelete 1>&AS_MESSAGE_LOG_FD])
   then
     libc_cv_z_nodelete=yes
   else
-    libc_cv_z_nodelete=no
+    AC_MSG_ERROR(linker with -z nodelete support required)
   fi
   rm -f conftest*])
   fi
   rm -f conftest*])
-  AC_SUBST(libc_cv_z_nodelete)
 
   AC_CACHE_CHECK(for -z nodlopen option,
                 libc_cv_z_nodlopen, [dnl
   cat > conftest.c <<EOF
 int _start (void) { return 42; }
 EOF
 
   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} -shared -o conftest.so conftest.c
+  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
                        -nostartfiles -nostdlib
                        -Wl,--enable-new-dtags,-z,nodlopen 1>&AS_MESSAGE_LOG_FD])
   then
     libc_cv_z_nodlopen=yes
   else
-    libc_cv_z_nodlopen=no
+    AC_MSG_ERROR(linker with -z nodlopen support required)
   fi
   rm -f conftest*])
   fi
   rm -f conftest*])
-  AC_SUBST(libc_cv_z_nodlopen)
 
   AC_CACHE_CHECK(for -z initfirst option,
                 libc_cv_z_initfirst, [dnl
   cat > conftest.c <<EOF
 int _start (void) { return 42; }
 EOF
 
   AC_CACHE_CHECK(for -z initfirst option,
                 libc_cv_z_initfirst, [dnl
   cat > conftest.c <<EOF
 int _start (void) { return 42; }
 EOF
-  if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
+  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
   else
                        -nostartfiles -nostdlib
                        -Wl,--enable-new-dtags,-z,initfirst 1>&AS_MESSAGE_LOG_FD])
   then
     libc_cv_z_initfirst=yes
   else
-    libc_cv_z_initfirst=no
+    AC_MSG_ERROR(linker with -z initfirst support required)
   fi
   rm -f conftest*])
   fi
   rm -f conftest*])
-  AC_SUBST(libc_cv_z_initfirst)
+
+  case "$base_machine" in
+changequote(,)dnl
+    i[34567]86 | x86_64 | powerpc* | s390* | sparc* | alpha*)
+changequote([,])dnl
+      AC_CACHE_CHECK(for -z relro option,
+                    libc_cv_z_relro, [dnl
+  libc_cv_z_relro=no
+  if AC_TRY_COMMAND([${CC-cc} -v --help 2>&1|grep "z relro" 1>&AS_MESSAGE_LOG_FD])
+  then
+    if AC_TRY_COMMAND([${CC-cc} -Wl,--verbose 2>&1|grep DATA_SEGMENT_RELRO_END 1>&AS_MESSAGE_LOG_FD])
+    then
+      libc_cv_z_relro=yes
+    fi
+  fi])
+      if test "$libc_cv_z_relro" = no; then
+        AC_MSG_ERROR(linker with -z relro support required)
+      fi
+      ;;
+    *) ;;
+   esac
 
   AC_CACHE_CHECK(for -Bgroup option,
                 libc_cv_Bgroup, [dnl
   cat > conftest.c <<EOF
 int _start (void) { return 42; }
 EOF
 
   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} -shared -o conftest.so conftest.c -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
+  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
   then
     libc_cv_Bgroup=yes
   else
@@ -1274,6 +1479,59 @@ EOF
   rm -f conftest*])
   AC_SUBST(libc_cv_Bgroup)
 
   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)
+
+  AC_CACHE_CHECK(for --as-needed option,
+                libc_cv_as_needed, [dnl
+  cat > conftest.c <<EOF
+int main (void) { return 0; }
+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)
+
+  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} $CFLAGS $CPPFLAGS -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
@@ -1281,7 +1539,8 @@ extern int bar (int);
 extern int mumble;
 int foo (void) { return bar (mumble); }
 EOF
 extern int mumble;
 int foo (void) { return bar (mumble); }
 EOF
-  if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
+  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
                        -nostdlib -nostartfiles
                        -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
   then
@@ -1302,8 +1561,115 @@ dnl look for a section named .rel.dyn.
   if test "$libc_cv_z_combreloc" = yes; then
     AC_DEFINE(HAVE_Z_COMBRELOC)
   fi
   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)
+
+  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_SUBST(libc_cv_fpie)
+
+  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)
+fi
+
+AC_CACHE_CHECK(for -fno-toplevel-reorder, libc_cv_fno_toplevel_reorder, [dnl
+cat > conftest.c <<EOF
+int foo;
+EOF
+if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-toplevel-reorder
+                           conftest.c 1>&AS_MESSAGE_LOG_FD])
+then
+  libc_cv_fno_toplevel_reorder=yes
+else
+  libc_cv_fno_toplevel_reorder=no
 fi
 fi
-AC_SUBST(libc_cv_z_combreloc)
+rm -f conftest*])
+if test $libc_cv_fno_toplevel_reorder = yes; then
+  fno_unit_at_a_time=-fno-toplevel-reorder
+else
+  fno_unit_at_a_time=-fno-unit-at-a-time
+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 -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*])
+AC_SUBST(libc_cv_ssp)
+
+AC_CACHE_CHECK(for -fgnu89-inline, libc_cv_gnu89_inline, [dnl
+cat > conftest.c <<EOF
+int foo;
+#ifdef __GNUC_GNU_INLINE__
+main () { return 0;}
+#else
+#error
+#endif
+EOF
+if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -std=gnu99 -fgnu89-inline
+                           -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD])
+then
+  libc_cv_gnu89_inline=yes
+else
+  libc_cv_gnu89_inline=no
+fi
+rm -f conftest*])
+if test $libc_cv_gnu89_inline = yes; then
+  libc_cv_gnu89_inline=-fgnu89-inline
+else
+  libc_cv_gnu89_inline=
+fi
+AC_SUBST(libc_cv_gnu89_inline)
 
 if test $elf != yes; then
   AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
 
 if test $elf != yes; then
   AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
@@ -1318,7 +1684,7 @@ if test $elf != yes; then
   fi
 fi
 
   fi
 fi
 
-if test $elf = yes -a $gnu_ld = yes; then
+if test $elf = yes; then
   AC_CACHE_CHECK(whether cc puts quotes around section names,
                 libc_cv_have_section_quotes,
                 [cat > conftest.c <<EOF
   AC_CACHE_CHECK(whether cc puts quotes around section names,
                 libc_cv_have_section_quotes,
                 [cat > conftest.c <<EOF
@@ -1345,8 +1711,8 @@ 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.
 AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
 [cat > conftest.$ac_ext <<EOF
 dnl This sometimes fails to find confdefs.h, for some reason.
-dnl [#]line __oline__ "[$]0"
-[#]line __oline__ "configure"
+dnl [#]line $LINENO "[$]0"
+[#]line $LINENO "configure"
 #include "confdefs.h"
 void underscore_test(void) {
 return; }
 #include "confdefs.h"
 void underscore_test(void) {
 return; }
@@ -1398,7 +1764,7 @@ foo:
 .weak foo
 .weak bar; bar = foo
 EOF
 .weak foo
 .weak bar; bar = foo
 EOF
-if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
+if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
   libc_cv_asm_weak_directive=yes
 else
   libc_cv_asm_weak_directive=no
   libc_cv_asm_weak_directive=yes
 else
   libc_cv_asm_weak_directive=no
@@ -1418,7 +1784,7 @@ foo:
 ${libc_cv_asm_global_directive} baz
 baz:
 EOF
 ${libc_cv_asm_global_directive} baz
 baz:
 EOF
-  if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
+  if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
     libc_cv_asm_weakext_directive=yes
   else
     libc_cv_asm_weakext_directive=no
     libc_cv_asm_weakext_directive=yes
   else
     libc_cv_asm_weakext_directive=no
@@ -1433,65 +1799,28 @@ elif test $libc_cv_asm_weakext_directive = yes; then
   AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
 fi
 
   AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
 fi
 
-dnl The standard hppa assembler uses `;' to start comments and `!'
-dnl as a line separator.  CRIS uses `;' to start comments and `@' for
-dnl line separator.
-case "${host_cpu}-${host_os}" in
-  cris*)
-    libc_cv_asm_line_sep='@'
-    AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
-    ;;
-  hppa*linux*)
-  AC_CACHE_CHECK(for assembler line separator,
-                libc_cv_asm_line_sep, [dnl
-  cat > conftest.s <<EOF
- nop ; is_old_puffin
-EOF
-  if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
-    libc_cv_asm_line_sep='!'
-  else
-    if test -z "$enable_hacker_mode"; then
-      echo "*** You need a newer assembler to compile glibc"
-      rm -f conftest*
-      exit 1
-    fi
-    libc_cv_asm_line_sep=';'
-  fi
-  rm -f conftest*])
-  AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
-  ;;
+AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl
+case $machine in
+  sparc/sparc64*) cfi_offset=2047;;
+  *) cfi_offset=0;;
 esac
 esac
-
-AC_CACHE_CHECK(if -g produces usable source locations for assembler-with-cpp,
-              libc_cv_cpp_asm_debuginfo, [dnl
-cat > conftest.S <<EOF
-#include "confdefs.h"
-
-/* comment on
-   two lines */
-       ${libc_cv_dot_text}
-       ${libc_cv_asm_global_directive} foo
-foo:
-       /* Unfortunately this test only works for a real instruction,
-          not for any of the machine-independent pseudo-ops.
-          So we just have to assume everybody has a "nop".  */
-       nop
-       /* comment */
-       nop
-       /* comment */
-       nop
+cat > conftest.s <<EOF
+        .text
+        .type   func,%function
+func:
+        .cfi_startproc
+       .cfi_remember_state
+       .cfi_rel_offset 1, $cfi_offset
+        .cfi_endproc
 EOF
 EOF
-if AC_TRY_COMMAND([${CC-cc} $CFLAGS -g -c conftest.S 1>&AS_MESSAGE_LOG_FD]) &&
-   ac_pattern='conftest\.S'
-   AC_TRY_COMMAND([readelf --debug-dump=line conftest.o |
-                  grep $ac_pattern 1>&AS_MESSAGE_LOG_FD]); then
-  libc_cv_cpp_asm_debuginfo=yes
+if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
+  libc_cv_asm_cfi_directives=yes
 else
 else
-  libc_cv_cpp_asm_debuginfo=no
+  libc_cv_asm_cfi_directives=no
 fi
 fi
-rm -f conftest*])AC_SUBST(libc_cv_cpp_asm_debuginfo)
-if test $libc_cv_cpp_asm_debuginfo = yes; then
-  AC_DEFINE(HAVE_CPP_ASM_DEBUGINFO)
+rm -f conftest*])
+if test $libc_cv_asm_cfi_directives = yes; then
+  AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES)
 fi
 
 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
 fi
 
 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
@@ -1501,7 +1830,7 @@ int __eh_pc;
 __throw () {}
 EOF
 dnl No \ in command here because it ends up inside ''.
 __throw () {}
 EOF
 dnl No \ in command here because it ends up inside ''.
-if AC_TRY_COMMAND([${CC-cc} $CFLAGS
+if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
                            -nostdlib -nostartfiles -Wl,--no-whole-archive
                            -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
   libc_cv_ld_no_whole_archive=yes
                            -nostdlib -nostartfiles -Wl,--no-whole-archive
                            -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
   libc_cv_ld_no_whole_archive=yes
@@ -1521,7 +1850,7 @@ int __eh_pc;
 __throw () {}
 EOF
 dnl No \ in command here because it ends up inside ''.
 __throw () {}
 EOF
 dnl No \ in command here because it ends up inside ''.
-if AC_TRY_COMMAND([${CC-cc} $CFLAGS
+if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
                            -nostdlib -nostartfiles -fexceptions
                            -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
   libc_cv_gcc_exceptions=yes
                            -nostdlib -nostartfiles -fexceptions
                            -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
   libc_cv_gcc_exceptions=yes
@@ -1546,80 +1875,10 @@ if test "$libc_cv_c_asmcr0_bug" != 'no'; then
 fi
 fi
 
 fi
 fi
 
-AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info,
-[cat > conftest.c <<EOF
-#line __oline__ "configure"
-static char *__EH_FRAME_BEGIN__;
-_start ()
-{
-#ifdef CHECK__register_frame
-  __register_frame (__EH_FRAME_BEGIN__);
-  __deregister_frame (__EH_FRAME_BEGIN__);
-#endif
-#ifdef CHECK__register_frame_info
-  __register_frame_info (__EH_FRAME_BEGIN__);
-  __deregister_frame_info (__EH_FRAME_BEGIN__);
-#endif
-}
-int __eh_pc;
-__throw () {}
-/* FIXME: this is fragile.  */
-malloc () {}
-strcmp () {}
-strlen () {}
-memcpy () {}
-memset () {}
-free () {}
-abort () {}
-__bzero () {}
-dl_iterate_phdr () {}
-EOF
-dnl No \ in command here because it ends up inside ''.
-if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info
-                           -nostdlib -nostartfiles
-                           -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
-  libc_cv_gcc_dwarf2_unwind_info=static
-else
-  libc_cv_gcc_dwarf2_unwind_info=no
-fi
-# Some platforms' specs put -lgcc first.  The second one doesn't hurt.
-libc_unwind_check="${CC-cc} $CFLAGS -DCHECK__register_frame_info \
-                            -nostdlib -nostartfiles -o conftest conftest.c \
-                           -lgcc -lgcc_eh -lgcc"
-if AC_TRY_COMMAND([$libc_unwind_check >&AS_MESSAGE_LOG_FD]); then
-  if $libc_unwind_check -v 2>&1 >/dev/null \
-     | grep -q -- --eh-frame-hdr; then
-    libc_cv_gcc_dwarf2_unwind_info=no_registry_needed
-  else
-    libc_cv_gcc_dwarf2_unwind_info=static
-  fi
-else
-  libc_cv_gcc_dwarf2_unwind_info=no
-fi
-if test $libc_cv_gcc_dwarf2_unwind_info = no; then
-  if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame
-                             -nostdlib -nostartfiles
-                             -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
-    libc_cv_gcc_dwarf2_unwind_info=yes
-  else
-    libc_cv_gcc_dwarf2_unwind_info=no
-  fi
-fi
-rm -f conftest*])
-case $libc_cv_gcc_dwarf2_unwind_info in
-yes)
-  AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
-  ;;
-static)
-  AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
-  AC_DEFINE(HAVE_DWARF2_UNWIND_INFO_STATIC)
-  ;;
-esac
-
 dnl Check whether compiler understands __builtin_expect.
 AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
 [cat > conftest.c <<EOF
 dnl Check whether compiler understands __builtin_expect.
 AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
 [cat > conftest.c <<EOF
-#line __oline__ "configure"
+#line $LINENO "configure"
 int foo (int a)
 {
   a = __builtin_expect (a, 10);
 int foo (int a)
 {
   a = __builtin_expect (a, 10);
@@ -1627,7 +1886,7 @@ int foo (int a)
 }
 EOF
 dnl No \ in command here because it ends up inside ''.
 }
 EOF
 dnl No \ in command here because it ends up inside ''.
-if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
+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
                            -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
   libc_cv_gcc_builtin_expect=yes
 else
@@ -1657,33 +1916,24 @@ if test "$libc_cv_gcc_builtin_memset" = yes ; then
   AC_DEFINE(HAVE_BUILTIN_MEMSET)
 fi
 
   AC_DEFINE(HAVE_BUILTIN_MEMSET)
 fi
 
-dnl Check whether the compiler supports subtraction of local labels.
-AC_CACHE_CHECK(for local label subtraction, libc_cv_gcc_subtract_local_labels,
-[cat > conftest.c <<EOF
-changequote(,)dnl
-#line __oline__ "configure"
-int foo (int a)
+AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
+cat > conftest.c <<\EOF
+extern char *strstr (const char *, const char *) __asm ("my_strstr");
+char *foo (const char *a, const char *b)
 {
 {
-  static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
-  void *p = &&l1 + ar[a];
-  goto *p;
- l1:
-  return 1;
- l2:
-  return 2;
+  return __builtin_strstr (a, b);
 }
 }
-changequote([,])dnl
 EOF
 EOF
-dnl No \ in command here because it ends up inside ''.
-if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
-                           -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
-  libc_cv_gcc_subtract_local_labels=yes
+dnl
+if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null]);
+then
+  libc_cv_gcc_builtin_redirection=yes
 else
 else
-  libc_cv_gcc_subtract_local_labels=no
+  libc_cv_gcc_builtin_redirection=no
 fi
 fi
-rm -f conftest*])
-if test "$libc_cv_gcc_subtract_local_labels" = yes; then
-  AC_DEFINE(HAVE_SUBTRACT_LOCAL_LABELS)
+rm -f conftest* ])
+if test "$libc_cv_gcc_builtin_redirection" = yes ; then
+  AC_DEFINE(HAVE_BUILTIN_REDIRECTION)
 fi
 
 dnl Check whether the compiler supports the __thread keyword.
 fi
 
 dnl Check whether the compiler supports the __thread keyword.
@@ -1692,7 +1942,7 @@ if test "x$use__thread" != xno; then
   [cat > conftest.c <<\EOF
 __thread int a = 42;
 EOF
   [cat > conftest.c <<\EOF
 __thread int a = 42;
 EOF
-  if AC_TRY_COMMAND([${CC-cc} $CFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
+  if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
     libc_cv_gcc___thread=yes
   else
     libc_cv_gcc___thread=no
     libc_cv_gcc___thread=yes
   else
     libc_cv_gcc___thread=no
@@ -1711,7 +1961,7 @@ if test "$libc_cv_gcc___thread" = yes; then
   cat > conftest.c <<\EOF
 extern __thread int a __attribute__((tls_model ("initial-exec")));
 EOF
   cat > conftest.c <<\EOF
 extern __thread int a __attribute__((tls_model ("initial-exec")));
 EOF
-  if AC_TRY_COMMAND([${CC-cc} $CFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
+  if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
     libc_cv_gcc_tls_model_attr=yes
   else
     libc_cv_gcc_tls_model_attr=no
     libc_cv_gcc_tls_model_attr=yes
   else
     libc_cv_gcc_tls_model_attr=no
@@ -1741,6 +1991,53 @@ fi
 AC_MSG_RESULT($LIBGD)
 AC_SUBST(LIBGD)
 
 AC_MSG_RESULT($LIBGD)
 AC_SUBST(LIBGD)
 
+# SELinux detection
+if test x$with_selinux = xno ; then
+  have_selinux=no;
+else
+  # See if we have the SELinux library
+  AC_CHECK_LIB(selinux, is_selinux_enabled,
+              have_selinux=yes, have_selinux=no)
+  # See if we have the SELinux header with the NSCD permissions in it.
+  if test x$have_selinux = xyes ; then
+    AC_MSG_CHECKING([for NSCD Flask permissions in selinux/av_permissions.h])
+    AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
+                   [#ifdef NSCD__SHMEMHOST
+                    return 0;
+                    #else
+                    #error NSCD__SHMEMHOST not defined
+                    #endif],
+                   have_selinux=yes, have_selinux=no)
+    AC_MSG_RESULT($have_selinux)
+  fi
+
+  if test x$with_selinux = xyes ; then
+    if test x$have_selinux = xno ; then
+      AC_MSG_ERROR([SELinux explicitly required, but sufficiently recent SELinux library not found])
+    fi
+  fi
+fi
+# Check if we're building with SELinux support.
+if test "x$have_selinux" = xyes; then
+  AC_DEFINE(HAVE_SELINUX, 1, [SELinux support])
+
+  # See if we have the libaudit library
+  AC_CHECK_LIB(audit, audit_log_user_avc_message,
+               have_libaudit=yes, have_libaudit=no)
+  if test "x$have_libaudit" = xyes; then
+    AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support])
+  fi
+  AC_SUBST(have_libaudit)
+
+  # See if we have the libcap library
+  AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no)
+  if test "x$have_libcap" = xyes; then
+    AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support])
+  fi
+  AC_SUBST(have_libcap)
+fi
+AC_SUBST(have_selinux)
+
 dnl check for the size of 'long double'.
 AC_CHECK_SIZEOF(long double, 0)
 sizeof_long_double=$ac_cv_sizeof_long_double
 dnl check for the size of 'long double'.
 AC_CHECK_SIZEOF(long double, 0)
 sizeof_long_double=$ac_cv_sizeof_long_double
@@ -1754,6 +2051,7 @@ use_ldconfig=no
 ldd_rewrite_script=no
 libc_cv_sysconfdir=$sysconfdir
 libc_cv_gcc_unwind_find_fde=no
 ldd_rewrite_script=no
 libc_cv_sysconfdir=$sysconfdir
 libc_cv_gcc_unwind_find_fde=no
+libc_cv_idn=no
 
 # Iterate over all the sysdep directories we will use, running their
 # configure fragments, and looking for a uname implementation.
 
 # Iterate over all the sysdep directories we will use, running their
 # configure fragments, and looking for a uname implementation.
@@ -1865,17 +2163,12 @@ AC_SUBST(libc_cv_slibdir)
 AC_SUBST(libc_cv_localedir)
 AC_SUBST(libc_cv_sysconfdir)
 AC_SUBST(libc_cv_rootsbindir)
 AC_SUBST(libc_cv_localedir)
 AC_SUBST(libc_cv_sysconfdir)
 AC_SUBST(libc_cv_rootsbindir)
+AC_SUBST(libc_cv_forced_unwind)
 
 AC_SUBST(use_ldconfig)
 AC_SUBST(ldd_rewrite_script)
 
 
 AC_SUBST(use_ldconfig)
 AC_SUBST(ldd_rewrite_script)
 
-AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf) AC_SUBST(xcoff)
-if test $gnu_ld = yes; then
-  AC_DEFINE(HAVE_GNU_LD)
-fi
-if test $gnu_as = yes; then
-  AC_DEFINE(HAVE_GNU_AS)
-fi
+AC_SUBST(elf) AC_SUBST(xcoff)
 if test $elf = yes; then
   AC_DEFINE(HAVE_ELF)
 fi
 if test $elf = yes; then
   AC_DEFINE(HAVE_ELF)
 fi
@@ -1886,13 +2179,7 @@ fi
 AC_SUBST(static)
 AC_SUBST(shared)
 if test $shared = default; then
 AC_SUBST(static)
 AC_SUBST(shared)
 if test $shared = default; then
-  if test $gnu_ld = yes; then
-    shared=$elf
-  else
-    # For now we do not assume shared libs are available.  In future more
-    # tests might become available.
-    shared=no
-  fi
+  shared=$elf
 fi
 
 AC_CACHE_CHECK([whether -fPIC is default], pic_default,
 fi
 
 AC_CACHE_CHECK([whether -fPIC is default], pic_default,
@@ -1916,12 +2203,6 @@ AC_SUBST(nopic_initfini)
 
 AC_SUBST(DEFINES)
 
 
 AC_SUBST(DEFINES)
 
-case "$add_ons" in
-  *door*) linux_doors=yes ;;
-  *) linux_doors=no ;;
-esac
-AC_SUBST(linux_doors)
-
 dnl See sysdeps/mach/configure.in for this variable.
 AC_SUBST(mach_interface_list)
 
 dnl See sysdeps/mach/configure.in for this variable.
 AC_SUBST(mach_interface_list)
 
@@ -1936,7 +2217,7 @@ RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
 AC_SUBST(VERSION)
 AC_SUBST(RELEASE)
 
 AC_SUBST(VERSION)
 AC_SUBST(RELEASE)
 
-AC_CONFIG_FILES([config.make glibcbug ${config_makefile} ${config_uname}])
+AC_CONFIG_FILES([config.make ${config_makefile} ${config_uname}])
 AC_CONFIG_COMMANDS([default],[[
 case $CONFIG_FILES in *config.make*)
 echo "$config_vars" >> config.make;;
 AC_CONFIG_COMMANDS([default],[[
 case $CONFIG_FILES in *config.make*)
 echo "$config_vars" >> config.make;;