[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commits] r20150 - in /fsf/trunk/libc: ./ elf/ include/ ports/ ports/sysdeps/alpha/ ports/sysdeps/alpha/fpu/ ports/sysdeps/mips/bits/ ...



Author: eglibc
Date: Wed Aug 15 00:01:47 2012
New Revision: 20150

Log:
Import glibc-mainline for 2012-08-15

Modified:
    fsf/trunk/libc/ChangeLog
    fsf/trunk/libc/NEWS
    fsf/trunk/libc/elf/dl-lookup.c
    fsf/trunk/libc/elf/dl-open.c
    fsf/trunk/libc/include/atomic.h
    fsf/trunk/libc/ports/ChangeLog.alpha
    fsf/trunk/libc/ports/ChangeLog.ia64
    fsf/trunk/libc/ports/ChangeLog.mips
    fsf/trunk/libc/ports/ChangeLog.tile
    fsf/trunk/libc/ports/sysdeps/alpha/configure
    fsf/trunk/libc/ports/sysdeps/alpha/configure.in
    fsf/trunk/libc/ports/sysdeps/alpha/fpu/s_nearbyint.c
    fsf/trunk/libc/ports/sysdeps/mips/bits/atomic.h
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/ia64/kernel-features.h
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/ia64/system.c
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/tile/kernel-features.h
    fsf/trunk/libc/sysdeps/i386/fpu/libm-test-ulps
    fsf/trunk/libc/sysdeps/unix/sysv/linux/kernel-features.h
    fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/system.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/system.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/system.c

Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Wed Aug 15 00:01:47 2012
@@ -1,3 +1,29 @@
+2012-08-14  Roland McGrath  <roland@xxxxxxxxxxxxx>
+
+	* elf/dl-open.c: Include <atomic.h>.
+	* elf/dl-lookup.c: Likewise.
+
+2012-08-14  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/kernel-features.h
+	(__ASSUME_CLONE_THREAD_FLAGS): Remove.
+	* sysdeps/unix/sysv/linux/s390/system.c (FORK): Define
+	unconditionally.
+	* sysdeps/unix/sysv/linux/sparc/system.c (FORK): Define
+	unconditionally.
+	* sysdeps/unix/sysv/linux/system.c [!FORK] (FORK): Do not
+	condition on __ASSUME_CLONE_THREAD_FLAGS.
+
+2012-08-14  Andreas Jaeger  <aj@xxxxxxx>
+
+	* sysdeps/i386/fpu/libm-test-ulps: Update.
+
+2012-08-13  Maxim Kuvyrkov  <maxim@xxxxxxxxxxxxxxxx>
+
+	* include/atomic.h (atomic_exchange_and_add): Split into ...
+	(atomic_exchange_and_add_acq, atomic_exchange_and_add_rel): ... these.
+	New atomic macros.
+
 2012-08-13  Markus Trippelsdorf  <markus@xxxxxxxxxxxxxxx>
 
 	* sysdeps/x86_64/fpu/libm-test-ulps: Update.

Modified: fsf/trunk/libc/NEWS
==============================================================================
--- fsf/trunk/libc/NEWS (original)
+++ fsf/trunk/libc/NEWS Wed Aug 15 00:01:47 2012
@@ -9,8 +9,9 @@
 
 * The following bugs are resolved with this release:
 
-  6778, 6808, 13717, 13939, 14042, 14166, 14150, 14151, 14154, 14157, 14173,
-  14283, 14298, 14307, 14328, 14331, 14336, 14337, 14347, 14349
+  6778, 6808, 13717, 13939, 14042, 14166, 14150, 14151, 14154, 14157, 14166,
+  14173, 14283, 14298, 14303, 14307, 14328, 14331, 14336, 14337, 14347,
+  14349
 
 * Support for STT_GNU_IFUNC symbols added for s390 and s390x.
   Optimized versions of memcpy, memset, and memcmp added for System z10 and

Modified: fsf/trunk/libc/elf/dl-lookup.c
==============================================================================
--- fsf/trunk/libc/elf/dl-lookup.c (original)
+++ fsf/trunk/libc/elf/dl-lookup.c Wed Aug 15 00:01:47 2012
@@ -1,5 +1,5 @@
 /* Look up a symbol in the loaded objects.
-   Copyright (C) 1995-2007, 2009, 2010, 2011 Free Software Foundation, Inc.
+   Copyright (C) 1995-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
@@ -27,6 +27,7 @@
 #include <sysdep-cancel.h>
 #include <bits/libc-lock.h>
 #include <tls.h>
+#include <atomic.h>
 
 #include <assert.h>
 

Modified: fsf/trunk/libc/elf/dl-open.c
==============================================================================
--- fsf/trunk/libc/elf/dl-open.c (original)
+++ fsf/trunk/libc/elf/dl-open.c Wed Aug 15 00:01:47 2012
@@ -1,5 +1,5 @@
 /* Load a shared object at runtime, relocate it, and run its initializer.
-   Copyright (C) 1996-2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 1996-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
@@ -33,6 +33,7 @@
 #include <sysdep-cancel.h>
 #include <tls.h>
 #include <stap-probe.h>
+#include <atomic.h>
 
 #include <dl-dst.h>
 

Modified: fsf/trunk/libc/include/atomic.h
==============================================================================
--- fsf/trunk/libc/include/atomic.h (original)
+++ fsf/trunk/libc/include/atomic.h Wed Aug 15 00:01:47 2012
@@ -198,8 +198,12 @@
 
 
 /* Add VALUE to *MEM and return the old value of *MEM.  */
-#ifndef atomic_exchange_and_add
-# define atomic_exchange_and_add(mem, value) \
+#ifndef atomic_exchange_and_add_acq
+# ifdef atomic_exchange_and_add
+#  define atomic_exchange_and_add_acq(mem, value) \
+  atomic_exchange_and_add (mem, value)
+# else
+#  define atomic_exchange_and_add_acq(mem, value) \
   ({ __typeof (*(mem)) __atg6_oldval;					      \
      __typeof (mem) __atg6_memp = (mem);				      \
      __typeof (*(mem)) __atg6_value = (value);				      \
@@ -213,8 +217,18 @@
 						   __atg6_oldval), 0));	      \
 									      \
      __atg6_oldval; })
-#endif
-
+# endif
+#endif
+
+#ifndef atomic_exchange_and_add_rel
+# define atomic_exchange_and_add_rel(mem, value) \
+  atomic_exchange_and_add_acq(mem, value)
+#endif
+
+#ifndef atomic_exchange_and_add
+# define atomic_exchange_and_add(mem, value) \
+  atomic_exchange_and_add_acq(mem, value)
+#endif
 
 #ifndef catomic_exchange_and_add
 # define catomic_exchange_and_add(mem, value) \

Modified: fsf/trunk/libc/ports/ChangeLog.alpha
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.alpha (original)
+++ fsf/trunk/libc/ports/ChangeLog.alpha Wed Aug 15 00:01:47 2012
@@ -1,9 +1,17 @@
+2012-08-13  Richard Henderson  <rth@xxxxxxxxxxx>
+
+	* configure.in: Don't test toolchain support for TLS or GPREL.
+	* configure: Rebuild.
+
+	* sysdeps/alpha/fpu/s_nearbyint.c (nearbyintl): Do compat
+	with GLIBC_2_1.
+
 2012-08-08  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	* sysdeps/unix/sysv/linux/alpha/kernel-features.h
 	(__ASSUME_TGKILL): Remove.
 
-2012-08-08  Richard Henderson  <rth@xxxxxxxxxx>
+2012-08-08  Richard Henderson  <rth@xxxxxxxxxxx>
 
 	* sysdeps/unix/sysv/linux/alpha/kernel-features.h
 	(__ASSUME_IEEE_RAISE_EXCEPTION): Remove.

Modified: fsf/trunk/libc/ports/ChangeLog.ia64
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.ia64 (original)
+++ fsf/trunk/libc/ports/ChangeLog.ia64 Wed Aug 15 00:01:47 2012
@@ -1,3 +1,10 @@
+2012-08-14  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/ia64/kernel-features.h
+	(__ASSUME_CLONE_THREAD_FLAGS): Remove.
+	* sysdeps/unix/sysv/linux/ia64/system.c (FORK): Define
+	unconditionally.
+
 2012-08-12  Mike Frysinger  <vapier@xxxxxxxxxx>
 
 	* sysdeps/ia64/configure.in: Remove TLS check.

Modified: fsf/trunk/libc/ports/ChangeLog.mips
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.mips (original)
+++ fsf/trunk/libc/ports/ChangeLog.mips Wed Aug 15 00:01:47 2012
@@ -1,3 +1,14 @@
+2012-08-13  Maxim Kuvyrkov  <maxim@xxxxxxxxxxxxxxxx>
+
+        [__GNUC_PREREQ (4, 8)]
+        (atomic_exchange_and_add): Split into ...
+        (atomic_exchange_and_add_acq, atomic_exchange_and_add_rel): ... these.
+        New atomic macros.
+        [!__GNUC_PREREQ (4, 8)]
+        (atomic_exchange_and_add): Split into ...
+        (atomic_exchange_and_add_acq, atomic_exchange_and_add_rel): ... these.
+        New atomic macros.
+
 2012-08-09  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	* sysdeps/unix/sysv/linux/mips/kernel-features.h

Modified: fsf/trunk/libc/ports/ChangeLog.tile
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.tile (original)
+++ fsf/trunk/libc/ports/ChangeLog.tile Wed Aug 15 00:01:47 2012
@@ -1,3 +1,8 @@
+2012-08-14  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/tile/kernel-features.h
+	(__ASSUME_CLONE_THREAD_FLAGS): Remove.
+
 2012-08-08  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	* sysdeps/unix/sysv/linux/tile/kernel-features.h

Modified: fsf/trunk/libc/ports/sysdeps/alpha/configure
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/alpha/configure (original)
+++ fsf/trunk/libc/ports/sysdeps/alpha/configure Wed Aug 15 00:01:47 2012
@@ -1,176 +1,6 @@
-
-# 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.
 
-# 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 ${libc_cv_alpha_tls+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.s <<\EOF
-	.section ".tdata", "awT", @progbits
-	.globl foo
-foo:	.quad	1
-	.section ".tbss", "awT", @nobits
-	.globl bar
-bar:	.skip	8
-	.text
-baz:
-	.set nomacro
-	ldq	$27, __tls_get_addr($29)	!literal!1
-	ldq	$16, a($29)			!tlsgd!1
-	jsr	$26, ($27), __tls_get_addr	!lituse_tlsgd!1
-
-	jsr	$26, ($27), __tls_get_addr	!lituse_tlsldm!2
-	ldq	$27, __tls_get_addr($29)	!literal!2
-	ldq	$16, b($29)			!tlsldm!2
-
-	ldq	$16, c($29)			!tlsgd
-	ldq	$16, d($29)			!tlsldm
-
-	ldq	$16, e($29)			!tlsgd!3
-	ldq	$16, f($29)			!tlsldm!4
-
-	ldq	$16, g($29)			!gotdtprel
-	ldah	$16, h($31)			!dtprelhi
-	lda	$16, i($16)			!dtprello
-	lda	$16, j($31)			!dtprel
-
-	ldq	$16, k($29)			!gottprel
-	ldah	$16, l($31)			!tprelhi
-	lda	$16, m($16)			!tprello
-	lda	$16, n($31)			!tprel
-EOF
-if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
-  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  $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:${as_lineno-$LINENO}: result: $libc_cv_alpha_tls" >&5
-$as_echo "$libc_cv_alpha_tls" >&6; }
-if test $libc_cv_alpha_tls = no; then
-  as_fn_error $? "the assembler must support TLS" "$LINENO" 5
-fi
-
-{ $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 ${libc_cv_alpha_hidden_gprel+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.c <<\EOF
-static volatile int bar;
-int baz __attribute__((visibility("hidden")));
-int f(void) { return bar + baz; }
-EOF
-
-libc_cv_alpha_hidden_gprel=no
-if { ac_try='${CC-cc} -S $CFLAGS -O2 -fpic conftest.c 1>&5'
-  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  $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 \
-     && ! grep -q 'baz.*!literal' conftest.s; then
-    libc_cv_alpha_hidden_gprel=yes
-  fi
-fi
-rm -f conftest*
-fi
-{ $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
-  $as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
-
-fi
+# With required gcc+binutils, we can always access static and hidden
+# symbols in a position independent way.
+$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h

Modified: fsf/trunk/libc/ports/sysdeps/alpha/configure.in
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/alpha/configure.in (original)
+++ fsf/trunk/libc/ports/sysdeps/alpha/configure.in Wed Aug 15 00:01:47 2012
@@ -1,71 +1,6 @@
 GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
 # Local configure fragment for sysdeps/alpha.
 
-# 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
-	.globl foo
-foo:	.quad	1
-	.section ".tbss", "awT", @nobits
-	.globl bar
-bar:	.skip	8
-	.text
-baz:
-	.set nomacro
-	ldq	$27, __tls_get_addr($29)	!literal!1
-	ldq	$16, a($29)			!tlsgd!1
-	jsr	$26, ($27), __tls_get_addr	!lituse_tlsgd!1
-
-	jsr	$26, ($27), __tls_get_addr	!lituse_tlsldm!2
-	ldq	$27, __tls_get_addr($29)	!literal!2
-	ldq	$16, b($29)			!tlsldm!2
-
-	ldq	$16, c($29)			!tlsgd
-	ldq	$16, d($29)			!tlsldm
-
-	ldq	$16, e($29)			!tlsgd!3
-	ldq	$16, f($29)			!tlsldm!4
-
-	ldq	$16, g($29)			!gotdtprel
-	ldah	$16, h($31)			!dtprelhi
-	lda	$16, i($16)			!dtprello
-	lda	$16, j($31)			!dtprel
-
-	ldq	$16, k($29)			!gottprel
-	ldah	$16, l($31)			!tprelhi
-	lda	$16, m($16)			!tprello
-	lda	$16, n($31)			!tprel
-EOF
-dnl
-if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
-  libc_cv_alpha_tls=yes
-else
-  libc_cv_alpha_tls=no
-fi
-rm -f conftest*])
-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
-cat > conftest.c <<\EOF
-static volatile int bar;
-int baz __attribute__((visibility("hidden")));
-int f(void) { return bar + baz; }
-EOF
-dnl
-
-libc_cv_alpha_hidden_gprel=no
-if AC_TRY_COMMAND(${CC-cc} -S $CFLAGS -O2 -fpic conftest.c 1>&AS_MESSAGE_LOG_FD); then
-  if grep -q 'bar.*!gprel' conftest.s \
-     && grep -q 'baz.*!gprel' conftest.s \
-     && ! grep -q 'bar.*!literal' conftest.s \
-     && ! grep -q 'baz.*!literal' conftest.s; then
-    libc_cv_alpha_hidden_gprel=yes
-  fi
-fi
-rm -f conftest*])
-if test $libc_cv_alpha_hidden_gprel = yes; then
-  AC_DEFINE(PI_STATIC_AND_HIDDEN)
-fi
+# With required gcc+binutils, we can always access static and hidden
+# symbols in a position independent way.
+AC_DEFINE(PI_STATIC_AND_HIDDEN)

Modified: fsf/trunk/libc/ports/sysdeps/alpha/fpu/s_nearbyint.c
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/alpha/fpu/s_nearbyint.c (original)
+++ fsf/trunk/libc/ports/sysdeps/alpha/fpu/s_nearbyint.c Wed Aug 15 00:01:47 2012
@@ -43,6 +43,6 @@
 strong_alias (__nearbyint, __nearbyintl)
 weak_alias (__nearbyint, nearbyintl)
 #endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __nearbyint, nearbyintl, GLIBC_2_0);
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __nearbyint, nearbyintl, GLIBC_2_1);
 #endif

Modified: fsf/trunk/libc/ports/sysdeps/mips/bits/atomic.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/mips/bits/atomic.h (original)
+++ fsf/trunk/libc/ports/sysdeps/mips/bits/atomic.h Wed Aug 15 00:01:47 2012
@@ -193,11 +193,13 @@
   __atomic_fetch_add (mem, value, model)
 # endif
 
-/* ??? Barrier semantics for atomic_exchange_and_add appear to be
-   undefined.  Use full barrier for now, as that's safe.  */
-# define atomic_exchange_and_add(mem, value)				\
+# define atomic_exchange_and_add_acq(mem, value)			\
   __atomic_val_bysize (__arch_exchange_and_add, int, mem, value,	\
-		       __ATOMIC_ACQ_REL)
+		       __ATOMIC_ACQUIRE)
+
+# define atomic_exchange_and_add_rel(mem, value)			\
+  __atomic_val_bysize (__arch_exchange_and_add, int, mem, value,	\
+		       __ATOMIC_RELEASE)
 #else /* !__GNUC_PREREQ (4, 8) */
 /* This implementation using inline assembly will be removed once glibc
    requires GCC 4.8 or later to build.  */
@@ -434,11 +436,13 @@
   __prev; })
 # endif
 
-/* ??? Barrier semantics for atomic_exchange_and_add appear to be 
-   undefined.  Use full barrier for now, as that's safe.  */
-# define atomic_exchange_and_add(mem, value) \
-  __atomic_val_bysize (__arch_exchange_and_add, int, mem, value,	      \
-		       MIPS_SYNC_STR, MIPS_SYNC_STR)
+# define atomic_exchange_and_add_acq(mem, value)			\
+  __atomic_val_bysize (__arch_exchange_and_add, int, mem, value,	\
+		       "", MIPS_SYNC_STR)
+
+# define atomic_exchange_and_add_rel(mem, value)			\
+  __atomic_val_bysize (__arch_exchange_and_add, int, mem, value,	\
+		       MIPS_SYNC_STR, "")
 #endif /* __GNUC_PREREQ (4, 8) */
 
 /* TODO: More atomic operations could be implemented efficiently; only the

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/ia64/kernel-features.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/ia64/kernel-features.h (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/ia64/kernel-features.h Wed Aug 15 00:01:47 2012
@@ -19,10 +19,6 @@
 
 #ifndef _KERNEL_FEATURES_H
 #define _KERNEL_FEATURES_H 1
-
-/* The late 2.5 kernels saw a lot of new CLONE_* flags.  Summarize
-   their availability with one define.  */
-#define __ASSUME_CLONE_THREAD_FLAGS   1
 
 /* The utimes syscall has been available for some architectures
    forever.  */

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/ia64/system.c
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/ia64/system.c (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/ia64/system.c Wed Aug 15 00:01:47 2012
@@ -25,10 +25,8 @@
    return.  It might still be in the kernel when the cancellation
    request comes.  Therefore we have to use the clone() calls ability
    to have the kernel write the PID into the user-level variable.  */
-#ifdef __ASSUME_CLONE_THREAD_FLAGS
-# define FORK() \
+#define FORK() \
   INLINE_SYSCALL (clone2, 6, CLONE_PARENT_SETTID | SIGCHLD, NULL, 0, \
 		  &pid, NULL, NULL)
-#endif
 
 #include <sysdeps/unix/sysv/linux/system.c>

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/tile/kernel-features.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/tile/kernel-features.h (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/tile/kernel-features.h Wed Aug 15 00:01:47 2012
@@ -20,7 +20,6 @@
 /* TILE glibc support starts with 2.6.36, guaranteeing many kernel features. */
 #define __ASSUME_MMAP2_SYSCALL		1
 #define __ASSUME_STAT64_SYSCALL		1
-#define __ASSUME_CLONE_THREAD_FLAGS	1
 #define __ASSUME_UTIMES			1
 #define __ASSUME_FADVISE64_64_SYSCALL	1
 #define __ASSUME_O_CLOEXEC		1

Modified: fsf/trunk/libc/sysdeps/i386/fpu/libm-test-ulps
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/fpu/libm-test-ulps (original)
+++ fsf/trunk/libc/sysdeps/i386/fpu/libm-test-ulps Wed Aug 15 00:01:47 2012
@@ -1077,6 +1077,9 @@
 Test "Imaginary part of: clog10 (0x1.000566p0 + 0x1.234p-100 i) == 3.577293486783822178310971763308187385546e-5 + 3.897399639875661463735636919790792140598e-31 i":
 ildouble: 1
 ldouble: 1
+Test "Real part of: clog10 (0x1.234566p-30 + 1.0 i) == 2.438200411482400072282924063740535840474e-19 + 6.821881764607257184291586401763604544928e-1 i":
+ildouble: 1
+ldouble: 1
 Test "Imaginary part of: clog10 (0x1.234566p-30 + 1.0 i) == 2.438200411482400072282924063740535840474e-19 + 6.821881764607257184291586401763604544928e-1 i":
 float: 1
 ifloat: 1

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/kernel-features.h
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/kernel-features.h (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/kernel-features.h Wed Aug 15 00:01:47 2012
@@ -90,17 +90,6 @@
    kernel.  But PowerPC64 does not support a separate MMAP2 call.  */
 #if defined __powerpc__ && !defined __powerpc64__
 # define __ASSUME_MMAP2_SYSCALL		1
-#endif
-
-/* The late 2.5 kernels saw a lot of new CLONE_* flags.  Summarize
-   their availability with one define.  The changes were made first
-   for i386 and the have to be done separately for the other archs.
-   For i386 we pick 2.5.50 as the first version with support.
-   For s390*, SPARC, PPC, x86-64, and SH we pick 2.5.64 as the first
-   version with support.  */
-#if (defined __i386__ || defined __s390__ || defined __sparc__		\
-     || defined __powerpc__ || defined __x86_64__ || defined __sh__)
-# define __ASSUME_CLONE_THREAD_FLAGS	1
 #endif
 
 /* Beginning with 2.5.63 support for realtime and monotonic clocks and

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/system.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/system.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/system.c Wed Aug 15 00:01:47 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2003-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
@@ -25,9 +25,7 @@
    return.  It might still be in the kernel when the cancellation
    request comes.  Therefore we have to use the clone() calls ability
    to have the kernel write the PID into the user-level variable.  */
-#ifdef __ASSUME_CLONE_THREAD_FLAGS
-# define FORK() \
+#define FORK() \
   INLINE_SYSCALL (clone, 3, 0, CLONE_PARENT_SETTID | SIGCHLD, &pid)
-#endif
 
 #include "../system.c"

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/system.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/system.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/system.c Wed Aug 15 00:01:47 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2003-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
@@ -25,9 +25,7 @@
    return.  It might still be in the kernel when the cancellation
    request comes.  Therefore we have to use the clone() calls ability
    to have the kernel write the PID into the user-level variable.  */
-#ifdef __ASSUME_CLONE_THREAD_FLAGS
-# define FORK() \
+#define FORK() \
   INLINE_CLONE_SYSCALL (CLONE_PARENT_SETTID | SIGCHLD, 0, &pid, NULL, NULL)
-#endif
 
 #include "../system.c"

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/system.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/system.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/system.c Wed Aug 15 00:01:47 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2002-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
@@ -32,7 +32,7 @@
    return.  It might still be in the kernel when the cancellation
    request comes.  Therefore we have to use the clone() calls ability
    to have the kernel write the PID into the user-level variable.  */
-#if defined __ASSUME_CLONE_THREAD_FLAGS && !defined FORK
+#ifndef FORK
 # define FORK() \
   INLINE_SYSCALL (clone, 3, CLONE_PARENT_SETTID | SIGCHLD, 0, &pid)
 #endif

_______________________________________________
Commits mailing list
Commits@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/commits