summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog16
-rw-r--r--config.h.in3
-rwxr-xr-xconfigure11
-rw-r--r--configure.in7
-rw-r--r--nptl/ChangeLog10
-rw-r--r--nptl/sysdeps/i386/tls.h9
-rw-r--r--nptl/sysdeps/ia64/tls.h7
-rw-r--r--nptl/sysdeps/powerpc/tls.h7
-rw-r--r--nptl/sysdeps/s390/tls.h7
-rw-r--r--nptl/sysdeps/sh/tls.h9
-rw-r--r--nptl/sysdeps/sparc/tls.h6
-rw-r--r--nptl/sysdeps/x86_64/tls.h7
-rw-r--r--sysdeps/i386/elf/configure9
-rw-r--r--sysdeps/i386/elf/configure.in6
-rw-r--r--sysdeps/ia64/elf/configure129
-rw-r--r--sysdeps/ia64/elf/configure.in28
-rw-r--r--sysdeps/mach/hurd/i386/tls.h20
-rw-r--r--sysdeps/mach/hurd/tls.h6
-rw-r--r--sysdeps/powerpc/powerpc32/elf/configure103
-rw-r--r--sysdeps/powerpc/powerpc32/elf/configure.in6
-rw-r--r--sysdeps/powerpc/powerpc64/elf/configure160
-rw-r--r--sysdeps/powerpc/powerpc64/elf/configure.in63
-rw-r--r--sysdeps/s390/s390-32/elf/configure107
-rw-r--r--sysdeps/s390/s390-32/elf/configure.in6
-rw-r--r--sysdeps/s390/s390-64/elf/configure107
-rw-r--r--sysdeps/s390/s390-64/elf/configure.in6
-rw-r--r--sysdeps/sh/elf/configure107
-rw-r--r--sysdeps/sh/elf/configure.in6
-rw-r--r--sysdeps/sparc/sparc32/elf/configure119
-rw-r--r--sysdeps/sparc/sparc32/elf/configure.in6
-rw-r--r--sysdeps/sparc/sparc64/elf/configure119
-rw-r--r--sysdeps/sparc/sparc64/elf/configure.in6
-rw-r--r--sysdeps/x86_64/elf/configure7
-rw-r--r--sysdeps/x86_64/elf/configure.in6
34 files changed, 888 insertions, 343 deletions
diff --git a/ChangeLog b/ChangeLog
index 7f9208ffc8..275e693d3f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,21 @@
 2011-09-11  Ulrich Drepper  <drepper@gmail.com>
 
+	* configure.in: Remove --with-tls option.
+	* config.h.in: Remove HAVE_TLS_SUPPORT entry.
+	* sysdeps/i386/elf/configure.in: Always test for TLS support and err
+	out in case it is missing.
+	* sysdeps/ia64/elf/configure.in: Likewise.
+	* sysdeps/powerpc/powerpc32/elf/configure.in: Likewise.
+	* sysdeps/powerpc/powerpc64/elf/configure.in: Likewise.
+	* sysdeps/s390/s390-32/elf/configure.in: Likewise.
+	* sysdeps/s390/s390-64/elf/configure.in: Likewise.
+	* sysdeps/sh/elf/configure.in: Likewise.
+	* sysdeps/sparc/sparc32/elf/configure.in: Likewise.
+	* sysdeps/sparc/sparc64/elf/configure.in: Likewise.
+	* sysdeps/x86_64/elf/configure.in: Likewise.
+	* sysdeps/mach/hurd/i386/tls.h: Remove test for HAVE_TLS_SUPPORT.
+	* sysdeps/mach/hurd/tls.h: Likewise.
+
 	[BZ #13067]
 	* malloc/obstack.h [!GNUC] (obstack_free): Avoid cast to int.
 
diff --git a/config.h.in b/config.h.in
index 893d8f6be3..7b5095691d 100644
--- a/config.h.in
+++ b/config.h.in
@@ -112,9 +112,6 @@
 /* Define if _rtld_local structure should be forced into .sdata section.  */
 #undef	HAVE_SDATA_SECTION
 
-/* Define if binutils support TLS handling.  */
-#undef	HAVE_TLS_SUPPORT
-
 /* Define if gcc supports SSE4.  */
 #undef	HAVE_SSE4_SUPPORT
 
diff --git a/configure b/configure
index c5cfc6d956..b59049f639 100755
--- a/configure
+++ b/configure
@@ -783,7 +783,6 @@ enable_versioning
 enable_oldest_abi
 enable_stackguard_randomization
 enable_add_ons
-with_tls
 enable_hidden_plt
 enable_bind_now
 enable_static_nss
@@ -1466,7 +1465,6 @@ Optional Packages:
   --with-headers=PATH     location of system headers to use (for example
                           /usr/src/linux/include) [default=compiler default]
   --with-default-link     do not use explicit linker scripts
-  --with-tls              enable support for TLS
   --with-cpu=CPU          select code for CPU variant
 
 Some influential environment variables:
@@ -3668,15 +3666,6 @@ else
 fi
 
 
-
-# Check whether --with-tls was given.
-if test "${with_tls+set}" = set; then :
-  withval=$with_tls; usetls=$withval
-else
-  usetls=yes
-fi
-
-
 # Check whether --enable-hidden-plt was given.
 if test "${enable_hidden_plt+set}" = set; then :
   enableval=$enable_hidden_plt; hidden=$enableval
diff --git a/configure.in b/configure.in
index 2682b68393..b2949b4958 100644
--- a/configure.in
+++ b/configure.in
@@ -187,13 +187,6 @@ AC_ARG_ENABLE([add-ons],
 			      search for add-ons if no parameter given]),
 			     , [enable_add_ons=yes])
 
-dnl Let the user avoid using TLS.  Don't know why but...
-AC_ARG_WITH([tls],
-	    AC_HELP_STRING([--with-tls],
-			   [enable support for TLS]),
-	    [usetls=$withval],
-	    [usetls=yes])
-
 AC_ARG_ENABLE([hidden-plt],
 	      AC_HELP_STRING([--disable-hidden-plt],
 			     [do not hide internal function calls to avoid PLT]),
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index b3439393ee..15c785bf4e 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,13 @@
+2011-09-11  Ulrich Drepper  <drepper@gmail.com>
+
+	* sysdeps/i386/tls.h: Remove HAVE_TLS_SUPPORT test.
+	* sysdeps/ia64/tls.h: Likewise.
+	* sysdeps/powerpc/tls.h: Likewise.
+	* sysdeps/s390/tls.h: Likewise.
+	* sysdeps/sh/tls.h: Likewise.
+	* sysdeps/sparc/tls.h: Likewise.
+	* sysdeps/x86_64/tls.h: Likewise.
+
 2011-09-10  Ulrich Drepper  <drepper@gmail.com>
 
 	* sysdeps/pthread/malloc-machine.h: Define MUTEX_INITIALIZER.
diff --git a/nptl/sysdeps/i386/tls.h b/nptl/sysdeps/i386/tls.h
index f23977e73f..3f597a9771 100644
--- a/nptl/sysdeps/i386/tls.h
+++ b/nptl/sysdeps/i386/tls.h
@@ -1,5 +1,5 @@
 /* Definition for thread-local data handling.  nptl/i386 version.
-   Copyright (C) 2002-2007, 2009 Free Software Foundation, Inc.
+   Copyright (C) 2002-2007, 2009, 2011 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -70,11 +70,6 @@ typedef struct
 #endif
 
 
-/* We require TLS support in the tools.  */
-#ifndef HAVE_TLS_SUPPORT
-# error "TLS support is required."
-#endif
-
 /* Alignment requirement for the stack.  For IA-32 this is governed by
    the SSE memory functions.  */
 #define STACK_ALIGN	16
@@ -261,7 +256,7 @@ union user_desc_init
 
    The contained asm must *not* be marked volatile since otherwise
    assignments like
-        pthread_descr self = thread_self();
+	pthread_descr self = thread_self();
    do not get optimized away.  */
 # define THREAD_SELF \
   ({ struct pthread *__self;						      \
diff --git a/nptl/sysdeps/ia64/tls.h b/nptl/sysdeps/ia64/tls.h
index 936ff01a72..c2a092663b 100644
--- a/nptl/sysdeps/ia64/tls.h
+++ b/nptl/sysdeps/ia64/tls.h
@@ -1,5 +1,5 @@
 /* Definition for thread-local data handling.  nptl/IA-64 version.
-   Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2003-2007, 2011 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -56,11 +56,6 @@ register struct pthread *__thread_self __asm__("r13");
 #endif
 
 
-/* We require TLS support in the tools.  */
-#ifndef HAVE_TLS_SUPPORT
-# error "TLS support is required."
-#endif
-
 /* Alignment requirement for the stack.  */
 #define STACK_ALIGN	16
 
diff --git a/nptl/sysdeps/powerpc/tls.h b/nptl/sysdeps/powerpc/tls.h
index 0f4d5290dd..09f7484c8a 100644
--- a/nptl/sysdeps/powerpc/tls.h
+++ b/nptl/sysdeps/powerpc/tls.h
@@ -1,5 +1,5 @@
 /* Definition for thread-local data handling.  NPTL/PowerPC version.
-   Copyright (C) 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2005, 2006, 2007, 2011 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -43,11 +43,6 @@ typedef union dtv
 #endif /* __ASSEMBLER__ */
 
 
-/* We require TLS support in the tools.  */
-#ifndef HAVE_TLS_SUPPORT
-# error "TLS support is required."
-#endif
-
 #ifndef __ASSEMBLER__
 
 /* Get system call information.  */
diff --git a/nptl/sysdeps/s390/tls.h b/nptl/sysdeps/s390/tls.h
index 2b38ed4e7d..52fe351fb9 100644
--- a/nptl/sysdeps/s390/tls.h
+++ b/nptl/sysdeps/s390/tls.h
@@ -1,5 +1,5 @@
 /* Definition for thread-local data handling.  NPTL/s390 version.
-   Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2003-2007, 2011 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -66,11 +66,6 @@ typedef struct
 #endif
 
 
-/* We require TLS support in the tools.  */
-#ifndef HAVE_TLS_SUPPORT
-# error "TLS support is required."
-#endif
-
 /* Alignment requirement for the stack.  For IA-32 this is governed by
    the SSE memory functions.  */
 #define STACK_ALIGN	16
diff --git a/nptl/sysdeps/sh/tls.h b/nptl/sysdeps/sh/tls.h
index a2d4d565ff..908e455874 100644
--- a/nptl/sysdeps/sh/tls.h
+++ b/nptl/sysdeps/sh/tls.h
@@ -1,5 +1,5 @@
 /* Definition for thread-local data handling.  NPTL/SH version.
-   Copyright (C) 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2005, 2006, 2007, 2011 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -55,11 +55,6 @@ typedef struct
 #endif /* __ASSEMBLER__ */
 
 
-/* We require TLS support in the tools.  */
-#ifndef HAVE_TLS_SUPPORT
-# error "TLS support is required."
-#endif
-
 #ifndef __ASSEMBLER__
 
 /* Get system call information.  */
@@ -116,7 +111,7 @@ typedef struct
 /* Return the thread descriptor for the current thread.
    The contained asm must *not* be marked volatile since otherwise
    assignments like
-        struct pthread *self = thread_self();
+	struct pthread *self = thread_self();
    do not get optimized away.  */
 # define THREAD_SELF \
   ({ struct pthread *__self;						      \
diff --git a/nptl/sysdeps/sparc/tls.h b/nptl/sysdeps/sparc/tls.h
index dc1b3868c9..64ede5a897 100644
--- a/nptl/sysdeps/sparc/tls.h
+++ b/nptl/sysdeps/sparc/tls.h
@@ -1,5 +1,5 @@
 /* Definitions for thread-local data handling.  NPTL/sparc version.
-   Copyright (C) 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2005, 2006, 2007, 2011 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -65,10 +65,6 @@ typedef struct
 # include <tcb-offsets.h>
 #endif /* __ASSEMBLER__ */
 
-/* We require TLS support in the tools.  */
-#ifndef HAVE_TLS_SUPPORT
-# error "TLS support is required."
-#endif
 
 #ifndef __ASSEMBLER__
 /* Get system call information.  */
diff --git a/nptl/sysdeps/x86_64/tls.h b/nptl/sysdeps/x86_64/tls.h
index 41b5e6daa2..95e022b0e4 100644
--- a/nptl/sysdeps/x86_64/tls.h
+++ b/nptl/sysdeps/x86_64/tls.h
@@ -1,5 +1,5 @@
 /* Definition for thread-local data handling.  nptl/x86_64 version.
-   Copyright (C) 2002-2007, 2008, 2009 Free Software Foundation, Inc.
+   Copyright (C) 2002-2007, 2008, 2009, 2011 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -80,11 +80,6 @@ typedef struct
 #endif
 
 
-/* We require TLS support in the tools.  */
-#ifndef HAVE_TLS_SUPPORT
-# error "TLS support is required."
-#endif
-
 /* Alignment requirement for the stack.  */
 #define STACK_ALIGN	16
 
diff --git a/sysdeps/i386/elf/configure b/sysdeps/i386/elf/configure
index 3aa5a7d1a3..83e89bd0a0 100644
--- a/sysdeps/i386/elf/configure
+++ b/sysdeps/i386/elf/configure
@@ -83,12 +83,11 @@ $as_echo X/"$0" |
 # This file is generated from configure.in by Autoconf.  DO NOT EDIT!
  # Local configure fragment for sysdeps/i386/elf.
 
-if test "$usetls" != no; then
 # Check for support of thread-local storage handling in assembler and
 # linker.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for i386 TLS support" >&5
 $as_echo_n "checking for i386 TLS support... " >&6; }
-if test "${libc_cv_386_tls+set}" = set; then :
+if ${libc_cv_386_tls+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat > conftest.s <<\EOF
@@ -121,10 +120,8 @@ rm -f conftest*
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_386_tls" >&5
 $as_echo "$libc_cv_386_tls" >&6; }
-if test $libc_cv_386_tls = yes; then
-  $as_echo "#define HAVE_TLS_SUPPORT 1" >>confdefs.h
-
-fi
+if test $libc_cv_386_tls = no; then
+  as_fn_error $? "the assembler must support TLS" "$LINENO" 5
 fi
 
 $as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
diff --git a/sysdeps/i386/elf/configure.in b/sysdeps/i386/elf/configure.in
index ca607adeb5..0c436f3f41 100644
--- a/sysdeps/i386/elf/configure.in
+++ b/sysdeps/i386/elf/configure.in
@@ -1,7 +1,6 @@
 GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
 # Local configure fragment for sysdeps/i386/elf.
 
-if test "$usetls" != no; then
 # Check for support of thread-local storage handling in assembler and
 # linker.
 AC_CACHE_CHECK(for i386 TLS support, libc_cv_386_tls, [dnl
@@ -28,9 +27,8 @@ else
   libc_cv_386_tls=no
 fi
 rm -f conftest*])
-if test $libc_cv_386_tls = yes; then
-  AC_DEFINE(HAVE_TLS_SUPPORT)
-fi
+if test $libc_cv_386_tls = no; then
+  AC_MSG_ERROR([the assembler must support TLS])
 fi
 
 dnl It is always possible to access static and hidden symbols in an
diff --git a/sysdeps/ia64/elf/configure b/sysdeps/ia64/elf/configure
index 8bc2e4f711..aa30dd0870 100644
--- a/sysdeps/ia64/elf/configure
+++ b/sysdeps/ia64/elf/configure
@@ -1,51 +1,126 @@
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
 # This file is generated from configure.in by Autoconf.  DO NOT EDIT!
  # Local configure fragment for sysdeps/ia64/elf.
 
-if test "$usetls" != no; then
 # Check for support of thread-local storage handling in assembler and
 # linker.
-{ $as_echo "$as_me:$LINENO: checking for ia64 TLS support" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ia64 TLS support" >&5
 $as_echo_n "checking for ia64 TLS support... " >&6; }
-if test "${libc_cv_ia64_tls+set}" = set; then
+if ${libc_cv_ia64_tls+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat > conftest.s <<\EOF
-        .section ".tdata","awT",@progbits
+	.section ".tdata","awT",@progbits
 foo:    data8   25
-        .text
-        addl    r16 = @ltoff(@dtpmod(foo#)), gp
-        addl    r17 = @ltoff(@dtprel(foo#)), gp
-        addl    r18 = @ltoff(@tprel(foo#)), gp
-        addl    r19 = @dtprel(foo#), gp
-        adds    r21 = @dtprel(foo#), r13
-        movl    r23 = @dtprel(foo#)
-        addl    r20 = @tprel(foo#), gp
-        adds    r22 = @tprel(foo#), r13
-        movl    r24 = @tprel(foo#)
+	.text
+	addl    r16 = @ltoff(@dtpmod(foo#)), gp
+	addl    r17 = @ltoff(@dtprel(foo#)), gp
+	addl    r18 = @ltoff(@tprel(foo#)), gp
+	addl    r19 = @dtprel(foo#), gp
+	adds    r21 = @dtprel(foo#), r13
+	movl    r23 = @dtprel(foo#)
+	addl    r20 = @tprel(foo#), gp
+	adds    r22 = @tprel(foo#), r13
+	movl    r24 = @tprel(foo#)
 EOF
 if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
   libc_cv_ia64_tls=yes
 else
   libc_cv_ia64_tls=no
 fi
 rm -f conftest*
 fi
-{ $as_echo "$as_me:$LINENO: result: $libc_cv_ia64_tls" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ia64_tls" >&5
 $as_echo "$libc_cv_ia64_tls" >&6; }
-if test $libc_cv_ia64_tls = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_TLS_SUPPORT 1
-_ACEOF
-
-fi
+if test $libc_cv_ia64_tls = no; then
+  as_fn_error $? "the assembler must support TLS" "$LINENO" 5
 fi
 
-cat >>confdefs.h <<\_ACEOF
-#define PI_STATIC_AND_HIDDEN 1
-_ACEOF
+$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
 
diff --git a/sysdeps/ia64/elf/configure.in b/sysdeps/ia64/elf/configure.in
index b113579ee0..396b9c49cf 100644
--- a/sysdeps/ia64/elf/configure.in
+++ b/sysdeps/ia64/elf/configure.in
@@ -1,23 +1,22 @@
 GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
 # Local configure fragment for sysdeps/ia64/elf.
 
-if test "$usetls" != no; then
 # Check for support of thread-local storage handling in assembler and
 # linker.
 AC_CACHE_CHECK(for ia64 TLS support, libc_cv_ia64_tls, [dnl
 cat > conftest.s <<\EOF
-        .section ".tdata","awT",@progbits
+	.section ".tdata","awT",@progbits
 foo:    data8   25
-        .text
-        addl    r16 = @ltoff(@dtpmod(foo#)), gp
-        addl    r17 = @ltoff(@dtprel(foo#)), gp
-        addl    r18 = @ltoff(@tprel(foo#)), gp
-        addl    r19 = @dtprel(foo#), gp
-        adds    r21 = @dtprel(foo#), r13
-        movl    r23 = @dtprel(foo#)
-        addl    r20 = @tprel(foo#), gp
-        adds    r22 = @tprel(foo#), r13
-        movl    r24 = @tprel(foo#)
+	.text
+	addl    r16 = @ltoff(@dtpmod(foo#)), gp
+	addl    r17 = @ltoff(@dtprel(foo#)), gp
+	addl    r18 = @ltoff(@tprel(foo#)), gp
+	addl    r19 = @dtprel(foo#), gp
+	adds    r21 = @dtprel(foo#), r13
+	movl    r23 = @dtprel(foo#)
+	addl    r20 = @tprel(foo#), gp
+	adds    r22 = @tprel(foo#), r13
+	movl    r24 = @tprel(foo#)
 EOF
 dnl
 if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
@@ -26,9 +25,8 @@ else
   libc_cv_ia64_tls=no
 fi
 rm -f conftest*])
-if test $libc_cv_ia64_tls = yes; then
-  AC_DEFINE(HAVE_TLS_SUPPORT)
-fi
+if test $libc_cv_ia64_tls = no; then
+  AC_MSG_ERROR([the assembler must support TLS])
 fi
 
 dnl It is always possible to access static and hidden symbols in an
diff --git a/sysdeps/mach/hurd/i386/tls.h b/sysdeps/mach/hurd/i386/tls.h
index d98b485b96..46e0982412 100644
--- a/sysdeps/mach/hurd/i386/tls.h
+++ b/sysdeps/mach/hurd/i386/tls.h
@@ -1,5 +1,5 @@
 /* Definitions for thread-local data handling.  Hurd/i386 version.
-   Copyright (C) 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2004, 2006, 2007, 2011 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -20,16 +20,15 @@
 #ifndef _I386_TLS_H
 #define _I386_TLS_H
 
-#if defined HAVE_TLS_SUPPORT
 
 /* Some things really need not be machine-dependent.  */
-# include <sysdeps/mach/hurd/tls.h>
+#include <sysdeps/mach/hurd/tls.h>
 
 /* The TCB can have any size and the memory following the address the
    thread pointer points to is unspecified.  Allocate the TCB there.  */
-# define TLS_TCB_AT_TP	1
+#define TLS_TCB_AT_TP	1
 
-# ifndef __ASSEMBLER__
+#ifndef __ASSEMBLER__
 
 /* Use i386-specific RPCs to arrange that %gs segment register prefix
    addresses the TCB in each thread.  */
@@ -42,7 +41,7 @@
 # include <errno.h>
 # include <assert.h>
 
-#define HURD_TLS_DESC_DECL(desc, tcb)					      \
+# define HURD_TLS_DESC_DECL(desc, tcb)					      \
   struct descriptor desc =						      \
     {				/* low word: */				      \
       0xffff			/* limit 0..15 */			      \
@@ -123,7 +122,7 @@ _hurd_tls_init (tcbhead_t *tcb, int secondcall)
 # define TLS_INIT_TP_EXPENSIVE 1
 
 /* Return the TCB address of the current thread.  */
-# define THREAD_SELF 							      \
+# define THREAD_SELF							      \
   ({ tcbhead_t *__tcb;							      \
      __asm__ ("movl %%gs:%c1,%0" : "=r" (__tcb)				      \
 	      : "i" (offsetof (tcbhead_t, tcb)));			      \
@@ -135,12 +134,12 @@ _hurd_tls_init (tcbhead_t *tcb, int secondcall)
 		   : : "ir" (dtvp), "i" (offsetof (tcbhead_t, dtv))); })
 
 /* Return the address of the dtv for the current thread.  */
-# define THREAD_DTV() 							      \
+# define THREAD_DTV()							      \
   ({ dtv_t *_dtv;							      \
      asm ("movl %%gs:%P1,%0" : "=q" (_dtv) : "i" (offsetof (tcbhead_t, dtv)));\
      _dtv; })
 
-#include <mach/machine/thread_status.h>
+# include <mach/machine/thread_status.h>
 
 /* Set up TLS in the new thread of a fork child, copying from our own.  */
 static inline error_t __attribute__ ((unused))
@@ -165,7 +164,6 @@ _hurd_tls_fork (thread_t child, struct i386_thread_state *state)
   return err;
 }
 
-# endif	/* !__ASSEMBLER__ */
-#endif /* HAVE_TLS_SUPPORT */
+#endif	/* !__ASSEMBLER__ */
 
 #endif	/* i386/tls.h */
diff --git a/sysdeps/mach/hurd/tls.h b/sysdeps/mach/hurd/tls.h
index 8ad3f1a28b..d63045fefe 100644
--- a/sysdeps/mach/hurd/tls.h
+++ b/sysdeps/mach/hurd/tls.h
@@ -1,5 +1,5 @@
 /* Definitions for thread-local data handling.  Hurd version.
-   Copyright (C) 2003, 2005, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2005, 2007, 2011 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -20,7 +20,7 @@
 #ifndef _TLS_H
 #define _TLS_H
 
-#if defined HAVE_TLS_SUPPORT && !defined __ASSEMBLER__
+#ifndef __ASSEMBLER__
 
 # include <stddef.h>
 # include <stdbool.h>
@@ -71,7 +71,7 @@ typedef struct
 # define GET_DTV(descr) \
   (((tcbhead_t *) (descr))->dtv)
 
-#endif /* HAVE_TLS_SUPPORT */
+#endif /* !ASSEMBLER */
 
 
 #endif /* tls.h */
diff --git a/sysdeps/powerpc/powerpc32/elf/configure b/sysdeps/powerpc/powerpc32/elf/configure
index dfa5770756..bce17df1ab 100644
--- a/sysdeps/powerpc/powerpc32/elf/configure
+++ b/sysdeps/powerpc/powerpc32/elf/configure
@@ -1,12 +1,93 @@
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
 # This file is generated from configure.in by Autoconf.  DO NOT EDIT!
  # Local configure fragment for sysdeps/powerpc32/elf.
 
-if test "$usetls" != no; then
 # Check for support of thread-local storage handling in assembler and
 # linker.
-{ $as_echo "$as_me:$LINENO: checking for powerpc32 TLS support" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for powerpc32 TLS support" >&5
 $as_echo_n "checking for powerpc32 TLS support... " >&6; }
-if test "${libc_cv_powerpc32_tls+set}" = set; then
+if ${libc_cv_powerpc32_tls+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat > conftest.s <<\EOF
@@ -30,23 +111,19 @@ x2:	.long	1
 	addi	9,9,x2@tprel@l
 EOF
 if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
   libc_cv_powerpc32_tls=yes
 else
   libc_cv_powerpc32_tls=no
 fi
 rm -f conftest*
 fi
-{ $as_echo "$as_me:$LINENO: result: $libc_cv_powerpc32_tls" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_powerpc32_tls" >&5
 $as_echo "$libc_cv_powerpc32_tls" >&6; }
-if test $libc_cv_powerpc32_tls = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_TLS_SUPPORT 1
-_ACEOF
-
-fi
+if test $libc_cv_powerpc32_tls = no; then
+  as_fn_error $? "the assembler must support TLS" "$LINENO" 5
 fi
diff --git a/sysdeps/powerpc/powerpc32/elf/configure.in b/sysdeps/powerpc/powerpc32/elf/configure.in
index fbf41a4984..e527b454c1 100644
--- a/sysdeps/powerpc/powerpc32/elf/configure.in
+++ b/sysdeps/powerpc/powerpc32/elf/configure.in
@@ -1,7 +1,6 @@
 GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
 # Local configure fragment for sysdeps/powerpc32/elf.
 
-if test "$usetls" != no; then
 # Check for support of thread-local storage handling in assembler and
 # linker.
 AC_CACHE_CHECK(for powerpc32 TLS support, libc_cv_powerpc32_tls, [dnl
@@ -32,7 +31,6 @@ else
   libc_cv_powerpc32_tls=no
 fi
 rm -f conftest*])
-if test $libc_cv_powerpc32_tls = yes; then
-  AC_DEFINE(HAVE_TLS_SUPPORT)
-fi
+if test $libc_cv_powerpc32_tls = no; then
+  AC_MSG_ERROR([the assembler must support TLS])
 fi
diff --git a/sysdeps/powerpc/powerpc64/elf/configure b/sysdeps/powerpc/powerpc64/elf/configure
index 6ca1510a2c..a3d24a3827 100644
--- a/sysdeps/powerpc/powerpc64/elf/configure
+++ b/sysdeps/powerpc/powerpc64/elf/configure
@@ -1,72 +1,148 @@
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
 # This file is generated from configure.in by Autoconf.  DO NOT EDIT!
  # Local configure fragment for sysdeps/powerpc64/elf.
 
-if test "$usetls" != no; then
 # Check for support of thread-local storage handling in assembler and
 # linker.
-{ $as_echo "$as_me:$LINENO: checking for powerpc64 TLS support" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for powerpc64 TLS support" >&5
 $as_echo_n "checking for powerpc64 TLS support... " >&6; }
-if test "${libc_cv_powerpc64_tls+set}" = set; then
+if ${libc_cv_powerpc64_tls+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat > conftest.s <<\EOF
-        .section ".tdata","awT",@progbits
+	.section ".tdata","awT",@progbits
 x:      .quad   1
 x1:     .quad   1
 x2:     .quad   1
 x3:     .quad   1
 x4:     .long   1
-        .section ".toc","aw"
+	.section ".toc","aw"
 .LC0:
-        .quad	x@dtpmod
-        .quad	x@dtprel
+	.quad	x@dtpmod
+	.quad	x@dtprel
 .LC1:
-        .quad	x1@dtpmod
-        .quad	0
+	.quad	x1@dtpmod
+	.quad	0
 .LC2:
 	.quad	x@tprel
-        .text
-        addi    3,2,x@got@tlsgd
-        addi    3,2,.LC0@toc
-        addi    3,2,x1@got@tlsld
-        addi    9,3,x1@dtprel
-        addis   9,3,x2@dtprel@ha
-        addi    9,9,x2@dtprel@l
-        ld      9,x3@got@dtprel(2)
-        addi    3,2,.LC0@toc
-        lwz     0,x1@dtprel(3)
-        ld      0,x1@dtprel(3)
-        addis   9,3,x2@dtprel@ha
-        lwz     0,x2@dtprel@l(9)
-        ld      0,x2@dtprel@l(9)
-        ld      9,x3@got@dtprel(2)
-        ld      9,x@got@tprel(2)
-        add     9,9,x@tls
-        ld      9,.LC2@toc(2)
-        add     9,9,.LC2@tls
-        addi    9,13,x1@tprel
-        addis   9,13,x2@tprel@ha
-        addi    9,9,x2@tprel@l
+	.text
+	addi    3,2,x@got@tlsgd
+	addi    3,2,.LC0@toc
+	addi    3,2,x1@got@tlsld
+	addi    9,3,x1@dtprel
+	addis   9,3,x2@dtprel@ha
+	addi    9,9,x2@dtprel@l
+	ld      9,x3@got@dtprel(2)
+	addi    3,2,.LC0@toc
+	lwz     0,x1@dtprel(3)
+	ld      0,x1@dtprel(3)
+	addis   9,3,x2@dtprel@ha
+	lwz     0,x2@dtprel@l(9)
+	ld      0,x2@dtprel@l(9)
+	ld      9,x3@got@dtprel(2)
+	ld      9,x@got@tprel(2)
+	add     9,9,x@tls
+	ld      9,.LC2@toc(2)
+	add     9,9,.LC2@tls
+	addi    9,13,x1@tprel
+	addis   9,13,x2@tprel@ha
+	addi    9,9,x2@tprel@l
 EOF
 if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
   libc_cv_powerpc64_tls=yes
 else
   libc_cv_powerpc64_tls=no
 fi
 rm -f conftest*
 fi
-{ $as_echo "$as_me:$LINENO: result: $libc_cv_powerpc64_tls" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_powerpc64_tls" >&5
 $as_echo "$libc_cv_powerpc64_tls" >&6; }
-if test $libc_cv_powerpc64_tls = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_TLS_SUPPORT 1
-_ACEOF
-
-fi
+if test $libc_cv_powerpc64_tls = no; then
+  as_fn_error $? "the assembler must support TLS" "$LINENO" 5
 fi
-
diff --git a/sysdeps/powerpc/powerpc64/elf/configure.in b/sysdeps/powerpc/powerpc64/elf/configure.in
index 5466367cfb..9a375c66a4 100644
--- a/sysdeps/powerpc/powerpc64/elf/configure.in
+++ b/sysdeps/powerpc/powerpc64/elf/configure.in
@@ -1,48 +1,47 @@
 GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
 # Local configure fragment for sysdeps/powerpc64/elf.
 
-if test "$usetls" != no; then
 # Check for support of thread-local storage handling in assembler and
 # linker.
 AC_CACHE_CHECK(for powerpc64 TLS support, libc_cv_powerpc64_tls, [dnl
 cat > conftest.s <<\EOF
-        .section ".tdata","awT",@progbits
+	.section ".tdata","awT",@progbits
 x:      .quad   1
 x1:     .quad   1
 x2:     .quad   1
 x3:     .quad   1
 x4:     .long   1
-        .section ".toc","aw"
+	.section ".toc","aw"
 .LC0:
-        .quad	x@dtpmod
-        .quad	x@dtprel
+	.quad	x@dtpmod
+	.quad	x@dtprel
 .LC1:
-        .quad	x1@dtpmod
-        .quad	0
+	.quad	x1@dtpmod
+	.quad	0
 .LC2:
 	.quad	x@tprel
-        .text
-        addi    3,2,x@got@tlsgd
-        addi    3,2,.LC0@toc
-        addi    3,2,x1@got@tlsld
-        addi    9,3,x1@dtprel
-        addis   9,3,x2@dtprel@ha
-        addi    9,9,x2@dtprel@l
-        ld      9,x3@got@dtprel(2)
-        addi    3,2,.LC0@toc
-        lwz     0,x1@dtprel(3)
-        ld      0,x1@dtprel(3)
-        addis   9,3,x2@dtprel@ha
-        lwz     0,x2@dtprel@l(9)
-        ld      0,x2@dtprel@l(9)
-        ld      9,x3@got@dtprel(2)
-        ld      9,x@got@tprel(2)
-        add     9,9,x@tls
-        ld      9,.LC2@toc(2)
-        add     9,9,.LC2@tls
-        addi    9,13,x1@tprel
-        addis   9,13,x2@tprel@ha
-        addi    9,9,x2@tprel@l
+	.text
+	addi    3,2,x@got@tlsgd
+	addi    3,2,.LC0@toc
+	addi    3,2,x1@got@tlsld
+	addi    9,3,x1@dtprel
+	addis   9,3,x2@dtprel@ha
+	addi    9,9,x2@dtprel@l
+	ld      9,x3@got@dtprel(2)
+	addi    3,2,.LC0@toc
+	lwz     0,x1@dtprel(3)
+	ld      0,x1@dtprel(3)
+	addis   9,3,x2@dtprel@ha
+	lwz     0,x2@dtprel@l(9)
+	ld      0,x2@dtprel@l(9)
+	ld      9,x3@got@dtprel(2)
+	ld      9,x@got@tprel(2)
+	add     9,9,x@tls
+	ld      9,.LC2@toc(2)
+	add     9,9,.LC2@tls
+	addi    9,13,x1@tprel
+	addis   9,13,x2@tprel@ha
+	addi    9,9,x2@tprel@l
 EOF
 dnl
 if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
@@ -51,8 +50,6 @@ else
   libc_cv_powerpc64_tls=no
 fi
 rm -f conftest*])
-if test $libc_cv_powerpc64_tls = yes; then
-  AC_DEFINE(HAVE_TLS_SUPPORT)
+if test $libc_cv_powerpc64_tls = no; then
+  AC_MSG_ERROR([the assembler must support TLS])
 fi
-fi
-
diff --git a/sysdeps/s390/s390-32/elf/configure b/sysdeps/s390/s390-32/elf/configure
index 72abdbdd78..3012328834 100644
--- a/sysdeps/s390/s390-32/elf/configure
+++ b/sysdeps/s390/s390-32/elf/configure
@@ -1,12 +1,93 @@
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
 # This file is generated from configure.in by Autoconf.  DO NOT EDIT!
  # Local configure fragment for sysdeps/s390/elf.
 
-if test "$usetls" != no; then
 # Check for support of thread-local storage handling in assembler and
 # linker.
-{ $as_echo "$as_me:$LINENO: checking for s390 TLS support" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for s390 TLS support" >&5
 $as_echo_n "checking for s390 TLS support... " >&6; }
-if test "${libc_cv_390_tls+set}" = set; then
+if ${libc_cv_390_tls+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat > conftest.S <<\EOF
@@ -25,28 +106,22 @@ foo:	.long	25
 	bas	%r14,0(%r1,%r13):tls_ldcall:foo
 EOF
 if { ac_try='${CC-cc} -S $CFLAGS conftest.S 1>&5'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
   libc_cv_390_tls=yes
 else
   libc_cv_390_tls=no
 fi
 rm -f conftest*
 fi
-{ $as_echo "$as_me:$LINENO: result: $libc_cv_390_tls" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_390_tls" >&5
 $as_echo "$libc_cv_390_tls" >&6; }
-if test $libc_cv_390_tls = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_TLS_SUPPORT 1
-_ACEOF
-
-fi
+if test $libc_cv_390_tls = no; then
+  as_fn_error $? "the assembler must support TLS" "$LINENO" 5
 fi
 
-cat >>confdefs.h <<\_ACEOF
-#define PI_STATIC_AND_HIDDEN 1
-_ACEOF
+$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
 
diff --git a/sysdeps/s390/s390-32/elf/configure.in b/sysdeps/s390/s390-32/elf/configure.in
index fcf9329995..d1f40a375a 100644
--- a/sysdeps/s390/s390-32/elf/configure.in
+++ b/sysdeps/s390/s390-32/elf/configure.in
@@ -1,7 +1,6 @@
 GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
 # Local configure fragment for sysdeps/s390/elf.
 
-if test "$usetls" != no; then
 # Check for support of thread-local storage handling in assembler and
 # linker.
 AC_CACHE_CHECK(for s390 TLS support, libc_cv_390_tls, [dnl
@@ -27,9 +26,8 @@ else
   libc_cv_390_tls=no
 fi
 rm -f conftest*])
-if test $libc_cv_390_tls = yes; then
-  AC_DEFINE(HAVE_TLS_SUPPORT)
-fi
+if test $libc_cv_390_tls = no; then
+  AC_MSG_ERROR([the assembler must support TLS])
 fi
 
 dnl It is always possible to access static and hidden symbols in an
diff --git a/sysdeps/s390/s390-64/elf/configure b/sysdeps/s390/s390-64/elf/configure
index 3851674c7c..e81655e0d0 100644
--- a/sysdeps/s390/s390-64/elf/configure
+++ b/sysdeps/s390/s390-64/elf/configure
@@ -1,12 +1,93 @@
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
 # This file is generated from configure.in by Autoconf.  DO NOT EDIT!
  # Local configure fragment for sysdeps/s390/elf.
 
-if test "$usetls" != no; then
 # Check for support of thread-local storage handling in assembler and
 # linker.
-{ $as_echo "$as_me:$LINENO: checking for s390 TLS support" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for s390 TLS support" >&5
 $as_echo_n "checking for s390 TLS support... " >&6; }
-if test "${libc_cv_390_tls+set}" = set; then
+if ${libc_cv_390_tls+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat > conftest.S <<\EOF
@@ -25,28 +106,22 @@ foo:	.long	25
 	brasl	%r14,__tls_get_offset@plt:tls_ldcall:foo
 EOF
 if { ac_try='${CC-cc} -S $CFLAGS conftest.S 1>&5'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
   libc_cv_390_tls=yes
 else
   libc_cv_390_tls=no
 fi
 rm -f conftest*
 fi
-{ $as_echo "$as_me:$LINENO: result: $libc_cv_390_tls" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_390_tls" >&5
 $as_echo "$libc_cv_390_tls" >&6; }
-if test $libc_cv_390_tls = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_TLS_SUPPORT 1
-_ACEOF
-
-fi
+if test $libc_cv_390_tls = no; then
+  as_fn_error $? "the assembler must support TLS" "$LINENO" 5
 fi
 
-cat >>confdefs.h <<\_ACEOF
-#define PI_STATIC_AND_HIDDEN 1
-_ACEOF
+$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
 
diff --git a/sysdeps/s390/s390-64/elf/configure.in b/sysdeps/s390/s390-64/elf/configure.in
index ac953fcff3..007e3838a4 100644
--- a/sysdeps/s390/s390-64/elf/configure.in
+++ b/sysdeps/s390/s390-64/elf/configure.in
@@ -1,7 +1,6 @@
 GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
 # Local configure fragment for sysdeps/s390/elf.
 
-if test "$usetls" != no; then
 # Check for support of thread-local storage handling in assembler and
 # linker.
 AC_CACHE_CHECK(for s390 TLS support, libc_cv_390_tls, [dnl
@@ -27,9 +26,8 @@ else
   libc_cv_390_tls=no
 fi
 rm -f conftest*])
-if test $libc_cv_390_tls = yes; then
-  AC_DEFINE(HAVE_TLS_SUPPORT)
-fi
+if test $libc_cv_390_tls = no; then
+  AC_MSG_ERROR([the assembler must support TLS])
 fi
 
 dnl It is always possible to access static and hidden symbols in an
diff --git a/sysdeps/sh/elf/configure b/sysdeps/sh/elf/configure
index 95efaca496..8235c3c01b 100644
--- a/sysdeps/sh/elf/configure
+++ b/sysdeps/sh/elf/configure
@@ -1,12 +1,93 @@
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
 # This file is generated from configure.in by Autoconf.  DO NOT EDIT!
  # Local configure fragment for sysdeps/sh/elf.
 
-if test "$usetls" != no; then
 # Check for support of thread-local storage handling in assembler and
 # linker.
-{ $as_echo "$as_me:$LINENO: checking for SH TLS support" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SH TLS support" >&5
 $as_echo_n "checking for SH TLS support... " >&6; }
-if test "${libc_cv_sh_tls+set}" = set; then
+if ${libc_cv_sh_tls+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat > conftest.S <<\EOF
@@ -20,28 +101,22 @@ foo:	.long	25
 	.long	foo@TPOFF
 EOF
 if { ac_try='${CC-cc} -S $CFLAGS conftest.S 1>&5'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
   libc_cv_sh_tls=yes
 else
   libc_cv_sh_tls=no
 fi
 rm -f conftest*
 fi
-{ $as_echo "$as_me:$LINENO: result: $libc_cv_sh_tls" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_sh_tls" >&5
 $as_echo "$libc_cv_sh_tls" >&6; }
-if test $libc_cv_sh_tls = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_TLS_SUPPORT 1
-_ACEOF
-
-fi
+if test $libc_cv_sh_tls = no; then
+  as_fn_error $? "the assembler must support TLS" "$LINENO" 5
 fi
 
-cat >>confdefs.h <<\_ACEOF
-#define PI_STATIC_AND_HIDDEN 1
-_ACEOF
+$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
 
diff --git a/sysdeps/sh/elf/configure.in b/sysdeps/sh/elf/configure.in
index 42aca3f8ef..9c41a24f4f 100644
--- a/sysdeps/sh/elf/configure.in
+++ b/sysdeps/sh/elf/configure.in
@@ -1,7 +1,6 @@
 GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
 # Local configure fragment for sysdeps/sh/elf.
 
-if test "$usetls" != no; then
 # Check for support of thread-local storage handling in assembler and
 # linker.
 AC_CACHE_CHECK(for SH TLS support, libc_cv_sh_tls, [dnl
@@ -22,9 +21,8 @@ else
   libc_cv_sh_tls=no
 fi
 rm -f conftest*])
-if test $libc_cv_sh_tls = yes; then
-  AC_DEFINE(HAVE_TLS_SUPPORT)
-fi
+if test $libc_cv_sh_tls = no; then
+  AC_MSG_ERROR([the assembler must support TLS])
 fi
 
 dnl It is always possible to access static and hidden symbols in an
diff --git a/sysdeps/sparc/sparc32/elf/configure b/sysdeps/sparc/sparc32/elf/configure
index 37522c3454..e684b2d539 100644
--- a/sysdeps/sparc/sparc32/elf/configure
+++ b/sysdeps/sparc/sparc32/elf/configure
@@ -1,11 +1,92 @@
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
 # This file is generated from configure.in by Autoconf.  DO NOT EDIT!
  # Local configure fragment for sysdeps/sparc/sparc32/elf.
 
-if test "$usetls" != no; then
 # Check for support of thread-local storage handling in assembler and linker.
-{ $as_echo "$as_me:$LINENO: checking for sparc32 TLS support" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sparc32 TLS support" >&5
 $as_echo_n "checking for sparc32 TLS support... " >&6; }
-if test "${libc_cv_sparc32_tls+set}" = set; then
+if ${libc_cv_sparc32_tls+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat > conftest.s <<\EOF
@@ -35,42 +116,38 @@ baz:	sethi	%tgd_hi22(foo), %l1
 	xor	%l1, %tle_lox10(foo), %l1
 EOF
 if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
   libc_cv_sparc32_tls=yes
 else
   libc_cv_sparc32_tls=no
 fi
 rm -f conftest*
 fi
-{ $as_echo "$as_me:$LINENO: result: $libc_cv_sparc32_tls" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_sparc32_tls" >&5
 $as_echo "$libc_cv_sparc32_tls" >&6; }
-if test $libc_cv_sparc32_tls = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_TLS_SUPPORT 1
-_ACEOF
-
-fi
+if test $libc_cv_sparc32_tls = no; then
+  as_fn_error $? "the assembler must support TLS" "$LINENO" 5
 fi
 
 # Check for broken WDISP22 in the linker.
-{ $as_echo "$as_me:$LINENO: checking for sparc32 ld WDISP22 handling" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sparc32 ld WDISP22 handling" >&5
 $as_echo_n "checking for sparc32 ld WDISP22 handling... " >&6; }
-if test "${libc_cv_sparc32_wdisp22+set}" = set; then
+if ${libc_cv_sparc32_wdisp22+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   echo 'bne foo; nop' > conftest1.s
 echo '.globl foo; .hidden foo; foo: nop' > conftest2.s
 libc_cv_sparc32_wdisp22=unknown
 if { ac_try='${CC-cc} -nostdlib -shared $CFLAGS conftest1.s conftest2.s -o conftest.so 1>&5'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
   if readelf -r conftest.so | grep -q R_SPARC_WDISP22; then
     libc_cv_sparc32_wdisp22=broken
   else
@@ -79,11 +156,9 @@ if { ac_try='${CC-cc} -nostdlib -shared $CFLAGS conftest1.s conftest2.s -o conft
 fi
 rm -f conftest*
 fi
-{ $as_echo "$as_me:$LINENO: result: $libc_cv_sparc32_wdisp22" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_sparc32_wdisp22" >&5
 $as_echo "$libc_cv_sparc32_wdisp22" >&6; }
 if test $libc_cv_sparc32_wdisp22 != ok; then
-  cat >>confdefs.h <<\_ACEOF
-#define BROKEN_SPARC_WDISP22 1
-_ACEOF
+  $as_echo "#define BROKEN_SPARC_WDISP22 1" >>confdefs.h
 
 fi
diff --git a/sysdeps/sparc/sparc32/elf/configure.in b/sysdeps/sparc/sparc32/elf/configure.in
index aa75e0bfaa..d1593a6394 100644
--- a/sysdeps/sparc/sparc32/elf/configure.in
+++ b/sysdeps/sparc/sparc32/elf/configure.in
@@ -1,7 +1,6 @@
 GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
 # Local configure fragment for sysdeps/sparc/sparc32/elf.
 
-if test "$usetls" != no; then
 # Check for support of thread-local storage handling in assembler and linker.
 AC_CACHE_CHECK(for sparc32 TLS support, libc_cv_sparc32_tls, [dnl
 changequote(,)dnl
@@ -39,9 +38,8 @@ else
   libc_cv_sparc32_tls=no
 fi
 rm -f conftest*])
-if test $libc_cv_sparc32_tls = yes; then
-  AC_DEFINE(HAVE_TLS_SUPPORT)
-fi
+if test $libc_cv_sparc32_tls = no; then
+  AC_MSG_ERROR([the assembler must support TLS])
 fi
 
 # Check for broken WDISP22 in the linker.
diff --git a/sysdeps/sparc/sparc64/elf/configure b/sysdeps/sparc/sparc64/elf/configure
index f213438aa5..354afae4d8 100644
--- a/sysdeps/sparc/sparc64/elf/configure
+++ b/sysdeps/sparc/sparc64/elf/configure
@@ -1,11 +1,92 @@
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
 # This file is generated from configure.in by Autoconf.  DO NOT EDIT!
  # Local configure fragment for sysdeps/sparc/sparc64/elf.
 
-if test "$usetls" != no; then
 # Check for support of thread-local storage handling in assembler and linker.
-{ $as_echo "$as_me:$LINENO: checking for sparc64 TLS support" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sparc64 TLS support" >&5
 $as_echo_n "checking for sparc64 TLS support... " >&6; }
-if test "${libc_cv_sparc64_tls+set}" = set; then
+if ${libc_cv_sparc64_tls+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat > conftest.s <<\EOF
@@ -36,42 +117,38 @@ _start:	sethi	%tgd_hi22(foo), %l1
 	xor	%l1, %tle_lox10(foo), %l1
 EOF
 if { ac_try='${CC-cc} -o conftest.bin $CFLAGS $LDFLAGS conftest.s -nostdlib -nostartfiles 1>&5'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
   libc_cv_sparc64_tls=yes
 else
   libc_cv_sparc64_tls=no
 fi
 rm -f conftest*
 fi
-{ $as_echo "$as_me:$LINENO: result: $libc_cv_sparc64_tls" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_sparc64_tls" >&5
 $as_echo "$libc_cv_sparc64_tls" >&6; }
-if test $libc_cv_sparc64_tls = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_TLS_SUPPORT 1
-_ACEOF
-
-fi
+if test $libc_cv_sparc64_tls = no; then
+  as_fn_error $? "the assembler must support TLS" "$LINENO" 5
 fi
 
 # Check for broken WDISP22 in the linker.
-{ $as_echo "$as_me:$LINENO: checking for sparc64 ld WDISP22 handling" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sparc64 ld WDISP22 handling" >&5
 $as_echo_n "checking for sparc64 ld WDISP22 handling... " >&6; }
-if test "${libc_cv_sparc64_wdisp22+set}" = set; then
+if ${libc_cv_sparc64_wdisp22+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   echo 'bne foo; nop' > conftest1.s
 echo '.globl foo; .hidden foo; foo: nop' > conftest2.s
 libc_cv_sparc64_wdisp22=unknown
 if { ac_try='${CC-cc} -nostdlib -shared $CFLAGS conftest1.s conftest2.s -o conftest.so 1>&5'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
   if readelf -r conftest.so | grep -q R_SPARC_WDISP22; then
     libc_cv_sparc64_wdisp22=broken
   else
@@ -80,11 +157,9 @@ if { ac_try='${CC-cc} -nostdlib -shared $CFLAGS conftest1.s conftest2.s -o conft
 fi
 rm -f conftest*
 fi
-{ $as_echo "$as_me:$LINENO: result: $libc_cv_sparc64_wdisp22" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_sparc64_wdisp22" >&5
 $as_echo "$libc_cv_sparc64_wdisp22" >&6; }
 if test $libc_cv_sparc64_wdisp22 != ok; then
-  cat >>confdefs.h <<\_ACEOF
-#define BROKEN_SPARC_WDISP22 1
-_ACEOF
+  $as_echo "#define BROKEN_SPARC_WDISP22 1" >>confdefs.h
 
 fi
diff --git a/sysdeps/sparc/sparc64/elf/configure.in b/sysdeps/sparc/sparc64/elf/configure.in
index 4f75978358..b56b275a16 100644
--- a/sysdeps/sparc/sparc64/elf/configure.in
+++ b/sysdeps/sparc/sparc64/elf/configure.in
@@ -1,7 +1,6 @@
 GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
 # Local configure fragment for sysdeps/sparc/sparc64/elf.
 
-if test "$usetls" != no; then
 # Check for support of thread-local storage handling in assembler and linker.
 AC_CACHE_CHECK(for sparc64 TLS support, libc_cv_sparc64_tls, [dnl
 changequote(,)dnl
@@ -40,9 +39,8 @@ else
   libc_cv_sparc64_tls=no
 fi
 rm -f conftest*])
-if test $libc_cv_sparc64_tls = yes; then
-  AC_DEFINE(HAVE_TLS_SUPPORT)
-fi
+if test $libc_cv_sparc64_tls = no; then
+  AC_MSG_ERROR([the assembler must support TLS])
 fi
 
 # Check for broken WDISP22 in the linker.
diff --git a/sysdeps/x86_64/elf/configure b/sysdeps/x86_64/elf/configure
index c3c8f561fe..7f2b313bc4 100644
--- a/sysdeps/x86_64/elf/configure
+++ b/sysdeps/x86_64/elf/configure
@@ -83,7 +83,6 @@ $as_echo X/"$0" |
 # This file is generated from configure.in by Autoconf.  DO NOT EDIT!
  # Local configure fragment for sysdeps/x86_64/elf.
 
-if test "$usetls" != no; then
 # Check for support of thread-local storage handling in assembler and linker.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86-64 TLS support" >&5
 $as_echo_n "checking for x86-64 TLS support... " >&6; }
@@ -117,10 +116,8 @@ rm -f conftest*
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_x86_64_tls" >&5
 $as_echo "$libc_cv_x86_64_tls" >&6; }
-if test $libc_cv_x86_64_tls = yes; then
-  $as_echo "#define HAVE_TLS_SUPPORT 1" >>confdefs.h
-
-fi
+if test $libc_cv_x86_64_tls = no; then
+  as_fn_error $? "the assembler must support TLS" "$LINENO" 5
 fi
 
 $as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
diff --git a/sysdeps/x86_64/elf/configure.in b/sysdeps/x86_64/elf/configure.in
index 4a41290f11..c53328b4c9 100644
--- a/sysdeps/x86_64/elf/configure.in
+++ b/sysdeps/x86_64/elf/configure.in
@@ -1,7 +1,6 @@
 GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
 # Local configure fragment for sysdeps/x86_64/elf.
 
-if test "$usetls" != no; then
 # Check for support of thread-local storage handling in assembler and linker.
 AC_CACHE_CHECK(for x86-64 TLS support, libc_cv_x86_64_tls, [dnl
 cat > conftest.s <<\EOF
@@ -24,9 +23,8 @@ else
   libc_cv_x86_64_tls=no
 fi
 rm -f conftest*])
-if test $libc_cv_x86_64_tls = yes; then
-  AC_DEFINE(HAVE_TLS_SUPPORT)
-fi
+if test $libc_cv_x86_64_tls = no; then
+  AC_MSG_ERROR([the assembler must support TLS])
 fi
 
 dnl It is always possible to access static and hidden symbols in an