Fix compile warning in htonll.c
[kopensolaris-gnu/glibc.git] / configure.in
index f0511ac..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]),
@@ -138,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@:>@]),
@@ -169,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],
@@ -203,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.
@@ -308,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
   ;;
@@ -327,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
@@ -344,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
@@ -352,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."
@@ -371,48 +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
-               case "$CC $CFLAGS $CPPFLAGS " in
-               *" -mabi=n32 "*) mips_cc_abi=n32 ;;
-               *" -mabi=64 "*|*" -mabi=n64 "*) mips_cc_abi=64 ;;
-               *" -mabi=32 "*|*" -mabi=o32 "*) mips_cc_abi=32 ;;
-               *) mips_cc_abi=default ;;
-               esac
-               case $config_os in
-               *abin32*) mips_config_abi=n32 ;;
-               *abi64*|*abin64*) mips_config_abi=64 ;;
-               *abi32*|*abio32*) mips_config_abi=32 ;;
-               *) mips_config_abi=$mips_cc_abi ;;
-               esac
-               case $mips_config_abi in
-               default) machine=mips/mips64/n32 mips_config_abi=n32 ;;
-               n32) machine=mips/mips64/n32 ;;
-               64) machine=mips/mips64/n64 ;;
-               32) machine=mips/mips32/kern64 ;;
-               esac
-               machine=$machine/$config_machine
-               if test $mips_config_abi != $mips_cc_abi; then
-                 # This won't make it to config.make, but we want to
-                 # set this in case configure tests depend on it.
-                 CPPFLAGS="$CPPFLAGS -mabi=$mips_config_abi"
-               fi
-               ;;
-mips*)         base_machine=mips machine=mips/mips32/$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 ;;
@@ -426,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
@@ -467,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 ;;
 *)
@@ -501,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.
@@ -518,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.)
@@ -552,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.
 
@@ -621,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
@@ -660,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.
 
@@ -702,7 +866,7 @@ 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.]*\)],
   critic_missing="$critic_missing gcc")
 AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
   [GNU Make[^0-9]*\([0-9][0-9.]*\)],
@@ -749,18 +913,23 @@ test -n "$aux_missing" && AC_MSG_WARN([
 *** some features will be disabled.
 *** Check the INSTALL file for required versions.])
 
 *** 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
@@ -817,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
@@ -828,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
@@ -836,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
@@ -850,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
@@ -1016,13 +1158,6 @@ 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}
 AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
 [cat > conftest.s <<EOF
 ${libc_cv_dot_text}
@@ -1130,12 +1265,9 @@ EOF
   if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
     libc_cv_asm_protected_directive=yes
   else
   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=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,
@@ -1154,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
 
@@ -1178,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
 
@@ -1202,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} $LDFLAGS -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
@@ -1222,7 +1354,7 @@ 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; }
   cat > conftest.c <<EOF
 int _start (void) { return 0; }
 int __start (void) { return 0; }
@@ -1233,17 +1365,33 @@ EOF
                     -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,
@@ -1252,16 +1400,15 @@ EOF
 int _start (void) { return 42; }
 EOF
   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
 int _start (void) { return 42; }
 EOF
   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-                    -shared -o conftest.so conftest.c
+                    -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
 
   AC_CACHE_CHECK(for -z nodlopen option,
                 libc_cv_z_nodlopen, [dnl
@@ -1269,16 +1416,15 @@ EOF
 int _start (void) { return 42; }
 EOF
   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
 int _start (void) { return 42; }
 EOF
   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-                       -shared -o conftest.so conftest.c
+                       -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
 
   AC_CACHE_CHECK(for -z initfirst option,
                 libc_cv_z_initfirst, [dnl
@@ -1286,16 +1432,36 @@ EOF
 int _start (void) { return 42; }
 EOF
   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
 int _start (void) { return 42; }
 EOF
   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-                       -shared -o conftest.so conftest.c
+                       -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
 
   AC_CACHE_CHECK(for -Bgroup option,
                 libc_cv_Bgroup, [dnl
@@ -1303,7 +1469,7 @@ EOF
 int _start (void) { return 42; }
 EOF
   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
 int _start (void) { return 42; }
 EOF
   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-                             -shared -o conftest.so conftest.c
+                             -fPIC -shared -o conftest.so conftest.c
                              -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
   then
     libc_cv_Bgroup=yes
                              -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
   then
     libc_cv_Bgroup=yes
@@ -1313,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
@@ -1321,7 +1540,7 @@ extern int mumble;
 int foo (void) { return bar (mumble); }
 EOF
   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
 int foo (void) { return bar (mumble); }
 EOF
   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
-                       -shared -o conftest.so conftest.c
+                       -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
@@ -1342,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
 fi
-AC_SUBST(libc_cv_z_combreloc)
+
+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
+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,
@@ -1358,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
@@ -1473,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 $ASFLAGS 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} $CPPFLAGS $ASFLAGS -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
@@ -1586,71 +1875,6 @@ 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 $LINENO "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
-libc_unwind_check="${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame_info \
-                           $LDFLAGS \
-                           -nostdlib -nostartfiles -o conftest conftest.c \
-                           -lgcc"
-# Some platforms' specs put -lgcc first.  The second one doesn't hurt.
-if AC_TRY_COMMAND([$libc_unwind_check >&AS_MESSAGE_LOG_FD]) ||
-   AC_TRY_COMMAND([$libc_unwind_check -lgcc_eh -lgcc >&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 $CPPFLAGS -DCHECK__register_frame
-                             $LDFLAGS -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
@@ -1712,35 +1936,6 @@ if test "$libc_cv_gcc_builtin_redirection" = yes ; then
   AC_DEFINE(HAVE_BUILTIN_REDIRECTION)
 fi
 
   AC_DEFINE(HAVE_BUILTIN_REDIRECTION)
 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 $LINENO "configure"
-int foo (int a)
-{
-  static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
-  void *p = &&l1 + ar[a];
-  goto *p;
- l1:
-  return 1;
- l2:
-  return 2;
-}
-changequote([,])dnl
-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_subtract_local_labels=yes
-else
-  libc_cv_gcc_subtract_local_labels=no
-fi
-rm -f conftest*])
-if test "$libc_cv_gcc_subtract_local_labels" = yes; then
-  AC_DEFINE(HAVE_SUBTRACT_LOCAL_LABELS)
-fi
-
 dnl Check whether the compiler supports the __thread keyword.
 if test "x$use__thread" != xno; then
   AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
 dnl Check whether the compiler supports the __thread keyword.
 if test "x$use__thread" != xno; then
   AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
@@ -1796,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
@@ -1809,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.
@@ -1920,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
@@ -1941,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,
@@ -1971,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)
 
@@ -1991,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;;