]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
alpha: Remove HAVE_TLS_SUPPORT and HAVE___THREAD tests.
authorRichard Henderson <rth@twiddle.net>
Wed, 8 Feb 2012 18:06:06 +0000 (10:06 -0800)
committerRichard Henderson <rth@twiddle.net>
Thu, 9 Feb 2012 01:01:24 +0000 (17:01 -0800)
ChangeLog.alpha
sysdeps/alpha/elf/configure
sysdeps/alpha/elf/configure.in
sysdeps/alpha/nptl/tls.h
sysdeps/unix/alpha/sysdep.h

index b011d3ca338453585694ab03e00f672f366380ff..9c304d77acc9918e4aeb87a2d03b7df86f223165 100644 (file)
@@ -1,3 +1,11 @@
+2012-02-08  Richard Henderson  <rth@twiddle.net>
+
+       * sysdeps/alpha/nptl/tls.h: Don't test HAVE_TLS_SUPPORT.
+       * sysdeps/unix/alpha/sysdep.h: Don't test HAVE___THREAD.
+       * sysdeps/alpha/elf/configure.in (libc_cv_alpha_tls): Error out if
+       the test fails.  Don't set HAVE_TLS_SUPPORT.
+       * sysdeps/alpha/elf/configure: Rebuild.
+
 2012-01-07  Joseph Myers  <joseph@codesourcery.com>
 
        * sysdeps/alpha/backtrace.c: Use x86_64 version of backtrace.c.
index 1d594dc7878b37fdf4281ebdc3c93006a33c313e..5da9875910b434b4f42e8ee4a27bed2756b69bc4 100644 (file)
@@ -1,12 +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/alpha/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 Alpha TLS support" >&5
+# Check for support of thread-local storage handling in assembler and linker.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Alpha TLS support" >&5
 $as_echo_n "checking for Alpha TLS support... " >&6; }
-if test "${libc_cv_alpha_tls+set}" = set; then
+if ${libc_cv_alpha_tls+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat > conftest.s <<\EOF
@@ -44,30 +124,26 @@ baz:
        lda     $16, n($31)                     !tprel
 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_alpha_tls=yes
 else
   libc_cv_alpha_tls=no
 fi
 rm -f conftest*
 fi
-{ $as_echo "$as_me:$LINENO: result: $libc_cv_alpha_tls" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_alpha_tls" >&5
 $as_echo "$libc_cv_alpha_tls" >&6; }
-if test $libc_cv_alpha_tls = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_TLS_SUPPORT 1
-_ACEOF
-
-fi
+if test $libc_cv_alpha_tls = no; then
+  as_fn_error $? "the assembler must support TLS" "$LINENO" 5
 fi
 
-{ $as_echo "$as_me:$LINENO: checking for GP relative module local relocs" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GP relative module local relocs" >&5
 $as_echo_n "checking for GP relative module local relocs... " >&6; }
-if test "${libc_cv_alpha_hidden_gprel+set}" = set; then
+if ${libc_cv_alpha_hidden_gprel+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat > conftest.c <<\EOF
@@ -78,11 +154,11 @@ EOF
 
 libc_cv_alpha_hidden_gprel=no
 if { ac_try='${CC-cc} -S $CFLAGS -O2 -fpic conftest.c 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 grep -q 'bar.*!gprel' conftest.s \
      && grep -q 'baz.*!gprel' conftest.s \
      && ! grep -q 'bar.*!literal' conftest.s \
@@ -92,11 +168,9 @@ if { ac_try='${CC-cc} -S $CFLAGS -O2 -fpic conftest.c 1>&5'
 fi
 rm -f conftest*
 fi
-{ $as_echo "$as_me:$LINENO: result: $libc_cv_alpha_hidden_gprel" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_alpha_hidden_gprel" >&5
 $as_echo "$libc_cv_alpha_hidden_gprel" >&6; }
 if test $libc_cv_alpha_hidden_gprel = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define PI_STATIC_AND_HIDDEN 1
-_ACEOF
+  $as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
 
 fi
index 3a479341e7f3321507ae001e7fe27936c0a21760..75fff5374c32364e584e9983bab6a75cf7fb1846 100644 (file)
@@ -1,9 +1,7 @@
 GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
 # Local configure fragment for sysdeps/alpha/elf.
 
-if test "$usetls" != no; then
-# Check for support of thread-local storage handling in assembler and
-# linker.
+# Check for support of thread-local storage handling in assembler and linker.
 AC_CACHE_CHECK(for Alpha TLS support, libc_cv_alpha_tls, [dnl
 cat > conftest.s <<\EOF
        .section ".tdata", "awT", @progbits
@@ -46,9 +44,8 @@ else
   libc_cv_alpha_tls=no
 fi
 rm -f conftest*])
-if test $libc_cv_alpha_tls = yes; then
-  AC_DEFINE(HAVE_TLS_SUPPORT)
-fi
+if test $libc_cv_alpha_tls = no; then
+  AC_MSG_ERROR([the assembler must support TLS])
 fi
 
 AC_CACHE_CHECK(for GP relative module local relocs, libc_cv_alpha_hidden_gprel, [dnl
index e77b1ffca94fce278c579c1c6e3127282d5ccf70..887a4576a4200e06e3d59a6486e6cbf0f340beb0 100644 (file)
@@ -1,5 +1,5 @@
 /* Definition for thread-local data handling.  NPTL/Alpha version.
-   Copyright (C) 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2005, 2006, 2007, 2012 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
@@ -38,18 +38,6 @@ typedef union dtv
   } pointer;
 } dtv_t;
 
-#else /* __ASSEMBLER__ */
-# 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.  */
 # include <sysdep.h>
 
@@ -144,6 +132,8 @@ typedef struct
 #define THREAD_GSCOPE_WAIT() \
   GL(dl_wait_lookup_done) ()
 
+#else /* __ASSEMBLER__ */
+# include <tcb-offsets.h>
 #endif /* __ASSEMBLER__ */
 
 #endif /* tls.h */
index d9009c15714543f842a897f20c34985044d5a770..64add9e339c590596b8d2b1898a0da1c28a48f28 100644 (file)
@@ -200,39 +200,19 @@ __LABEL(name)                                             \
        "$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8", \
        "$22", "$23", "$24", "$25", "$27", "$28", "memory"
 
-/* If TLS is in use, we have a conflict between the PAL_rduniq primitive,
-   as modeled within GCC, and explicit use of the R0 register.  If we use
-   the register via the asm, the scheduler may place the PAL_rduniq insn
-   before we've copied the data from R0 into _sc_ret.  If this happens
-   we'll get a reload abort, since R0 is live at the same time it is
-   needed for the PAL_rduniq.
-
-   Solve this by using the "v" constraint instead of an asm for the syscall
-   output.  We don't do this unconditionally to allow compilation with
-   older compilers.  */
-
-#ifdef HAVE___THREAD
-#define inline_syscall_r0_asm
-#define inline_syscall_r0_out_constraint       "=v"
-#else
-#define inline_syscall_r0_asm                  __asm__("$0")
-#define inline_syscall_r0_out_constraint       "=r"
-#endif
-
 /* It is moderately important optimization-wise to limit the lifetime
    of the hard-register variables as much as possible.  Thus we copy
    in/out as close to the asm as possible.  */
 
 #define inline_syscall0(name, args...)                         \
 {                                                              \
-       register long _sc_0 inline_syscall_r0_asm;              \
+       register long _sc_0;                                    \
        register long _sc_19 __asm__("$19");                    \
                                                                \
        _sc_0 = name;                                           \
        __asm__ __volatile__                                    \
          ("callsys # %0 %1 <= %2"                              \
-          : inline_syscall_r0_out_constraint (_sc_0),          \
-            "=r"(_sc_19)                                       \
+          : "=v"(_sc_0), "=r"(_sc_19)                          \
           : "0"(_sc_0)                                         \
           : inline_syscall_clobbers,                           \
             "$16", "$17", "$18", "$20", "$21");                \
@@ -241,7 +221,7 @@ __LABEL(name)                                               \
 
 #define inline_syscall1(name,arg1)                             \
 {                                                              \
-       register long _sc_0 inline_syscall_r0_asm;              \
+       register long _sc_0;                                    \
        register long _sc_16 __asm__("$16");                    \
        register long _sc_19 __asm__("$19");                    \
        register long _tmp_16 = (long) (arg1);                  \
@@ -250,8 +230,7 @@ __LABEL(name)                                               \
        _sc_16 = _tmp_16;                                       \
        __asm__ __volatile__                                    \
          ("callsys # %0 %1 <= %2 %3"                           \
-          : inline_syscall_r0_out_constraint (_sc_0),          \
-            "=r"(_sc_19), "=r"(_sc_16)                         \
+          : "=v"(_sc_0), "=r"(_sc_19), "=r"(_sc_16)            \
           : "0"(_sc_0), "2"(_sc_16)                            \
           : inline_syscall_clobbers,                           \
             "$17", "$18", "$20", "$21");                       \
@@ -260,7 +239,7 @@ __LABEL(name)                                               \
 
 #define inline_syscall2(name,arg1,arg2)                                \
 {                                                              \
-       register long _sc_0 inline_syscall_r0_asm;              \
+       register long _sc_0;                                    \
        register long _sc_16 __asm__("$16");                    \
        register long _sc_17 __asm__("$17");                    \
        register long _sc_19 __asm__("$19");                    \
@@ -272,8 +251,8 @@ __LABEL(name)                                               \
        _sc_17 = _tmp_17;                                       \
        __asm__ __volatile__                                    \
          ("callsys # %0 %1 <= %2 %3 %4"                        \
-          : inline_syscall_r0_out_constraint (_sc_0),          \
-            "=r"(_sc_19), "=r"(_sc_16), "=r"(_sc_17)           \
+          : "=v"(_sc_0), "=r"(_sc_19),                         \
+            "=r"(_sc_16), "=r"(_sc_17)                         \
           : "0"(_sc_0), "2"(_sc_16), "3"(_sc_17)               \
           : inline_syscall_clobbers,                           \
             "$18", "$20", "$21");                              \
@@ -282,7 +261,7 @@ __LABEL(name)                                               \
 
 #define inline_syscall3(name,arg1,arg2,arg3)                   \
 {                                                              \
-       register long _sc_0 inline_syscall_r0_asm;              \
+       register long _sc_0;                                    \
        register long _sc_16 __asm__("$16");                    \
        register long _sc_17 __asm__("$17");                    \
        register long _sc_18 __asm__("$18");                    \
@@ -297,9 +276,8 @@ __LABEL(name)                                               \
        _sc_18 = _tmp_18;                                       \
        __asm__ __volatile__                                    \
          ("callsys # %0 %1 <= %2 %3 %4 %5"                     \
-          : inline_syscall_r0_out_constraint (_sc_0),          \
-            "=r"(_sc_19), "=r"(_sc_16), "=r"(_sc_17),          \
-            "=r"(_sc_18)                                       \
+          : "=v"(_sc_0), "=r"(_sc_19), "=r"(_sc_16),           \
+            "=r"(_sc_17), "=r"(_sc_18)                         \
           : "0"(_sc_0), "2"(_sc_16), "3"(_sc_17),              \
             "4"(_sc_18)                                        \
           : inline_syscall_clobbers, "$20", "$21");            \
@@ -308,7 +286,7 @@ __LABEL(name)                                               \
 
 #define inline_syscall4(name,arg1,arg2,arg3,arg4)              \
 {                                                              \
-       register long _sc_0 inline_syscall_r0_asm;              \
+       register long _sc_0;                                    \
        register long _sc_16 __asm__("$16");                    \
        register long _sc_17 __asm__("$17");                    \
        register long _sc_18 __asm__("$18");                    \
@@ -325,9 +303,8 @@ __LABEL(name)                                               \
        _sc_19 = _tmp_19;                                       \
        __asm__ __volatile__                                    \
          ("callsys # %0 %1 <= %2 %3 %4 %5 %6"                  \
-          : inline_syscall_r0_out_constraint (_sc_0),          \
-            "=r"(_sc_19), "=r"(_sc_16), "=r"(_sc_17),          \
-            "=r"(_sc_18)                                       \
+          : "=v"(_sc_0), "=r"(_sc_19), "=r"(_sc_16),           \
+            "=r"(_sc_17), "=r"(_sc_18)                         \
           : "0"(_sc_0), "2"(_sc_16), "3"(_sc_17),              \
             "4"(_sc_18), "1"(_sc_19)                           \
           : inline_syscall_clobbers, "$20", "$21");            \
@@ -336,7 +313,7 @@ __LABEL(name)                                               \
 
 #define inline_syscall5(name,arg1,arg2,arg3,arg4,arg5)         \
 {                                                              \
-       register long _sc_0 inline_syscall_r0_asm;              \
+       register long _sc_0;                                    \
        register long _sc_16 __asm__("$16");                    \
        register long _sc_17 __asm__("$17");                    \
        register long _sc_18 __asm__("$18");                    \
@@ -356,9 +333,8 @@ __LABEL(name)                                               \
        _sc_20 = _tmp_20;                                       \
        __asm__ __volatile__                                    \
          ("callsys # %0 %1 <= %2 %3 %4 %5 %6 %7"               \
-          : inline_syscall_r0_out_constraint (_sc_0),          \
-            "=r"(_sc_19), "=r"(_sc_16), "=r"(_sc_17),          \
-            "=r"(_sc_18), "=r"(_sc_20)                         \
+          : "=v"(_sc_0), "=r"(_sc_19), "=r"(_sc_16),           \
+            "=r"(_sc_17), "=r"(_sc_18), "=r"(_sc_20)           \
           : "0"(_sc_0), "2"(_sc_16), "3"(_sc_17),              \
             "4"(_sc_18), "1"(_sc_19), "5"(_sc_20)              \
           : inline_syscall_clobbers, "$21");                   \
@@ -367,7 +343,7 @@ __LABEL(name)                                               \
 
 #define inline_syscall6(name,arg1,arg2,arg3,arg4,arg5,arg6)    \
 {                                                              \
-       register long _sc_0 inline_syscall_r0_asm;              \
+       register long _sc_0;                                    \
        register long _sc_16 __asm__("$16");                    \
        register long _sc_17 __asm__("$17");                    \
        register long _sc_18 __asm__("$18");                    \
@@ -390,9 +366,9 @@ __LABEL(name)                                               \
        _sc_21 = _tmp_21;                                       \
        __asm__ __volatile__                                    \
          ("callsys # %0 %1 <= %2 %3 %4 %5 %6 %7 %8"            \
-          : inline_syscall_r0_out_constraint (_sc_0),          \
-            "=r"(_sc_19), "=r"(_sc_16), "=r"(_sc_17),          \
-            "=r"(_sc_18), "=r"(_sc_20), "=r"(_sc_21)           \
+          : "=v"(_sc_0), "=r"(_sc_19), "=r"(_sc_16),           \
+            "=r"(_sc_17), "=r"(_sc_18), "=r"(_sc_20),          \
+            "=r"(_sc_21)                                       \
           : "0"(_sc_0), "2"(_sc_16), "3"(_sc_17), "4"(_sc_18), \
             "1"(_sc_19), "5"(_sc_20), "6"(_sc_21)              \
           : inline_syscall_clobbers);                          \