From: Richard Henderson Date: Wed, 8 Feb 2012 18:06:06 +0000 (-0800) Subject: alpha: Remove HAVE_TLS_SUPPORT and HAVE___THREAD tests. X-Git-Tag: glibc-2.16-ports-before-merge~290 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f81b9186fff072e96954399a479bf2eb6b32a228;p=thirdparty%2Fglibc.git alpha: Remove HAVE_TLS_SUPPORT and HAVE___THREAD tests. --- diff --git a/ChangeLog.alpha b/ChangeLog.alpha index b011d3ca338..9c304d77acc 100644 --- a/ChangeLog.alpha +++ b/ChangeLog.alpha @@ -1,3 +1,11 @@ +2012-02-08 Richard Henderson + + * 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 * sysdeps/alpha/backtrace.c: Use x86_64 version of backtrace.c. diff --git a/sysdeps/alpha/elf/configure b/sysdeps/alpha/elf/configure index 1d594dc7878..5da9875910b 100644 --- a/sysdeps/alpha/elf/configure +++ b/sysdeps/alpha/elf/configure @@ -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 diff --git a/sysdeps/alpha/elf/configure.in b/sysdeps/alpha/elf/configure.in index 3a479341e7f..75fff5374c3 100644 --- a/sysdeps/alpha/elf/configure.in +++ b/sysdeps/alpha/elf/configure.in @@ -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 diff --git a/sysdeps/alpha/nptl/tls.h b/sysdeps/alpha/nptl/tls.h index e77b1ffca94..887a4576a42 100644 --- a/sysdeps/alpha/nptl/tls.h +++ b/sysdeps/alpha/nptl/tls.h @@ -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 -#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 @@ -144,6 +132,8 @@ typedef struct #define THREAD_GSCOPE_WAIT() \ GL(dl_wait_lookup_done) () +#else /* __ASSEMBLER__ */ +# include #endif /* __ASSEMBLER__ */ #endif /* tls.h */ diff --git a/sysdeps/unix/alpha/sysdep.h b/sysdeps/unix/alpha/sysdep.h index d9009c15714..64add9e339c 100644 --- a/sysdeps/unix/alpha/sysdep.h +++ b/sysdeps/unix/alpha/sysdep.h @@ -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); \