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

[Commits] r21500 - in /fsf/trunk/libc: ./ elf/ include/ include/bits/ math/ nptl/ nptl/sysdeps/unix/sysv/linux/sparc/ nptl/sysdeps/x86...



Author: eglibc
Date: Sun Nov  4 00:02:10 2012
New Revision: 21500

Log:
Import glibc-mainline for 2012-11-04

Added:
    fsf/trunk/libc/include/bits/stdlib-float.h
    fsf/trunk/libc/stdlib/bits/stdlib-float.h
    fsf/trunk/libc/sysdeps/x86/Makefile
Modified:
    fsf/trunk/libc/ChangeLog
    fsf/trunk/libc/NEWS
    fsf/trunk/libc/elf/elf.h
    fsf/trunk/libc/include/fenv.h
    fsf/trunk/libc/math/fclrexcpt.c
    fsf/trunk/libc/math/libm-test.inc
    fsf/trunk/libc/nptl/ChangeLog
    fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h
    fsf/trunk/libc/nptl/sysdeps/x86_64/tls.h
    fsf/trunk/libc/ports/ChangeLog.alpha
    fsf/trunk/libc/ports/ChangeLog.am33
    fsf/trunk/libc/ports/ChangeLog.arm
    fsf/trunk/libc/ports/ChangeLog.hppa
    fsf/trunk/libc/ports/ChangeLog.ia64
    fsf/trunk/libc/ports/ChangeLog.m68k
    fsf/trunk/libc/ports/ChangeLog.mips
    fsf/trunk/libc/ports/ChangeLog.powerpc
    fsf/trunk/libc/ports/ChangeLog.tile
    fsf/trunk/libc/ports/sysdeps/alpha/fpu/bits/fenv.h
    fsf/trunk/libc/ports/sysdeps/alpha/fpu/fclrexcpt.c
    fsf/trunk/libc/ports/sysdeps/am33/fpu/bits/fenv.h
    fsf/trunk/libc/ports/sysdeps/am33/fpu/fclrexcpt.c
    fsf/trunk/libc/ports/sysdeps/arm/bits/fenv.h
    fsf/trunk/libc/ports/sysdeps/arm/fclrexcpt.c
    fsf/trunk/libc/ports/sysdeps/hppa/fpu/bits/fenv.h
    fsf/trunk/libc/ports/sysdeps/hppa/fpu/fclrexcpt.c
    fsf/trunk/libc/ports/sysdeps/ia64/bits/fenv.h
    fsf/trunk/libc/ports/sysdeps/ia64/fpu/fclrexcpt.c
    fsf/trunk/libc/ports/sysdeps/m68k/fpu/bits/fenv.h
    fsf/trunk/libc/ports/sysdeps/m68k/fpu/fclrexcpt.c
    fsf/trunk/libc/ports/sysdeps/mips/bits/fenv.h
    fsf/trunk/libc/ports/sysdeps/mips/fpu/fclrexcpt.c
    fsf/trunk/libc/ports/sysdeps/powerpc/nofpu/fclrexcpt.c
    fsf/trunk/libc/ports/sysdeps/tile/bits/fenv.h
    fsf/trunk/libc/ports/sysdeps/tile/libm-test-ulps
    fsf/trunk/libc/scripts/cross-test-ssh.sh
    fsf/trunk/libc/stdlib/Makefile
    fsf/trunk/libc/stdlib/stdlib.h
    fsf/trunk/libc/sysdeps/generic/math_private.h
    fsf/trunk/libc/sysdeps/i386/fpu/fclrexcpt.c
    fsf/trunk/libc/sysdeps/i386/fpu/fenv_private.h
    fsf/trunk/libc/sysdeps/ieee754/dbl-64/s_fma.c
    fsf/trunk/libc/sysdeps/ieee754/ldbl-128/s_fmal.c
    fsf/trunk/libc/sysdeps/ieee754/ldbl-96/s_fma.c
    fsf/trunk/libc/sysdeps/ieee754/ldbl-96/s_fmal.c
    fsf/trunk/libc/sysdeps/powerpc/bits/fenv.h
    fsf/trunk/libc/sysdeps/powerpc/fpu/fclrexcpt.c
    fsf/trunk/libc/sysdeps/s390/fpu/bits/fenv.h
    fsf/trunk/libc/sysdeps/s390/fpu/fclrexcpt.c
    fsf/trunk/libc/sysdeps/sh/sh4/fpu/bits/fenv.h
    fsf/trunk/libc/sysdeps/sh/sh4/fpu/fclrexcpt.c
    fsf/trunk/libc/sysdeps/sparc/fpu/bits/fenv.h
    fsf/trunk/libc/sysdeps/sparc/fpu/fclrexcpt.c
    fsf/trunk/libc/sysdeps/sparc/fpu/fenv_private.h
    fsf/trunk/libc/sysdeps/x86/fpu/bits/fenv.h
    fsf/trunk/libc/sysdeps/x86_64/fpu/fclrexcpt.c
    fsf/trunk/libc/sysdeps/x86_64/multiarch/strcasestr-nonascii.c

Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Sun Nov  4 00:02:10 2012
@@ -1,3 +1,126 @@
+2012-11-03  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	[BZ #14796]
+	* sysdeps/ieee754/dbl-64/s_fma.c (__fma): Set rounding mode to
+	FE_TONEAREST before applying Dekker multiplication and Knuth
+	addition.  Clear inexact exceptions and check for exact zero
+	results afterwards.
+	* sysdeps/ieee754/ldbl-128/s_fmal.c (__fmal): Likewise.
+	* sysdeps/ieee754/ldbl-96/s_fma.c (__fma): Likewise.
+	* sysdeps/ieee754/ldbl-96/s_fmal.c (__fmal): Likewise.
+	* math/libm-test.inc (fma_test): Add more tests.
+	(fma_test_towardzero): Likewise.
+	(fma_test_downward): Likewise.
+	(fma_test_upward): Likewise.
+	* sysdeps/generic/math_private.h (default_libc_fesetround): New
+	function.
+	(libc_fesetround): New macro.
+	(libc_fesetroundf): Likewise.
+	(libc_fesetroundl): Likewise.
+	* sysdeps/i386/fpu/fenv_private.h (libc_fesetround_sse): New
+	function.
+	(libc_fesetround_387): Likewise.
+	(libc_fesetroundf): New macro.
+	(libc_fesetround): Likewise.
+	(libc_fesetroundl): Likewise.
+	* sysdeps/sparc/fpu/fenv_private.h (libc_fesetround): New
+	function.
+	(libc_fesetroundf): New macro.
+	(libc_fesetround): Likewise.
+	(libc_fesetroundl): Likewise.
+	* include/fenv.h (feclearexcept): Add libm_hidden_proto.
+	* math/fclrexcpt.c (feclearexcept): Add libm_hidden_ver.
+	* sysdeps/i386/fpu/fclrexcpt.c (feclearexcept): Add
+	libm_hidden_ver.
+	* sysdeps/powerpc/fpu/fclrexcpt.c (feclearexcept): Likewise.
+	* sysdeps/s390/fpu/fclrexcpt.c (feclearexcept): Add
+	libm_hidden_def.
+	* sysdeps/sh/sh4/fpu/fclrexcpt.c (feclearexcept): Likewise.
+	* sysdeps/sparc/fpu/fclrexcpt.c (feclearexcept): Add
+	libm_hidden_ver.
+	* sysdeps/x86_64/fpu/fclrexcpt.c (feclearexcept): Add
+	libm_hidden_def.
+
+	[BZ #3439]
+	* sysdeps/powerpc/bits/fenv.h (FE_INEXACT): Define macro to
+	integer constant usable in #if and use that to give value to enum
+	constant.
+	(FE_DIVBYZERO): Likewise.
+	(FE_UNDERFLOW): Likewise.
+	(FE_OVERFLOW): Likewise.
+	(FE_INVALID): Likewise.
+	(FE_INVALID_SNAN): Likewise.
+	(FE_INVALID_ISI): Likewise.
+	(FE_INVALID_IDI): Likewise.
+	(FE_INVALID_ZDZ): Likewise.
+	(FE_INVALID_IMZ): Likewise.
+	(FE_INVALID_COMPARE): Likewise.
+	(FE_INVALID_SOFTWARE): Likewise.
+	(FE_INVALID_SQRT): Likewise.
+	(FE_INVALID_INTEGER_CONVERSION): Likewise.
+	(FE_TONEAREST): Likewise.
+	(FE_TOWARDZERO): Likewise.
+	(FE_UPWARD): Likewise.
+	(FE_DOWNWARD): Likewise.
+	* sysdeps/s390/fpu/bits/fenv.h (FE_INVALID): Likewise.
+	(FE_DIVBYZERO): Likewise.
+	(FE_OVERFLOW): Likewise.
+	(FE_UNDERFLOW): Likewise.
+	(FE_INEXACT): Likewise.
+	(FE_TONEAREST): Likewise.
+	(FE_DOWNWARD): Likewise.
+	(FE_UPWARD): Likewise.
+	(FE_TOWARDZERO): Likewise.
+	* sysdeps/sh/sh4/fpu/bits/fenv.h (FE_INEXACT): Likewise.
+	(FE_UNDERFLOW): Likewise.
+	(FE_OVERFLOW): Likewise.
+	(FE_DIVBYZERO): Likewise.
+	(FE_INVALID): Likewise.
+	(FE_TONEAREST): Likewise.
+	(FE_TOWARDZERO): Likewise.
+	* sysdeps/sparc/fpu/bits/fenv.h (FE_INVALID): Likewise.
+	(FE_OVERFLOW): Likewise.
+	(FE_UNDERFLOW): Likewise.
+	(FE_DIVBYZERO): Likewise.
+	(FE_INEXACT): Likewise.
+	(FE_TONEAREST): Likewise.
+	(FE_TOWARDZERO): Likewise.
+	(FE_UPWARD): Likewise.
+	(FE_DOWNWARD): Likewise.
+	* sysdeps/x86/fpu/bits/fenv.h (FE_INVALID): Likewise.
+	(FE_DIVBYZERO): Likewise.
+	(FE_OVERFLOW): Likewise.
+	(FE_UNDERFLOW): Likewise.
+	(FE_INEXACT): Likewise.
+	(FE_TONEAREST): Likewise.
+	(FE_DOWNWARD): Likewise.
+	(FE_UPWARD): Likewise.
+	(FE_TOWARDZERO): Likewise.
+
+2012-11-02  Chris Metcalf  <cmetcalf@xxxxxxxxxx>
+
+	* elf/elf.h (R_TILEGX_IMM16_X[01]_HW[012]_(|LAST_)PLT_PCREL): Add.
+
+2012-11-03  Andreas Schwab  <schwab@xxxxxxxxxxxxxx>
+
+	* scripts/cross-test-ssh.sh (command): Use newlines to separate
+	commands.  Quote $PWD.
+	(blacklist_exports): Don't use remove_newlines.  Replace "declare
+	-x" by "export".
+	(remove_newlines): Remove.
+
+2012-11-02  H.J. Lu  <hongjiu.lu@xxxxxxxxx>
+
+	* stdlib/Makefile (headers): Add bits/stdlib-float.h.
+	* stdlib/stdlib.h (atof): Moved to ...
+	* include/bits/stdlib-float.h: Here.  New file.
+	* stdlib/stdlib.h: Include <bits/stdlib-float.h>.
+	* stdlib/bits/stdlib-float.h: New file.
+	* sysdeps/x86/Makefile (CFLAGS-.os): Compile rtld routines with
+	-mno-sse -mno-mmx.
+	* sysdeps/x86_64/multiarch/strcasestr-nonascii.c: Include
+	<xmmintrin.h>.
+
 2012-11-02  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	* conform/conformtest.pl (@headers): Add fenv.h.

Modified: fsf/trunk/libc/NEWS
==============================================================================
--- fsf/trunk/libc/NEWS (original)
+++ fsf/trunk/libc/NEWS Sun Nov  4 00:02:10 2012
@@ -9,15 +9,16 @@
 
 * The following bugs are resolved with this release:
 
-  1349, 3479, 5044, 5298, 5400, 6530, 6778, 6808, 9685, 9914, 10014, 10038,
-  10631, 11438, 11607, 12140, 13412, 13542, 13601, 13629, 13679, 13696,
-  13717, 13741, 13939, 13966, 14042, 14047, 14090, 14150, 14151, 14152,
-  14154, 14157, 14166, 14173, 14195, 14237, 14251, 14252, 14283, 14298,
-  14303, 14307, 14328, 14331, 14336, 14337, 14347, 14349, 14376, 14417,
-  14459, 14476, 14477, 14505, 14510, 14516, 14518, 14519, 14530, 14532,
-  14538, 14543, 14544, 14545, 14557, 14562, 14568, 14576, 14579, 14583,
-  14587, 14595, 14602, 14610, 14621, 14638, 14645, 14648, 14652, 14660,
-  14661, 14669, 14683, 14694, 14716, 14743, 14767, 14783, 14784, 14785.
+  1349, 3439, 3479, 5044, 5298, 5400, 6530, 6778, 6808, 9685, 9914, 10014,
+  10038, 10631, 11438, 11607, 12140, 13412, 13542, 13601, 13629, 13679,
+  13696, 13717, 13741, 13939, 13966, 14042, 14047, 14090, 14150, 14151,
+  14152, 14154, 14157, 14166, 14173, 14195, 14237, 14251, 14252, 14283,
+  14298, 14303, 14307, 14328, 14331, 14336, 14337, 14347, 14349, 14376,
+  14417, 14459, 14476, 14477, 14505, 14510, 14516, 14518, 14519, 14530,
+  14532, 14538, 14543, 14544, 14545, 14557, 14562, 14568, 14576, 14579,
+  14583, 14587, 14595, 14602, 14610, 14621, 14638, 14645, 14648, 14652,
+  14660, 14661, 14669, 14683, 14694, 14716, 14743, 14767, 14783, 14784,
+  14785, 14796.
 
 * 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/elf.h
==============================================================================
--- fsf/trunk/libc/elf/elf.h (original)
+++ fsf/trunk/libc/elf/elf.h Sun Nov  4 00:02:10 2012
@@ -2986,12 +2986,18 @@
 #define R_TILEGX_IMM16_X1_HW2_LAST_PCREL 63 /* X1 pipe PC-rel last hword 2 */
 #define R_TILEGX_IMM16_X0_HW0_GOT 64	/* X0 pipe hword 0 GOT offset */
 #define R_TILEGX_IMM16_X1_HW0_GOT 65	/* X1 pipe hword 0 GOT offset */
-/* Relocs 66-71 are currently not defined.  */
+#define R_TILEGX_IMM16_X0_HW0_PLT_PCREL 66 /* X0 pipe PC-rel PLT hword 0 */
+#define R_TILEGX_IMM16_X1_HW0_PLT_PCREL 67 /* X1 pipe PC-rel PLT hword 0 */
+#define R_TILEGX_IMM16_X0_HW1_PLT_PCREL 68 /* X0 pipe PC-rel PLT hword 1 */
+#define R_TILEGX_IMM16_X1_HW1_PLT_PCREL 69 /* X1 pipe PC-rel PLT hword 1 */
+#define R_TILEGX_IMM16_X0_HW2_PLT_PCREL 70 /* X0 pipe PC-rel PLT hword 2 */
+#define R_TILEGX_IMM16_X1_HW2_PLT_PCREL 71 /* X1 pipe PC-rel PLT hword 2 */
 #define R_TILEGX_IMM16_X0_HW0_LAST_GOT 72 /* X0 pipe last hword 0 GOT offset */
 #define R_TILEGX_IMM16_X1_HW0_LAST_GOT 73 /* X1 pipe last hword 0 GOT offset */
 #define R_TILEGX_IMM16_X0_HW1_LAST_GOT 74 /* X0 pipe last hword 1 GOT offset */
 #define R_TILEGX_IMM16_X1_HW1_LAST_GOT 75 /* X1 pipe last hword 1 GOT offset */
-/* Relocs 76-77 are currently not defined.  */
+#define R_TILEGX_IMM16_X0_HW3_PLT_PCREL 76 /* X0 pipe PC-rel PLT hword 3 */
+#define R_TILEGX_IMM16_X1_HW3_PLT_PCREL 77 /* X1 pipe PC-rel PLT hword 3 */
 #define R_TILEGX_IMM16_X0_HW0_TLS_GD 78	/* X0 pipe hword 0 TLS GD offset */
 #define R_TILEGX_IMM16_X1_HW0_TLS_GD 79	/* X1 pipe hword 0 TLS GD offset */
 #define R_TILEGX_IMM16_X0_HW0_TLS_LE 80	/* X0 pipe hword 0 TLS LE offset */
@@ -3007,7 +3013,12 @@
 /* Relocs 90-91 are currently not defined.  */
 #define R_TILEGX_IMM16_X0_HW0_TLS_IE 92	/* X0 pipe hword 0 TLS IE offset */
 #define R_TILEGX_IMM16_X1_HW0_TLS_IE 93	/* X1 pipe hword 0 TLS IE offset */
-/* Relocs 94-99 are currently not defined.  */
+#define R_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL 94 /* X0 pipe PC-rel PLT last hword 0 */
+#define R_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL 95 /* X1 pipe PC-rel PLT last hword 0 */
+#define R_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL 96 /* X0 pipe PC-rel PLT last hword 1 */
+#define R_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL 97 /* X1 pipe PC-rel PLT last hword 1 */
+#define R_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL 98 /* X0 pipe PC-rel PLT last hword 2 */
+#define R_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL 99 /* X1 pipe PC-rel PLT last hword 2 */
 #define R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE 100 /* X0 pipe last hword 0 IE off */
 #define R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE 101 /* X1 pipe last hword 0 IE off */
 #define R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE 102 /* X0 pipe last hword 1 IE off */

Added: fsf/trunk/libc/include/bits/stdlib-float.h
==============================================================================
--- fsf/trunk/libc/include/bits/stdlib-float.h (added)
+++ fsf/trunk/libc/include/bits/stdlib-float.h Sun Nov  4 00:02:10 2012
@@ -1,0 +1,4 @@
+/* No floating-point inline functions in rtld.  */
+#ifndef IS_IN_rtld
+# include <stdlib/bits/stdlib-float.h>
+#endif

Modified: fsf/trunk/libc/include/fenv.h
==============================================================================
--- fsf/trunk/libc/include/fenv.h (original)
+++ fsf/trunk/libc/include/fenv.h Sun Nov  4 00:02:10 2012
@@ -20,6 +20,7 @@
 libm_hidden_proto (feholdexcept)
 libm_hidden_proto (feupdateenv)
 libm_hidden_proto (fetestexcept)
+libm_hidden_proto (feclearexcept)
 #endif
 
 #endif

Modified: fsf/trunk/libc/math/fclrexcpt.c
==============================================================================
--- fsf/trunk/libc/math/fclrexcpt.c (original)
+++ fsf/trunk/libc/math/fclrexcpt.c Sun Nov  4 00:02:10 2012
@@ -30,6 +30,7 @@
 strong_alias (__feclearexcept, __old_feclearexcept)
 compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
 #endif
+libm_hidden_ver (__feclearexcept, feclearexcept)
 versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);
 
 stub_warning (feclearexcept)

Modified: fsf/trunk/libc/math/libm-test.inc
==============================================================================
--- fsf/trunk/libc/math/libm-test.inc (original)
+++ fsf/trunk/libc/math/libm-test.inc Sun Nov  4 00:02:10 2012
@@ -4649,6 +4649,10 @@
   TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION);
   TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION);
   TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION);
+  TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24);
+  TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24);
+  TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24);
+  TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24);
 #endif
 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
   TEST_fff_f (fma, 0x1.7fp+13, 0x1.0000000000001p+0, 0x1.ffep-48, 0x1.7f00000000001p+13);
@@ -4695,6 +4699,10 @@
   TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION);
   TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION);
   TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION);
+  TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106);
+  TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106);
+  TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106);
+  TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106);
 #endif
 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
   TEST_fff_f (fma, -0x8.03fcp+3696L, 0xf.fffffffffffffffp-6140L, 0x8.3ffffffffffffffp-2450L, -0x8.01ecp-2440L);
@@ -4727,6 +4735,10 @@
   TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION);
   TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION);
   TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION);
+  TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L);
+  TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L);
+  TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L);
+  TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L);
 #endif
 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
   TEST_fff_f (fma, 0x1.bb2de33e02ccbbfa6e245a7c1f71p-2584L, -0x1.6b500daf0580d987f1bc0cadfcddp-13777L, 0x1.613cd91d9fed34b33820e5ab9d8dp-16378L, -0x1.3a79fb50eb9ce887cffa0f09bd9fp-16360L);
@@ -4766,6 +4778,10 @@
   TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION);
   TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION);
   TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION);
+  TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L);
+  TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L);
+  TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L);
+  TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L);
 #endif
 
   END (fma);
@@ -4846,6 +4862,10 @@
       TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, plus_zero, UNDERFLOW_EXCEPTION);
       TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, minus_zero, UNDERFLOW_EXCEPTION);
       TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION);
+      TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24);
+      TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24);
+      TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24);
+      TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24);
 #endif
 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
       TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION);
@@ -4872,6 +4892,10 @@
       TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, plus_zero, UNDERFLOW_EXCEPTION);
       TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, minus_zero, UNDERFLOW_EXCEPTION);
       TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION);
+      TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106);
+      TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106);
+      TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106);
+      TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106);
 #endif
 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
       TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION);
@@ -4898,6 +4922,10 @@
       TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, plus_zero, UNDERFLOW_EXCEPTION);
       TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, minus_zero, UNDERFLOW_EXCEPTION);
       TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION);
+      TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L);
+      TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L);
+      TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L);
+      TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L);
 #endif
 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
       TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION);
@@ -4924,6 +4952,10 @@
       TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, plus_zero, UNDERFLOW_EXCEPTION);
       TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, minus_zero, UNDERFLOW_EXCEPTION);
       TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION);
+      TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L);
+      TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L);
+      TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L);
+      TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L);
 #endif
     }
 
@@ -5007,6 +5039,10 @@
       TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, plus_zero, UNDERFLOW_EXCEPTION);
       TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION);
       TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-148, UNDERFLOW_EXCEPTION);
+      TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24);
+      TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24);
+      TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24);
+      TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24);
 #endif
 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
       TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION);
@@ -5033,6 +5069,10 @@
       TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, plus_zero, UNDERFLOW_EXCEPTION);
       TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION);
       TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1073, UNDERFLOW_EXCEPTION);
+      TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106);
+      TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106);
+      TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106);
+      TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106);
 #endif
 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
       TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION);
@@ -5059,6 +5099,10 @@
       TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, plus_zero, UNDERFLOW_EXCEPTION);
       TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION);
       TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16444L, UNDERFLOW_EXCEPTION);
+      TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L);
+      TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L);
+      TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L);
+      TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L);
 #endif
 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
       TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION);
@@ -5085,6 +5129,10 @@
       TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, plus_zero, UNDERFLOW_EXCEPTION);
       TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION);
       TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16493L, UNDERFLOW_EXCEPTION);
+      TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L);
+      TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L);
+      TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L);
+      TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L);
 #endif
     }
 
@@ -5168,6 +5216,10 @@
       TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION);
       TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, minus_zero, UNDERFLOW_EXCEPTION);
       TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION);
+      TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24);
+      TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24);
+      TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24);
+      TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24);
 #endif
 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
       TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000004p-1023, UNDERFLOW_EXCEPTION);
@@ -5194,6 +5246,10 @@
       TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION);
       TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, minus_zero, UNDERFLOW_EXCEPTION);
       TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION);
+      TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106);
+      TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106);
+      TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106);
+      TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106);
 #endif
 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
       TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000008p-16383L, UNDERFLOW_EXCEPTION);
@@ -5220,6 +5276,10 @@
       TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION);
       TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, minus_zero, UNDERFLOW_EXCEPTION);
       TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION);
+      TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L);
+      TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L);
+      TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L);
+      TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L);
 #endif
 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
       TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000004p-16383L, UNDERFLOW_EXCEPTION);
@@ -5246,6 +5306,10 @@
       TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION);
       TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, minus_zero, UNDERFLOW_EXCEPTION);
       TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION);
+      TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L);
+      TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L);
+      TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L);
+      TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L);
 #endif
     }
 

Modified: fsf/trunk/libc/nptl/ChangeLog
==============================================================================
--- fsf/trunk/libc/nptl/ChangeLog (original)
+++ fsf/trunk/libc/nptl/ChangeLog Sun Nov  4 00:02:10 2012
@@ -1,3 +1,15 @@
+2012-11-03  David S. Miller  <davem@xxxxxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/sparc/lowlevellock.h (BUSY_WAIT_NOP):
+	Add missing spaces.
+	(__cpu_relax): Likewise.
+
+2012-11-02  H.J. Lu  <hongjiu.lu@xxxxxxxxx>
+
+	* sysdeps/x86_64/tls.h: Don't include <xmmintrin.h>.
+	(__128bits): New struct typedef.
+	(tcbhead_t): Replace __m128 with __128bits.
+
 2012-10-30  Aurelien Jarno  <aurelien@xxxxxxxxxxx>
 	    Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 

Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h Sun Nov  4 00:02:10 2012
@@ -52,8 +52,8 @@
 
 #ifndef __sparc32_atomic_do_lock
 /* Delay in spinlock loop.  */
-extern void __cpu_relax(void);
-#define BUSY_WAIT_NOP	__cpu_relax()
+extern void __cpu_relax (void);
+#define BUSY_WAIT_NOP	__cpu_relax ()
 #endif
 
 #if !defined NOT_IN_libc || defined IS_IN_rtld

Modified: fsf/trunk/libc/nptl/sysdeps/x86_64/tls.h
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/x86_64/tls.h (original)
+++ fsf/trunk/libc/nptl/sysdeps/x86_64/tls.h Sun Nov  4 00:02:10 2012
@@ -27,7 +27,14 @@
 # include <stdlib.h>
 # include <sysdep.h>
 # include <kernel-features.h>
-# include <xmmintrin.h>
+
+/* Replacement type for __m128 since this file is included by ld.so,
+   which is compiled with -mno-sse.  It must not change the alignment
+   of rtld_savespace_sse.  */
+typedef struct
+{
+  int i[4];
+} __128bits;
 
 
 /* Type for the dtv.  */
@@ -64,7 +71,7 @@
   void *__private_tm[5];
   long int __unused2;
   /* Have space for the post-AVX register size.  */
-  __m128 rtld_savespace_sse[8][4] __attribute__ ((aligned (32)));
+  __128bits rtld_savespace_sse[8][4] __attribute__ ((aligned (32)));
 
   void *__padding[8];
 } tcbhead_t;

Modified: fsf/trunk/libc/ports/ChangeLog.alpha
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.alpha (original)
+++ fsf/trunk/libc/ports/ChangeLog.alpha Sun Nov  4 00:02:10 2012
@@ -1,3 +1,23 @@
+2012-11-03  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/alpha/fpu/fclrexcpt.c (feclearexcept): Add
+	libm_hidden_ver.
+
+	[BZ #3439]
+	* sysdeps/alpha/fpu/bits/fenv.h (FE_DENORMAL): Define macro to
+	integer constant usable in #if and use that to give value to enum
+	constant.
+	(FE_INEXACT): Likewise.
+	(FE_UNDERFLOW): Likewise.
+	(FE_OVERFLOW): Likewise.
+	(FE_DIVBYZERO): Likewise.
+	(FE_INVALID): Likewise.
+	(FE_ALL_EXCEPT): Likewise.
+	(FE_TOWARDZERO): Likewise.
+	(FE_DOWNWARD): Likewise.
+	(FE_TONEAREST): Likewise.
+	(FE_UPWARD): Likewise.
+
 2012-11-01  Andreas Jaeger  <aj@xxxxxxx>
 
 	* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Remove all

Modified: fsf/trunk/libc/ports/ChangeLog.am33
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.am33 (original)
+++ fsf/trunk/libc/ports/ChangeLog.am33 Sun Nov  4 00:02:10 2012
@@ -1,3 +1,18 @@
+2012-11-03  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/am33/fpu/fclrexcpt.c (feclearexcept): Add
+	libm_hidden_ver.
+
+	[BZ #3439]
+	* sysdeps/am33/fpu/bits/fenv.h (FE_INEXACT): Define macro to
+	integer constant usable in #if and use that to give value to enum
+	constant.
+	(FE_UNDERFLOW): Likewise.
+	(FE_OVERFLOW): Likewise.
+	(FE_DIVBYZERO): Likewise.
+	(FE_INVALID): Likewise.
+	(FE_TONEAREST): Likewise.
+
 2012-10-30  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	[BZ #14047]

Modified: fsf/trunk/libc/ports/ChangeLog.arm
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.arm (original)
+++ fsf/trunk/libc/ports/ChangeLog.arm Sun Nov  4 00:02:10 2012
@@ -1,3 +1,20 @@
+2012-11-03  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/arm/fclrexcpt.c (feclearexcept): Add libm_hidden_ver.
+
+	[BZ #3439]
+	* sysdeps/arm/bits/fenv.h (FE_INVALID): Define macro to integer
+	constant usable in #if and use that to give value to enum
+	constant.
+	(FE_DIVBYZERO): Likewise.
+	(FE_OVERFLOW): Likewise.
+	(FE_UNDERFLOW): Likewise.
+	(FE_INEXACT): Likewise.
+	(FE_TONEAREST): Likewise.
+	(FE_UPWARD): Likewise.
+	(FE_DOWNWARD): Likewise.
+	(FE_TOWARDZERO): Likewise.
+
 2012-10-22  Roland McGrath  <roland@xxxxxxxxxxxxx>
 
 	* sysdeps/unix/sysv/linux/arm/nptl/libc.abilist

Modified: fsf/trunk/libc/ports/ChangeLog.hppa
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.hppa (original)
+++ fsf/trunk/libc/ports/ChangeLog.hppa Sun Nov  4 00:02:10 2012
@@ -1,3 +1,21 @@
+2012-11-03  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/hppa/fpu/fclrexcpt.c (feclearexcept): Add
+	libm_hidden_def.
+
+	[BZ #3439]
+	* sysdeps/hppa/fpu/bits/fenv.h (FE_INVALID): Define macro to
+	integer constant usable in #if and use that to give value to enum
+	constant.
+	(FE_DIVBYZERO): Likewise.
+	(FE_OVERFLOW): Likewise.
+	(FE_UNDERFLOW): Likewise.
+	(FE_INEXACT): Likewise.
+	(FE_TONEAREST): Likewise.
+	(FE_TOWARDZERO): Likewise.
+	(FE_UPWARD): Likewise.
+	(FE_DOWNWARD): Likewise.
+
 2012-10-30  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	[BZ #14047]

Modified: fsf/trunk/libc/ports/ChangeLog.ia64
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.ia64 (original)
+++ fsf/trunk/libc/ports/ChangeLog.ia64 Sun Nov  4 00:02:10 2012
@@ -1,3 +1,23 @@
+2012-11-03  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/ia64/fpu/fclrexcpt.c (feclearexcept): Add
+	libm_hidden_def.
+
+	[BZ #3439]
+	* sysdeps/ia64/bits/fenv.h (FE_INEXACT): Define macro to integer
+	constant usable in #if and use that to give value to enum
+	constant.
+	(FE_UNDERFLOW): Likewise.
+	(FE_OVERFLOW): Likewise.
+	(FE_DIVBYZERO): Likewise.
+	(FE_UNNORMAL): Likewise.
+	(FE_INVALID): Likewise.
+	(FE_ALL_EXCEPT): Likewise.
+	(FE_TOWARDZERO): Likewise.
+	(FE_UPWARD): Likewise.
+	(FE_DOWNWARD): Likewise.
+	(FE_TONEAREST): Likewise.
+
 2012-10-30  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	[BZ #14047]

Modified: fsf/trunk/libc/ports/ChangeLog.m68k
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.m68k (original)
+++ fsf/trunk/libc/ports/ChangeLog.m68k Sun Nov  4 00:02:10 2012
@@ -1,3 +1,21 @@
+2012-11-03  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/m68k/fpu/fclrexcpt.c (feclearexcept): Add
+	libm_hidden_ver.
+
+	[BZ #3439]
+	* sysdeps/m68k/fpu/bits/fenv.h (FE_INEXACT): Define macro to
+	integer constant usable in #if and use that to give value to enum
+	constant.
+	(FE_DIVBYZERO): Likewise.
+	(FE_UNDERFLOW): Likewise.
+	(FE_OVERFLOW): Likewise.
+	(FE_INVALID): Likewise.
+	(FE_TONEAREST): Likewise.
+	(FE_TOWARDZERO): Likewise.
+	(FE_DOWNWARD): Likewise.
+	(FE_UPWARD): Likewise.
+
 2012-10-25  Andreas Jaeger  <aj@xxxxxxx>
 
 	* sysdeps/unix/sysv/linux/m68k/bits/fcntl.h: Remove all

Modified: fsf/trunk/libc/ports/ChangeLog.mips
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.mips (original)
+++ fsf/trunk/libc/ports/ChangeLog.mips Sun Nov  4 00:02:10 2012
@@ -1,3 +1,21 @@
+2012-11-03  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/mips/fpu/fclrexcpt.c (feclearexcept): Add
+	libm_hidden_def.
+
+	[BZ #3439]
+	* sysdeps/mips/bits/fenv.h (FE_INEXACT): Define macro to integer
+	constant usable in #if and use that to give value to enum
+	constant.
+	(FE_UNDERFLOW): Likewise.
+	(FE_OVERFLOW): Likewise.
+	(FE_DIVBYZERO): Likewise.
+	(FE_INVALID): Likewise.
+	(FE_TONEAREST): Likewise.
+	(FE_TOWARDZERO): Likewise.
+	(FE_UPWARD): Likewise.
+	(FE_DOWNWARD): Likewise.
+
 2012-11-01  Thomas Schwinge  <thomas@xxxxxxxxxxxxxxxx>
 
 	* sysdeps/unix/sysv/linux/mips/configure: Regenerate.

Modified: fsf/trunk/libc/ports/ChangeLog.powerpc
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.powerpc (original)
+++ fsf/trunk/libc/ports/ChangeLog.powerpc Sun Nov  4 00:02:10 2012
@@ -1,3 +1,8 @@
+2012-11-03  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/powerpc/nofpu/fclrexcpt.c (feclearexcept): Add
+	libm_hidden_ver.
+
 2012-10-31  Andreas Schwab  <schwab@xxxxxxxxxxxxxx>
 
 	* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist:

Modified: fsf/trunk/libc/ports/ChangeLog.tile
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.tile (original)
+++ fsf/trunk/libc/ports/ChangeLog.tile Sun Nov  4 00:02:10 2012
@@ -1,3 +1,14 @@
+2012-11-03  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	[BZ #3439]
+	* sysdeps/tile/bits/fenv.h (FE_TONEAREST): Define macro to integer
+	constant usable in #if and use that to give value to enum
+	constant.
+
+2012-11-03  Chris Metcalf  <cmetcalf@xxxxxxxxxx>
+
+	* sysdeps/tile/libm-test-ulps: Account for new tests.
+
 2012-10-30  Chris Metcalf  <cmetcalf@xxxxxxxxxx>
 
 	* sysdeps/tile/dl-machine.h: Use new DL_AFTER_LOAD macro

Modified: fsf/trunk/libc/ports/sysdeps/alpha/fpu/bits/fenv.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/alpha/fpu/bits/fenv.h (original)
+++ fsf/trunk/libc/ports/sysdeps/alpha/fpu/bits/fenv.h Sun Nov  4 00:02:10 2012
@@ -36,27 +36,34 @@
 enum
   {
 #ifdef __USE_GNU
-    FE_DENORMAL =	1UL << 22,
-#define FE_DENORMAL	FE_DENORMAL
+    FE_DENORMAL =
+#define FE_DENORMAL	(1 << 22)
+      FE_DENORMAL,
 #endif
 
-    FE_INEXACT =	1UL << 21,
-#define FE_INEXACT	FE_INEXACT
+    FE_INEXACT =
+#define FE_INEXACT	(1 << 21)
+      FE_INEXACT,
 
-    FE_UNDERFLOW =	1UL << 20,
-#define FE_UNDERFLOW	FE_UNDERFLOW
+    FE_UNDERFLOW =
+#define FE_UNDERFLOW	(1 << 20)
+      FE_UNDERFLOW,
 
-    FE_OVERFLOW =	1UL << 19,
-#define FE_OVERFLOW	FE_OVERFLOW
+    FE_OVERFLOW =
+#define FE_OVERFLOW	(1 << 19)
+      FE_OVERFLOW,
 
-    FE_DIVBYZERO =	1UL << 18,
-#define FE_DIVBYZERO	FE_DIVBYZERO
+    FE_DIVBYZERO =
+#define FE_DIVBYZERO	(1 << 18)
+      FE_DIVBYZERO,
 
-    FE_INVALID =	1UL << 17,
-#define FE_INVALID	FE_INVALID
+    FE_INVALID =
+#define FE_INVALID	(1 << 17)
+      FE_INVALID,
 
-    FE_ALL_EXCEPT =	0x3f << 17
-#define FE_ALL_EXCEPT	FE_ALL_EXCEPT
+    FE_ALL_EXCEPT =
+#define FE_ALL_EXCEPT	(0x3f << 17)
+      FE_ALL_EXCEPT
   };
 
 /* Alpha chips support all four defined rouding modes.
@@ -70,17 +77,21 @@
 
 enum
   {
-    FE_TOWARDZERO =	0,
-#define FE_TOWARDZERO	FE_TOWARDZERO
+    FE_TOWARDZERO =
+#define FE_TOWARDZERO	0
+      FE_TOWARDZERO,
 
-    FE_DOWNWARD = 	1,
-#define FE_DOWNWARD	FE_DOWNWARD
+    FE_DOWNWARD =
+#define FE_DOWNWARD	1
+      FE_DOWNWARD,
 
-    FE_TONEAREST =	2,
-#define FE_TONEAREST	FE_TONEAREST
+    FE_TONEAREST =
+#define FE_TONEAREST	2
+      FE_TONEAREST,
 
-    FE_UPWARD =		3,
-#define FE_UPWARD	FE_UPWARD
+    FE_UPWARD =
+#define FE_UPWARD	3
+      FE_UPWARD,
   };
 
 #ifdef __USE_GNU

Modified: fsf/trunk/libc/ports/sysdeps/alpha/fpu/fclrexcpt.c
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/alpha/fpu/fclrexcpt.c (original)
+++ fsf/trunk/libc/ports/sysdeps/alpha/fpu/fclrexcpt.c Sun Nov  4 00:02:10 2012
@@ -1,5 +1,5 @@
 /* Clear given exceptions in current floating-point environment.
-   Copyright (C) 1997,99,2000,01 Free Software Foundation, Inc.
+   Copyright (C) 1997-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson <rth@xxxxxxxx>, 1997.
 
@@ -43,4 +43,5 @@
 compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
 #endif
 
+libm_hidden_ver (__feclearexcept, feclearexcept)
 versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);

Modified: fsf/trunk/libc/ports/sysdeps/am33/fpu/bits/fenv.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/am33/fpu/bits/fenv.h (original)
+++ fsf/trunk/libc/ports/sysdeps/am33/fpu/bits/fenv.h Sun Nov  4 00:02:10 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2000, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Alexandre Oliva <aoliva@xxxxxxxxxx>
    based on the corresponding file in the mips port.
@@ -26,16 +26,21 @@
    positions of the appropriate bits in the FPCR register.  */
 enum
   {
-    FE_INEXACT = 0x01,
-#define FE_INEXACT	FE_INEXACT
-    FE_UNDERFLOW = 0x02,
-#define FE_UNDERFLOW	FE_UNDERFLOW
-    FE_OVERFLOW = 0x04,
-#define FE_OVERFLOW	FE_OVERFLOW
-    FE_DIVBYZERO = 0x08,
-#define FE_DIVBYZERO	FE_DIVBYZERO
-    FE_INVALID = 0x10,
-#define FE_INVALID	FE_INVALID
+    FE_INEXACT =
+#define FE_INEXACT	0x01
+      FE_INEXACT,
+    FE_UNDERFLOW =
+#define FE_UNDERFLOW	0x02
+      FE_UNDERFLOW,
+    FE_OVERFLOW =
+#define FE_OVERFLOW	0x04
+      FE_OVERFLOW,
+    FE_DIVBYZERO =
+#define FE_DIVBYZERO	0x08
+      FE_DIVBYZERO,
+    FE_INVALID =
+#define FE_INVALID	0x10
+      FE_INVALID,
   };
 
 #define FE_ALL_EXCEPT \
@@ -45,8 +50,9 @@
    reserved to represent other rounding modes.  */
 enum
   {
-    FE_TONEAREST = 0x00000,
-#define FE_TONEAREST	FE_TONEAREST
+    FE_TONEAREST =
+#define FE_TONEAREST	0x00000
+      FE_TONEAREST,
   };
 
 

Modified: fsf/trunk/libc/ports/sysdeps/am33/fpu/fclrexcpt.c
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/am33/fpu/fclrexcpt.c (original)
+++ fsf/trunk/libc/ports/sysdeps/am33/fpu/fclrexcpt.c Sun Nov  4 00:02:10 2012
@@ -1,5 +1,5 @@
 /* Clear given exceptions in current floating-point environment.
-   Copyright (C) 1998, 1999, 2000, 2002, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1998-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Alexandre Oliva <aoliva@xxxxxxxxxx>
    based on corresponding file in the MIPS port.
@@ -48,4 +48,5 @@
   return 0;
 }
 
+libm_hidden_ver (__feclearexcept, feclearexcept)
 versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);

Modified: fsf/trunk/libc/ports/sysdeps/arm/bits/fenv.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/arm/bits/fenv.h (original)
+++ fsf/trunk/libc/ports/sysdeps/arm/bits/fenv.h Sun Nov  4 00:02:10 2012
@@ -22,16 +22,21 @@
 /* Define bits representing exceptions in the FPU status word.  */
 enum
   {
-    FE_INVALID = 1,
-#define FE_INVALID FE_INVALID
-    FE_DIVBYZERO = 2,
-#define FE_DIVBYZERO FE_DIVBYZERO
-    FE_OVERFLOW = 4,
-#define FE_OVERFLOW FE_OVERFLOW
-    FE_UNDERFLOW = 8,
-#define FE_UNDERFLOW FE_UNDERFLOW
-    FE_INEXACT = 16,
-#define FE_INEXACT FE_INEXACT
+    FE_INVALID =
+#define FE_INVALID	1
+      FE_INVALID,
+    FE_DIVBYZERO =
+#define FE_DIVBYZERO	2
+      FE_DIVBYZERO,
+    FE_OVERFLOW =
+#define FE_OVERFLOW	4
+      FE_OVERFLOW,
+    FE_UNDERFLOW =
+#define FE_UNDERFLOW	8
+      FE_UNDERFLOW,
+    FE_INEXACT =
+#define FE_INEXACT	16
+      FE_INEXACT,
   };
 
 /* Amount to shift by to convert an exception to a mask bit.  */
@@ -44,14 +49,18 @@
 /* VFP supports all of the four defined rounding modes.  */
 enum
   {
-    FE_TONEAREST = 0,
-#define FE_TONEAREST FE_TONEAREST
-    FE_UPWARD = 0x400000,
-#define FE_UPWARD FE_UPWARD
-    FE_DOWNWARD = 0x800000,
-#define FE_DOWNWARD FE_DOWNWARD
-    FE_TOWARDZERO = 0xc00000
-#define FE_TOWARDZERO FE_TOWARDZERO
+    FE_TONEAREST =
+#define FE_TONEAREST	0
+      FE_TONEAREST,
+    FE_UPWARD =
+#define FE_UPWARD	0x400000
+      FE_UPWARD,
+    FE_DOWNWARD =
+#define FE_DOWNWARD	0x800000
+      FE_DOWNWARD,
+    FE_TOWARDZERO =
+#define FE_TOWARDZERO	0xc00000
+      FE_TOWARDZERO
   };
 
 /* Type representing exception flags. */

Modified: fsf/trunk/libc/ports/sysdeps/arm/fclrexcpt.c
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/arm/fclrexcpt.c (original)
+++ fsf/trunk/libc/ports/sysdeps/arm/fclrexcpt.c Sun Nov  4 00:02:10 2012
@@ -54,4 +54,5 @@
 compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
 #endif
 
+libm_hidden_ver (__feclearexcept, feclearexcept)
 versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);

Modified: fsf/trunk/libc/ports/sysdeps/hppa/fpu/bits/fenv.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/hppa/fpu/bits/fenv.h (original)
+++ fsf/trunk/libc/ports/sysdeps/hppa/fpu/bits/fenv.h Sun Nov  4 00:02:10 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by David Huggins-Daines <dhd@xxxxxxxxxx>
 
@@ -26,16 +26,21 @@
    27 bits).  */
 enum
 {
-  FE_INVALID   = 1<<4, /* V */
-#define FE_INVALID	FE_INVALID
-  FE_DIVBYZERO = 1<<3, /* Z */
-#define FE_DIVBYZERO	FE_DIVBYZERO
-  FE_OVERFLOW  = 1<<2, /* O */
-#define FE_OVERFLOW	FE_OVERFLOW
-  FE_UNDERFLOW = 1<<1, /* U */
-#define FE_UNDERFLOW	FE_UNDERFLOW
-  FE_INEXACT   = 1<<0, /* I */
-#define FE_INEXACT	FE_INEXACT
+  FE_INVALID =
+#define FE_INVALID	(1<<4) /* V */
+    FE_INVALID,
+  FE_DIVBYZERO =
+#define FE_DIVBYZERO	(1<<3) /* Z */
+    FE_DIVBYZERO,
+  FE_OVERFLOW =
+#define FE_OVERFLOW	(1<<2) /* O */
+    FE_OVERFLOW,
+  FE_UNDERFLOW =
+#define FE_UNDERFLOW	(1<<1) /* U */
+    FE_UNDERFLOW,
+  FE_INEXACT =
+#define FE_INEXACT	(1<<0) /* I */
+    FE_INEXACT,
 };
 
 #define FE_ALL_EXCEPT \
@@ -46,14 +51,18 @@
    register for the appropriate macros.  */
 enum
   {
-    FE_TONEAREST  = 0 << 9,
-#define FE_TONEAREST	FE_TONEAREST
-    FE_TOWARDZERO = 1 << 9,
-#define FE_TOWARDZERO	FE_TOWARDZERO
-    FE_UPWARD     = 2 << 9,
-#define FE_UPWARD	FE_UPWARD
-    FE_DOWNWARD   = 3 << 9,
-#define FE_DOWNWARD	FE_DOWNWARD
+    FE_TONEAREST =
+#define FE_TONEAREST	(0 << 9)
+      FE_TONEAREST,
+    FE_TOWARDZERO =
+#define FE_TOWARDZERO	(1 << 9)
+      FE_TOWARDZERO,
+    FE_UPWARD =
+#define FE_UPWARD	(2 << 9)
+      FE_UPWARD,
+    FE_DOWNWARD =
+#define FE_DOWNWARD	(3 << 9)
+      FE_DOWNWARD,
   };
 
 /* Type representing exception flags. */

Modified: fsf/trunk/libc/ports/sysdeps/hppa/fpu/fclrexcpt.c
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/hppa/fpu/fclrexcpt.c (original)
+++ fsf/trunk/libc/ports/sysdeps/hppa/fpu/fclrexcpt.c Sun Nov  4 00:02:10 2012
@@ -1,5 +1,5 @@
 /* Clear given exceptions in current floating-point environment.
-   Copyright (C) 2000 Free Software Foundation, Inc.
+   Copyright (C) 2000-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by David Huggins-Daines <dhd@xxxxxxxxxx>, 2000
 
@@ -33,3 +33,4 @@
   /* Success.  */
   return 0;
 }
+libm_hidden_def (feclearexcept)

Modified: fsf/trunk/libc/ports/sysdeps/ia64/bits/fenv.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/ia64/bits/fenv.h (original)
+++ fsf/trunk/libc/ports/sysdeps/ia64/bits/fenv.h Sun Nov  4 00:02:10 2012
@@ -25,43 +25,53 @@
 
 enum
   {
-    FE_INEXACT =	1UL << 5,
-#define FE_INEXACT	FE_INEXACT
+    FE_INEXACT =
+#define FE_INEXACT	(1 << 5)
+      FE_INEXACT,
 
-    FE_UNDERFLOW =	1UL << 4,
-#define FE_UNDERFLOW	FE_UNDERFLOW
+    FE_UNDERFLOW =
+#define FE_UNDERFLOW	(1 << 4)
+      FE_UNDERFLOW,
 
-    FE_OVERFLOW =	1UL << 3,
-#define FE_OVERFLOW	FE_OVERFLOW
+    FE_OVERFLOW =
+#define FE_OVERFLOW	(1 << 3)
+      FE_OVERFLOW,
 
-    FE_DIVBYZERO =	1UL << 2,
-#define FE_DIVBYZERO	FE_DIVBYZERO
+    FE_DIVBYZERO =
+#define FE_DIVBYZERO	(1 << 2)
+      FE_DIVBYZERO,
 
-    FE_UNNORMAL =	1UL << 1,
-#define FE_UNNORMAL	FE_UNNORMAL
+    FE_UNNORMAL =
+#define FE_UNNORMAL	(1 << 1)
+      FE_UNNORMAL,
 
-    FE_INVALID =	1UL << 0,
-#define FE_INVALID	FE_INVALID
+    FE_INVALID =
+#define FE_INVALID	(1 << 0)
+      FE_INVALID,
 
     FE_ALL_EXCEPT =
-	(FE_INEXACT | FE_UNDERFLOW | FE_OVERFLOW | FE_DIVBYZERO | FE_UNNORMAL | FE_INVALID)
-#define FE_ALL_EXCEPT	FE_ALL_EXCEPT
+#define FE_ALL_EXCEPT	(FE_INEXACT | FE_UNDERFLOW | FE_OVERFLOW | FE_DIVBYZERO | FE_UNNORMAL | FE_INVALID)
+      FE_ALL_EXCEPT
   };
 
 
 enum
   {
-    FE_TOWARDZERO =	3,
-#define FE_TOWARDZERO	FE_TOWARDZERO
+    FE_TOWARDZERO =
+#define FE_TOWARDZERO	3
+      FE_TOWARDZERO,
 
-    FE_UPWARD =		2,
-#define FE_UPWARD	FE_UPWARD
+    FE_UPWARD =
+#define FE_UPWARD	2
+      FE_UPWARD,
 
-    FE_DOWNWARD = 	1,
-#define FE_DOWNWARD	FE_DOWNWARD
+    FE_DOWNWARD =
+#define FE_DOWNWARD	1
+      FE_DOWNWARD,
 
-    FE_TONEAREST =	0,
-#define FE_TONEAREST	FE_TONEAREST
+    FE_TONEAREST =
+#define FE_TONEAREST	0
+      FE_TONEAREST,
   };
 
 

Modified: fsf/trunk/libc/ports/sysdeps/ia64/fpu/fclrexcpt.c
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/ia64/fpu/fclrexcpt.c (original)
+++ fsf/trunk/libc/ports/sysdeps/ia64/fpu/fclrexcpt.c Sun Nov  4 00:02:10 2012
@@ -1,5 +1,5 @@
 /* Clear given exceptions in current floating-point environment.
-   Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1997-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Christian Boissat <Christian.Boissat@xxxxxxx>, 1999 and
                   Jes Sorensen <Jes.Sorensen@xxxxxxx>, 2000
@@ -36,3 +36,4 @@
   /* success */
   return 0;
 }
+libm_hidden_def (feclearexcept)

Modified: fsf/trunk/libc/ports/sysdeps/m68k/fpu/bits/fenv.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/m68k/fpu/bits/fenv.h (original)
+++ fsf/trunk/libc/ports/sysdeps/m68k/fpu/bits/fenv.h Sun Nov  4 00:02:10 2012
@@ -24,16 +24,21 @@
    the appropriate bits in the FPSR Accrued Exception Byte.  */
 enum
   {
-    FE_INEXACT = 1 << 3,
-#define FE_INEXACT	FE_INEXACT
-    FE_DIVBYZERO = 1 << 4,
-#define FE_DIVBYZERO	FE_DIVBYZERO
-    FE_UNDERFLOW = 1 << 5,
-#define FE_UNDERFLOW	FE_UNDERFLOW
-    FE_OVERFLOW = 1 << 6,
-#define FE_OVERFLOW	FE_OVERFLOW
-    FE_INVALID = 1 << 7
-#define FE_INVALID	FE_INVALID
+    FE_INEXACT =
+#define FE_INEXACT	(1 << 3)
+      FE_INEXACT,
+    FE_DIVBYZERO =
+#define FE_DIVBYZERO	(1 << 4)
+      FE_DIVBYZERO,
+    FE_UNDERFLOW =
+#define FE_UNDERFLOW	(1 << 5)
+      FE_UNDERFLOW,
+    FE_OVERFLOW =
+#define FE_OVERFLOW	(1 << 6)
+      FE_OVERFLOW,
+    FE_INVALID =
+#define FE_INVALID	(1 << 7)
+      FE_INVALID
   };
 
 #define FE_ALL_EXCEPT \
@@ -44,14 +49,18 @@
    appropriate macros.  */
 enum
   {
-    FE_TONEAREST = 0,
-#define FE_TONEAREST	FE_TONEAREST
-    FE_TOWARDZERO = 1 << 4,
-#define FE_TOWARDZERO	FE_TOWARDZERO
-    FE_DOWNWARD = 2 << 4,
-#define FE_DOWNWARD	FE_DOWNWARD
-    FE_UPWARD = 3 << 4
-#define FE_UPWARD	FE_UPWARD
+    FE_TONEAREST =
+#define FE_TONEAREST	0
+      FE_TONEAREST,
+    FE_TOWARDZERO =
+#define FE_TOWARDZERO	(1 << 4)
+      FE_TOWARDZERO,
+    FE_DOWNWARD =
+#define FE_DOWNWARD	(2 << 4)
+      FE_DOWNWARD,
+    FE_UPWARD =
+#define FE_UPWARD	(3 << 4)
+      FE_UPWARD
   };
 
 

Modified: fsf/trunk/libc/ports/sysdeps/m68k/fpu/fclrexcpt.c
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/m68k/fpu/fclrexcpt.c (original)
+++ fsf/trunk/libc/ports/sysdeps/m68k/fpu/fclrexcpt.c Sun Nov  4 00:02:10 2012
@@ -1,5 +1,5 @@
 /* Clear given exceptions in current floating-point environment.
-   Copyright (C) 1997,99,2000,01 Free Software Foundation, Inc.
+   Copyright (C) 1997-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Andreas Schwab <schwab@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
 
@@ -46,4 +46,5 @@
 compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
 #endif
 
+libm_hidden_ver (__feclearexcept, feclearexcept)
 versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);

Modified: fsf/trunk/libc/ports/sysdeps/mips/bits/fenv.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/mips/bits/fenv.h (original)
+++ fsf/trunk/libc/ports/sysdeps/mips/bits/fenv.h Sun Nov  4 00:02:10 2012
@@ -24,16 +24,21 @@
    of the appropriate bits in the FPU control word.  */
 enum
   {
-    FE_INEXACT = 0x04,
-#define FE_INEXACT	FE_INEXACT
-    FE_UNDERFLOW = 0x08,
-#define FE_UNDERFLOW	FE_UNDERFLOW
-    FE_OVERFLOW = 0x10,
-#define FE_OVERFLOW	FE_OVERFLOW
-    FE_DIVBYZERO = 0x20,
-#define FE_DIVBYZERO	FE_DIVBYZERO
-    FE_INVALID = 0x40,
-#define FE_INVALID	FE_INVALID
+    FE_INEXACT =
+#define FE_INEXACT	0x04
+      FE_INEXACT,
+    FE_UNDERFLOW =
+#define FE_UNDERFLOW	0x08
+      FE_UNDERFLOW,
+    FE_OVERFLOW =
+#define FE_OVERFLOW	0x10
+      FE_OVERFLOW,
+    FE_DIVBYZERO =
+#define FE_DIVBYZERO	0x20
+      FE_DIVBYZERO,
+    FE_INVALID =
+#define FE_INVALID	0x40
+      FE_INVALID,
   };
 
 #define FE_ALL_EXCEPT \
@@ -44,14 +49,18 @@
    for the appropriate macros.  */
 enum
   {
-    FE_TONEAREST = 0x0,
-#define FE_TONEAREST	FE_TONEAREST
-    FE_TOWARDZERO = 0x1,
-#define FE_TOWARDZERO	FE_TOWARDZERO
-    FE_UPWARD = 0x2,
-#define FE_UPWARD	FE_UPWARD
-    FE_DOWNWARD = 0x3
-#define FE_DOWNWARD	FE_DOWNWARD
+    FE_TONEAREST =
+#define FE_TONEAREST	0x0
+      FE_TONEAREST,
+    FE_TOWARDZERO =
+#define FE_TOWARDZERO	0x1
+      FE_TOWARDZERO,
+    FE_UPWARD =
+#define FE_UPWARD	0x2
+      FE_UPWARD,
+    FE_DOWNWARD =
+#define FE_DOWNWARD	0x3
+      FE_DOWNWARD
   };
 
 

Modified: fsf/trunk/libc/ports/sysdeps/mips/fpu/fclrexcpt.c
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/mips/fpu/fclrexcpt.c (original)
+++ fsf/trunk/libc/ports/sysdeps/mips/fpu/fclrexcpt.c Sun Nov  4 00:02:10 2012
@@ -1,5 +1,5 @@
 /* Clear given exceptions in current floating-point environment.
-   Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1998-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Andreas Jaeger <aj@xxxxxxx>, 1998.
 
@@ -44,3 +44,4 @@
   /* Success.  */
   return 0;
 }
+libm_hidden_def (feclearexcept)

Modified: fsf/trunk/libc/ports/sysdeps/powerpc/nofpu/fclrexcpt.c
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/powerpc/nofpu/fclrexcpt.c (original)
+++ fsf/trunk/libc/ports/sysdeps/powerpc/nofpu/fclrexcpt.c Sun Nov  4 00:02:10 2012
@@ -1,5 +1,5 @@
 /* Clear floating-point exceptions (soft-float edition).
-   Copyright (C) 2002 Free Software Foundation, Inc.
+   Copyright (C) 2002-2012 Free Software Foundation, Inc.
    Contributed by Aldy Hernandez <aldyh@xxxxxxxxxx>, 2002.
    This file is part of the GNU C Library.
 
@@ -33,4 +33,5 @@
 compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
 #endif
 
+libm_hidden_ver (__feclearexcept, feclearexcept)
 versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);

Modified: fsf/trunk/libc/ports/sysdeps/tile/bits/fenv.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/tile/bits/fenv.h (original)
+++ fsf/trunk/libc/ports/sysdeps/tile/bits/fenv.h Sun Nov  4 00:02:10 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2011-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Chris Metcalf <cmetcalf@xxxxxxxxxx>, 2011.
 
@@ -30,8 +30,9 @@
   {
     __FE_UNDEFINED = 0,
 
-    FE_TONEAREST = 1,
-#define FE_TONEAREST	FE_TONEAREST
+    FE_TONEAREST =
+#define FE_TONEAREST	1
+      FE_TONEAREST,
   };
 
 /* Type representing exception flags (if there were any).  */

Modified: fsf/trunk/libc/ports/sysdeps/tile/libm-test-ulps
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/tile/libm-test-ulps (original)
+++ fsf/trunk/libc/ports/sysdeps/tile/libm-test-ulps Sun Nov  4 00:02:10 2012
@@ -602,8 +602,10 @@
 float: 1
 ifloat: 1
 Test "Real part of: clog10 (0x0.fffffffffffff8p0 + 0x0.fffffffffffff8p-1000 i) == -4.821637332766435821255375046554377090472e-17 + 4.053112396770095089737411317782466262176e-302 i":
+double: 1
 idouble: 1
 Test "Real part of: clog10 (0x0.ffffffp0 + 0x0.ffffffp-100 i) == -2.588596909321764128428416045209904492216e-8 + 3.425979381266895667295625489912064603415e-31 i":
+double: 1
 float: 2
 idouble: 1
 ifloat: 2
@@ -634,14 +636,19 @@
 float: 1
 ifloat: 1
 Test "Real part of: clog10 (0x10673dd0f2481p-51 + 0x7ef1d17cefbd2p-51 i) == 1.3918041236396763648388478552321724382899e-29 + 0.6263795733790237053262025311642907438291 i":
+double: 1
 idouble: 1
 Test "Real part of: clog10 (0x1367a310575591p-54 + 0x3cfcc0a0541f60p-54 i) == 2.2081507730821788480616336165447731164865e-32 + 0.5484039935757001196548030312819898864760 i":
+double: 1
 idouble: 1
 Test "Imaginary part of: clog10 (0x1367a310575591p-54 + 0x3cfcc0a0541f60p-54 i) == 2.2081507730821788480616336165447731164865e-32 + 0.5484039935757001196548030312819898864760 i":
+double: 1
 idouble: 1
 Test "Imaginary part of: clog10 (0x164c74eea876p-45 + 0x16f393482f77p-45 i) == -1.3155760824064879362415202279780039150764e-26 + 0.3473590599762514228227328130640352044313 i":
+double: 1
 idouble: 1
 Test "Imaginary part of: clog10 (0x1a6p-10 + 0x3a5p-10 i) == -6.2126412844802358329771948751248003038444e-07 + 0.4977135139537443711784513409096950995985 i":
+double: 1
 idouble: 1
 Test "Imaginary part of: clog10 (0x1p-1074 + 0x1.fp+1023 i) == 308.2409272754311106024666378243768099991 + 0.6821881769209206737428918127156778851051 i":
 double: 1
@@ -693,6 +700,7 @@
 idouble: 1
 ifloat: 1
 Test "Real part of: clog10 (0x2818p-15 + 0x798fp-15 i) == 6.6737261053986614395049481326819059203910e-09 + 0.5438241985991753781478398141908629586460 i":
+double: 1
 float: 1
 idouble: 1
 ifloat: 1
@@ -700,23 +708,31 @@
 float: 1
 ifloat: 1
 Test "Real part of: clog10 (0x2dd46725bp-35 + 0x7783a1284p-35 i) == 1.9312741086596516918394613098872836703188e-20 + 0.5231613813514771042838490538484014771862 i":
+double: 1
 idouble: 1
 Test "Real part of: clog10 (0x2ede88p-23 + 0x771c3fp-23 i) == -1.9440841725722970687903291200493082253766e-13 + 0.5193774116724956222518530053006822210323 i":
 float: 1
 ifloat: 1
 Test "Imaginary part of: clog10 (0x2ede88p-23 + 0x771c3fp-23 i) == -1.9440841725722970687903291200493082253766e-13 + 0.5193774116724956222518530053006822210323 i":
+double: 1
 idouble: 1
 Test "Real part of: clog10 (0x4447d7175p-35 + 0x6c445e00ap-35 i) == -6.4375803621988389731799033530075237868110e-21 + 0.4378257977686804492768642780897650927167 i":
+double: 1
 idouble: 1
 Test "Imaginary part of: clog10 (0x5b06b680ea2ccp-52 + 0xef452b965da9fp-52 i) == 3.6079845358966994996207055940336690133424e-30 + 0.5243112258263349992771652393178033846555 i":
+double: 1
 idouble: 1
 Test "Imaginary part of: clog10 (0x9b57bp-20 + 0xcb7b4p-20 i) == -1.7182001068739620267773842120965071561416e-11 + 0.3990121149225253562859800593935899629087 i":
+double: 1
 idouble: 1
 Test "Real part of: clog10 (0xf2p-10 + 0x3e3p-10 i) == 2.6921240173351112953324592659528481616879e-06 + 0.5785726025799636431142862788413361783862 i":
+double: 1
 idouble: 1
 Test "Imaginary part of: clog10 (0xf2p-10 + 0x3e3p-10 i) == 2.6921240173351112953324592659528481616879e-06 + 0.5785726025799636431142862788413361783862 i":
+double: 1
 idouble: 1
 Test "Imaginary part of: clog10 (0xfe961079616p-45 + 0x1bc37e09e6d1p-45 i) == 2.3329549194675052736016290082882121135546e-26 + 0.4561756099441139182878993697611751382976 i":
+double: 1
 idouble: 1
 Test "Imaginary part of: clog10 (1.0 + 0x1.234566p-10 i) == 2.680828048441605163181684680300513080769e-7 + 4.825491868832381486767558728169977751564e-4 i":
 double: 1

Modified: fsf/trunk/libc/scripts/cross-test-ssh.sh
==============================================================================
--- fsf/trunk/libc/scripts/cross-test-ssh.sh (original)
+++ fsf/trunk/libc/scripts/cross-test-ssh.sh Sun Nov  4 00:02:10 2012
@@ -108,37 +108,25 @@
   done
 }
 
-# Remove unnecessary newlines from a Bourne shell command sequence.
-remove_newlines ()
+# Unset all variables from the blacklist.  Then echo all exported
+# variables.
+blacklist_exports ()
 {
-  sed -n \
-    -e '1h' \
-    -e '2,$H' \
-    -e '${g
-          s/\([^\]\)\n/\1; /g
-          p
-         }'
+  (unset ${env_blacklist}; export -p) | sed 's/^declare -x/export/'
 }
 
-# Unset all variables from the blacklist.  Then echo all exported
-# variables.  The 'export -p' command adds backslashes for environment
-# variables which contain newlines.
-blacklist_exports ()
-{
-  (unset ${env_blacklist}; export -p) | remove_newlines
-}
-
-# Produce properly quoted Bourne shell arguments for 'env' to carry
-# over the current environment, less blacklisted variables.
+# Produce commands to carry over the current environment, less blacklisted
+# variables.
 exports="$(blacklist_exports)"
-exports="${exports:+${exports}; }"
 
 # Transform the current argument list into a properly quoted Bourne shell
 # command string.
 command="$(bourne_quote "$@")"
 
 # Add commands to set environment variables and the current directory.
-command="${exports}cd $PWD; ${command}"
+command="${exports}
+cd $(bourne_quote "$PWD")
+${command}"
 
 # HOST's sshd simply concatenates its arguments with spaces and
 # passes them to some shell.  We want to force the use of /bin/sh,

Modified: fsf/trunk/libc/stdlib/Makefile
==============================================================================
--- fsf/trunk/libc/stdlib/Makefile (original)
+++ fsf/trunk/libc/stdlib/Makefile Sun Nov  4 00:02:10 2012
@@ -20,7 +20,7 @@
 #
 subdir	:= stdlib
 
-headers	:= stdlib.h bits/stdlib.h bits/stdlib-ldbl.h			      \
+headers	:= stdlib.h bits/stdlib.h bits/stdlib-ldbl.h bits/stdlib-float.h      \
 	   monetary.h bits/monetary-ldbl.h				      \
 	   inttypes.h stdint.h bits/wordsize.h				      \
 	   errno.h sys/errno.h bits/errno.h				      \

Added: fsf/trunk/libc/stdlib/bits/stdlib-float.h
==============================================================================
--- fsf/trunk/libc/stdlib/bits/stdlib-float.h (added)
+++ fsf/trunk/libc/stdlib/bits/stdlib-float.h Sun Nov  4 00:02:10 2012
@@ -1,0 +1,31 @@
+/* Floating-point inline functions for stdlib.h.
+   Copyright (C) 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
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _STDLIB_H
+# error "Never use <bits/stdlib-float.h> directly; include <stdlib.h> instead."
+#endif
+
+#ifdef __USE_EXTERN_INLINES
+__BEGIN_NAMESPACE_STD
+__extern_inline double
+__NTH (atof (const char *__nptr))
+{
+  return strtod (__nptr, (char **) NULL);
+}
+__END_NAMESPACE_STD
+#endif /* Optimizing and Inlining.  */

Modified: fsf/trunk/libc/stdlib/stdlib.h
==============================================================================
--- fsf/trunk/libc/stdlib/stdlib.h (original)
+++ fsf/trunk/libc/stdlib/stdlib.h Sun Nov  4 00:02:10 2012
@@ -274,11 +274,6 @@
 
 #ifdef __USE_EXTERN_INLINES
 __BEGIN_NAMESPACE_STD
-__extern_inline double
-__NTH (atof (const char *__nptr))
-{
-  return strtod (__nptr, (char **) NULL);
-}
 __extern_inline int
 __NTH (atoi (const char *__nptr))
 {
@@ -953,6 +948,7 @@
      __THROW __nonnull ((1));
 #endif
 
+#include <bits/stdlib-float.h>
 
 /* Define some macros helping to catch buffer overflows.  */
 #if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function

Modified: fsf/trunk/libc/sysdeps/generic/math_private.h
==============================================================================
--- fsf/trunk/libc/sysdeps/generic/math_private.h (original)
+++ fsf/trunk/libc/sysdeps/generic/math_private.h Sun Nov  4 00:02:10 2012
@@ -402,6 +402,22 @@
 #endif
 
 static __always_inline void
+default_libc_fesetround (int r)
+{
+  (void) fesetround (r);
+}
+
+#ifndef libc_fesetround
+# define libc_fesetround  default_libc_fesetround
+#endif
+#ifndef libc_fesetroundf
+# define libc_fesetroundf default_libc_fesetround
+#endif
+#ifndef libc_fesetroundl
+# define libc_fesetroundl default_libc_fesetround
+#endif
+
+static __always_inline void
 default_libc_feholdexcept_setround (fenv_t *e, int r)
 {
   feholdexcept (e);

Modified: fsf/trunk/libc/sysdeps/i386/fpu/fclrexcpt.c
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/fpu/fclrexcpt.c (original)
+++ fsf/trunk/libc/sysdeps/i386/fpu/fclrexcpt.c Sun Nov  4 00:02:10 2012
@@ -1,5 +1,5 @@
 /* Clear given exceptions in current floating-point environment.
-   Copyright (C) 1997,99,2000, 2001, 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1997-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1997.
 
@@ -65,4 +65,5 @@
 compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
 #endif
 
+libm_hidden_ver (__feclearexcept, feclearexcept)
 versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);

Modified: fsf/trunk/libc/sysdeps/i386/fpu/fenv_private.h
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/fpu/fenv_private.h (original)
+++ fsf/trunk/libc/sysdeps/i386/fpu/fenv_private.h Sun Nov  4 00:02:10 2012
@@ -77,6 +77,24 @@
 }
 
 static __always_inline void
+libc_fesetround_sse (int r)
+{
+  unsigned int mxcsr;
+  asm (STMXCSR " %0" : "=m" (*&mxcsr));
+  mxcsr = (mxcsr & ~0x6000) | (r << 3);
+  asm volatile (LDMXCSR " %0" : : "m" (*&mxcsr));
+}
+
+static __always_inline void
+libc_fesetround_387 (int r)
+{
+  fpu_control_t cw;
+  _FPU_GETCW (cw);
+  cw = (cw & ~0xc00) | r;
+  _FPU_SETCW (cw);
+}
+
+static __always_inline void
 libc_feholdexcept_setround_sse (fenv_t *e, int r)
 {
   unsigned int mxcsr;
@@ -247,6 +265,7 @@
 
 #ifdef __SSE_MATH__
 # define libc_feholdexceptf		libc_feholdexcept_sse
+# define libc_fesetroundf		libc_fesetround_sse
 # define libc_feholdexcept_setroundf	libc_feholdexcept_setround_sse
 # define libc_fetestexceptf		libc_fetestexcept_sse
 # define libc_fesetenvf			libc_fesetenv_sse
@@ -256,6 +275,7 @@
 # define libc_feresetroundf		libc_feresetround_sse
 #else
 # define libc_feholdexceptf		libc_feholdexcept_387
+# define libc_fesetroundf		libc_fesetround_387
 # define libc_feholdexcept_setroundf	libc_feholdexcept_setround_387
 # define libc_fetestexceptf		libc_fetestexcept_387
 # define libc_fesetenvf			libc_fesetenv_387
@@ -267,6 +287,7 @@
 
 #ifdef __SSE2_MATH__
 # define libc_feholdexcept		libc_feholdexcept_sse
+# define libc_fesetround		libc_fesetround_sse
 # define libc_feholdexcept_setround	libc_feholdexcept_setround_sse
 # define libc_fetestexcept		libc_fetestexcept_sse
 # define libc_fesetenv			libc_fesetenv_sse
@@ -276,6 +297,7 @@
 # define libc_feresetround		libc_feresetround_sse
 #else
 # define libc_feholdexcept		libc_feholdexcept_387
+# define libc_fesetround		libc_fesetround_387
 # define libc_feholdexcept_setround	libc_feholdexcept_setround_387
 # define libc_fetestexcept		libc_fetestexcept_387
 # define libc_fesetenv			libc_fesetenv_387
@@ -286,6 +308,7 @@
 #endif /* __SSE2_MATH__ */
 
 #define libc_feholdexceptl		libc_feholdexcept_387
+#define libc_fesetroundl		libc_fesetround_387
 #define libc_feholdexcept_setroundl	libc_feholdexcept_setround_387
 #define libc_fetestexceptl		libc_fetestexcept_387
 #define libc_fesetenvl			libc_fesetenv_387

Modified: fsf/trunk/libc/sysdeps/ieee754/dbl-64/s_fma.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/dbl-64/s_fma.c (original)
+++ fsf/trunk/libc/sysdeps/ieee754/dbl-64/s_fma.c Sun Nov  4 00:02:10 2012
@@ -167,6 +167,9 @@
   if (__builtin_expect ((x == 0 || y == 0) && z == 0, 0))
     return x * y + z;
 
+  fenv_t env;
+  libc_feholdexcept_setround (&env, FE_TONEAREST);
+
   /* Multiplication m1 + m2 = x * y using Dekker's algorithm.  */
 #define C ((1 << (DBL_MANT_DIG + 1) / 2) + 1)
   double x1 = x * C;
@@ -185,9 +188,20 @@
   t1 = m1 - t1;
   t2 = z - t2;
   double a2 = t1 + t2;
-
-  fenv_t env;
-  libc_feholdexcept_setround (&env, FE_TOWARDZERO);
+  feclearexcept (FE_INEXACT);
+
+  /* If the result is an exact zero, ensure it has the correct
+     sign.  */
+  if (a1 == 0 && m2 == 0)
+    {
+      libc_feupdateenv (&env);
+      /* Ensure that round-to-nearest value of z + m1 is not
+	 reused.  */
+      asm volatile ("" : "=m" (z) : "m" (z));
+      return z + m1;
+    }
+
+  libc_fesetround (FE_TOWARDZERO);
 
   /* Perform m2 + a2 addition with round to odd.  */
   u.d = a2 + m2;

Modified: fsf/trunk/libc/sysdeps/ieee754/ldbl-128/s_fmal.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/ldbl-128/s_fmal.c (original)
+++ fsf/trunk/libc/sysdeps/ieee754/ldbl-128/s_fmal.c Sun Nov  4 00:02:10 2012
@@ -170,6 +170,10 @@
   if (__builtin_expect ((x == 0 || y == 0) && z == 0, 0))
     return x * y + z;
 
+  fenv_t env;
+  feholdexcept (&env);
+  fesetround (FE_TONEAREST);
+
   /* Multiplication m1 + m2 = x * y using Dekker's algorithm.  */
 #define C ((1LL << (LDBL_MANT_DIG + 1) / 2) + 1)
   long double x1 = x * C;
@@ -188,9 +192,19 @@
   t1 = m1 - t1;
   t2 = z - t2;
   long double a2 = t1 + t2;
-
-  fenv_t env;
-  feholdexcept (&env);
+  feclearexcept (FE_INEXACT);
+
+  /* If the result is an exact zero, ensure it has the correct
+     sign.  */
+  if (a1 == 0 && m2 == 0)
+    {
+      feupdateenv (&env);
+      /* Ensure that round-to-nearest value of z + m1 is not
+	 reused.  */
+      asm volatile ("" : "=m" (z) : "m" (z));
+      return z + m1;
+    }
+
   fesetround (FE_TOWARDZERO);
   /* Perform m2 + a2 addition with round to odd.  */
   u.d = a2 + m2;

Modified: fsf/trunk/libc/sysdeps/ieee754/ldbl-96/s_fma.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/ldbl-96/s_fma.c (original)
+++ fsf/trunk/libc/sysdeps/ieee754/ldbl-96/s_fma.c Sun Nov  4 00:02:10 2012
@@ -42,6 +42,10 @@
   if (__builtin_expect ((x == 0 || y == 0) && z == 0, 0))
     return x * y + z;
 
+  fenv_t env;
+  feholdexcept (&env);
+  fesetround (FE_TONEAREST);
+
   /* Multiplication m1 + m2 = x * y using Dekker's algorithm.  */
 #define C ((1ULL << (LDBL_MANT_DIG + 1) / 2) + 1)
   long double x1 = (long double) x * C;
@@ -60,9 +64,19 @@
   t1 = m1 - t1;
   t2 = z - t2;
   long double a2 = t1 + t2;
+  feclearexcept (FE_INEXACT);
 
-  fenv_t env;
-  feholdexcept (&env);
+  /* If the result is an exact zero, ensure it has the correct
+     sign.  */
+  if (a1 == 0 && m2 == 0)
+    {
+      feupdateenv (&env);
+      /* Ensure that round-to-nearest value of z + m1 is not
+	 reused.  */
+      asm volatile ("" : "=m" (z) : "m" (z));
+      return z + m1;
+    }
+
   fesetround (FE_TOWARDZERO);
   /* Perform m2 + a2 addition with round to odd.  */
   a2 = a2 + m2;

Modified: fsf/trunk/libc/sysdeps/ieee754/ldbl-96/s_fmal.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/ldbl-96/s_fmal.c (original)
+++ fsf/trunk/libc/sysdeps/ieee754/ldbl-96/s_fmal.c Sun Nov  4 00:02:10 2012
@@ -168,6 +168,10 @@
   if (__builtin_expect ((x == 0 || y == 0) && z == 0, 0))
     return x * y + z;
 
+  fenv_t env;
+  feholdexcept (&env);
+  fesetround (FE_TONEAREST);
+
   /* Multiplication m1 + m2 = x * y using Dekker's algorithm.  */
 #define C ((1LL << (LDBL_MANT_DIG + 1) / 2) + 1)
   long double x1 = x * C;
@@ -186,9 +190,19 @@
   t1 = m1 - t1;
   t2 = z - t2;
   long double a2 = t1 + t2;
-
-  fenv_t env;
-  feholdexcept (&env);
+  feclearexcept (FE_INEXACT);
+
+  /* If the result is an exact zero, ensure it has the correct
+     sign.  */
+  if (a1 == 0 && m2 == 0)
+    {
+      feupdateenv (&env);
+      /* Ensure that round-to-nearest value of z + m1 is not
+	 reused.  */
+      asm volatile ("" : "=m" (z) : "m" (z));
+      return z + m1;
+    }
+
   fesetround (FE_TOWARDZERO);
   /* Perform m2 + a2 addition with round to odd.  */
   u.d = a2 + m2;

Modified: fsf/trunk/libc/sysdeps/powerpc/bits/fenv.h
==============================================================================
--- fsf/trunk/libc/sysdeps/powerpc/bits/fenv.h (original)
+++ fsf/trunk/libc/sysdeps/powerpc/bits/fenv.h Sun Nov  4 00:02:10 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 1999, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 1997-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
@@ -24,14 +24,18 @@
    the appropriate bits in the FPSCR...  */
 enum
   {
-    FE_INEXACT = 1 << (31 - 6),
-#define FE_INEXACT	FE_INEXACT
-    FE_DIVBYZERO = 1 << (31 - 5),
-#define FE_DIVBYZERO	FE_DIVBYZERO
-    FE_UNDERFLOW = 1 << (31 - 4),
-#define FE_UNDERFLOW	FE_UNDERFLOW
-    FE_OVERFLOW = 1 << (31 - 3),
-#define FE_OVERFLOW	FE_OVERFLOW
+    FE_INEXACT =
+#define FE_INEXACT	(1 << (31 - 6))
+      FE_INEXACT,
+    FE_DIVBYZERO =
+#define FE_DIVBYZERO	(1 << (31 - 5))
+      FE_DIVBYZERO,
+    FE_UNDERFLOW =
+#define FE_UNDERFLOW	(1 << (31 - 4))
+      FE_UNDERFLOW,
+    FE_OVERFLOW =
+#define FE_OVERFLOW	(1 << (31 - 3))
+      FE_OVERFLOW,
 
     /* ... except for FE_INVALID, for which we use bit 31. FE_INVALID
        actually corresponds to bits 7 through 12 and 21 through 23
@@ -39,8 +43,9 @@
        says that it must be a power of 2.  Instead we use bit 2 which
        is the summary bit for all the FE_INVALID exceptions, which
        kind of makes sense.  */
-    FE_INVALID = 1 << (31 - 2),
-#define FE_INVALID	FE_INVALID
+    FE_INVALID =
+#define FE_INVALID	(1 << (31 - 2))
+      FE_INVALID,
 
 #ifdef __USE_GNU
     /* Breakdown of the FE_INVALID bits. Setting FE_INVALID on an
@@ -50,43 +55,52 @@
        enable these exceptions individually.  */
 
     /* Operation with SNaN. */
-    FE_INVALID_SNAN = 1 << (31 - 7),
-# define FE_INVALID_SNAN	FE_INVALID_SNAN
+    FE_INVALID_SNAN =
+# define FE_INVALID_SNAN	(1 << (31 - 7))
+      FE_INVALID_SNAN,
 
     /* Inf - Inf */
-    FE_INVALID_ISI = 1 << (31 - 8),
-# define FE_INVALID_ISI		FE_INVALID_ISI
+    FE_INVALID_ISI =
+# define FE_INVALID_ISI	(1 << (31 - 8))
+      FE_INVALID_ISI,
 
     /* Inf / Inf */
-    FE_INVALID_IDI = 1 << (31 - 9),
-# define FE_INVALID_IDI		FE_INVALID_IDI
+    FE_INVALID_IDI =
+# define FE_INVALID_IDI	(1 << (31 - 9))
+      FE_INVALID_IDI,
 
     /* 0 / 0 */
-    FE_INVALID_ZDZ = 1 << (31 - 10),
-# define FE_INVALID_ZDZ		FE_INVALID_ZDZ
+    FE_INVALID_ZDZ =
+# define FE_INVALID_ZDZ	(1 << (31 - 10))
+      FE_INVALID_ZDZ,
 
     /* Inf * 0 */
-    FE_INVALID_IMZ = 1 << (31 - 11),
-# define FE_INVALID_IMZ		FE_INVALID_IMZ
+    FE_INVALID_IMZ =
+# define FE_INVALID_IMZ	(1 << (31 - 11))
+      FE_INVALID_IMZ,
 
     /* Comparison with NaN or SNaN.  */
-    FE_INVALID_COMPARE = 1 << (31 - 12),
-# define FE_INVALID_COMPARE	FE_INVALID_COMPARE
+    FE_INVALID_COMPARE =
+# define FE_INVALID_COMPARE	(1 << (31 - 12))
+      FE_INVALID_COMPARE,
 
     /* Invalid operation flag for software (not set by hardware).  */
     /* Note that some chips don't have this implemented, presumably
        because no-one expected anyone to write software for them %-).  */
-    FE_INVALID_SOFTWARE = 1 << (31 - 21),
-# define FE_INVALID_SOFTWARE	FE_INVALID_SOFTWARE
+    FE_INVALID_SOFTWARE =
+# define FE_INVALID_SOFTWARE	(1 << (31 - 21))
+      FE_INVALID_SOFTWARE,
 
     /* Square root of negative number (including -Inf).  */
     /* Note that some chips don't have this implemented.  */
-    FE_INVALID_SQRT = 1 << (31 - 22),
-# define FE_INVALID_SQRT	FE_INVALID_SQRT
+    FE_INVALID_SQRT =
+# define FE_INVALID_SQRT	(1 << (31 - 22))
+      FE_INVALID_SQRT,
 
     /* Conversion-to-integer of a NaN or a number too large or too small.  */
-    FE_INVALID_INTEGER_CONVERSION = 1 << (31 - 23)
-# define FE_INVALID_INTEGER_CONVERSION	FE_INVALID_INTEGER_CONVERSION
+    FE_INVALID_INTEGER_CONVERSION =
+# define FE_INVALID_INTEGER_CONVERSION	(1 << (31 - 23))
+      FE_INVALID_INTEGER_CONVERSION
 
 # define FE_ALL_INVALID \
         (FE_INVALID_SNAN | FE_INVALID_ISI | FE_INVALID_IDI | FE_INVALID_ZDZ \
@@ -103,14 +117,18 @@
    appropriate macros.  */
 enum
   {
-    FE_TONEAREST = 0,
-#define FE_TONEAREST	FE_TONEAREST
-    FE_TOWARDZERO = 1,
-#define FE_TOWARDZERO	FE_TOWARDZERO
-    FE_UPWARD = 2,
-#define FE_UPWARD	FE_UPWARD
-    FE_DOWNWARD = 3
-#define FE_DOWNWARD	FE_DOWNWARD
+    FE_TONEAREST =
+#define FE_TONEAREST	0
+      FE_TONEAREST,
+    FE_TOWARDZERO =
+#define FE_TOWARDZERO	1
+      FE_TOWARDZERO,
+    FE_UPWARD =
+#define FE_UPWARD	2
+      FE_UPWARD,
+    FE_DOWNWARD =
+#define FE_DOWNWARD	3
+      FE_DOWNWARD
   };
 
 /* Type representing exception flags.  */

Modified: fsf/trunk/libc/sysdeps/powerpc/fpu/fclrexcpt.c
==============================================================================
--- fsf/trunk/libc/sysdeps/powerpc/fpu/fclrexcpt.c (original)
+++ fsf/trunk/libc/sysdeps/powerpc/fpu/fclrexcpt.c Sun Nov  4 00:02:10 2012
@@ -1,5 +1,5 @@
 /* Clear given exceptions in current floating-point environment.
-   Copyright (C) 1997,99,2000,01 Free Software Foundation, Inc.
+   Copyright (C) 1997-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
@@ -44,4 +44,5 @@
 compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
 #endif
 
+libm_hidden_ver (__feclearexcept, feclearexcept)
 versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);

Modified: fsf/trunk/libc/sysdeps/s390/fpu/bits/fenv.h
==============================================================================
--- fsf/trunk/libc/sysdeps/s390/fpu/bits/fenv.h (original)
+++ fsf/trunk/libc/sysdeps/s390/fpu/bits/fenv.h Sun Nov  4 00:02:10 2012
@@ -24,16 +24,21 @@
    of the appropriate bits in the FPU control word.  */
 enum
   {
-    FE_INVALID = 0x80,
-#define FE_INVALID	FE_INVALID
-    FE_DIVBYZERO = 0x40,
-#define FE_DIVBYZERO	FE_DIVBYZERO
-    FE_OVERFLOW = 0x20,
-#define FE_OVERFLOW	FE_OVERFLOW
-    FE_UNDERFLOW = 0x10,
-#define FE_UNDERFLOW	FE_UNDERFLOW
-    FE_INEXACT = 0x08
-#define FE_INEXACT	FE_INEXACT
+    FE_INVALID =
+#define FE_INVALID	0x80
+      FE_INVALID,
+    FE_DIVBYZERO =
+#define FE_DIVBYZERO	0x40
+      FE_DIVBYZERO,
+    FE_OVERFLOW =
+#define FE_OVERFLOW	0x20
+      FE_OVERFLOW,
+    FE_UNDERFLOW =
+#define FE_UNDERFLOW	0x10
+      FE_UNDERFLOW,
+    FE_INEXACT =
+#define FE_INEXACT	0x08
+      FE_INEXACT
   };
 /* We dont use the y bit of the DXC in the floating point control register
    as glibc has no FE encoding for fe inexact incremented
@@ -48,14 +53,18 @@
 
 enum
   {
-    FE_TONEAREST = 0,
-#define FE_TONEAREST	FE_TONEAREST
-    FE_DOWNWARD = 0x3,
-#define FE_DOWNWARD	FE_DOWNWARD
-    FE_UPWARD = 0x2,
-#define FE_UPWARD	FE_UPWARD
-    FE_TOWARDZERO = 0x1
-#define FE_TOWARDZERO	FE_TOWARDZERO
+    FE_TONEAREST =
+#define FE_TONEAREST	0
+      FE_TONEAREST,
+    FE_DOWNWARD =
+#define FE_DOWNWARD	0x3
+      FE_DOWNWARD,
+    FE_UPWARD =
+#define FE_UPWARD	0x2
+      FE_UPWARD,
+    FE_TOWARDZERO =
+#define FE_TOWARDZERO	0x1
+      FE_TOWARDZERO
   };
 
 

Modified: fsf/trunk/libc/sysdeps/s390/fpu/fclrexcpt.c
==============================================================================
--- fsf/trunk/libc/sysdeps/s390/fpu/fclrexcpt.c (original)
+++ fsf/trunk/libc/sysdeps/s390/fpu/fclrexcpt.c Sun Nov  4 00:02:10 2012
@@ -1,5 +1,5 @@
 /* Clear given exceptions in current floating-point environment.
-   Copyright (C) 2000 Free Software Foundation, Inc.
+   Copyright (C) 2000-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
@@ -37,3 +37,4 @@
   /* Success.  */
   return 0;
 }
+libm_hidden_def (feclearexcept)

Modified: fsf/trunk/libc/sysdeps/sh/sh4/fpu/bits/fenv.h
==============================================================================
--- fsf/trunk/libc/sysdeps/sh/sh4/fpu/bits/fenv.h (original)
+++ fsf/trunk/libc/sysdeps/sh/sh4/fpu/bits/fenv.h Sun Nov  4 00:02:10 2012
@@ -24,16 +24,21 @@
    of the appropriate bits in the FPU control word.  */
 enum
   {
-    FE_INEXACT = 0x04,
-#define FE_INEXACT	FE_INEXACT
-    FE_UNDERFLOW = 0x08,
-#define FE_UNDERFLOW	FE_UNDERFLOW
-    FE_OVERFLOW = 0x10,
-#define FE_OVERFLOW	FE_OVERFLOW
-    FE_DIVBYZERO = 0x20,
-#define FE_DIVBYZERO	FE_DIVBYZERO
-    FE_INVALID = 0x40,
-#define FE_INVALID	FE_INVALID
+    FE_INEXACT =
+#define FE_INEXACT	0x04
+      FE_INEXACT,
+    FE_UNDERFLOW =
+#define FE_UNDERFLOW	0x08
+      FE_UNDERFLOW,
+    FE_OVERFLOW =
+#define FE_OVERFLOW	0x10
+      FE_OVERFLOW,
+    FE_DIVBYZERO =
+#define FE_DIVBYZERO	0x20
+      FE_DIVBYZERO,
+    FE_INVALID =
+#define FE_INVALID	0x40
+      FE_INVALID,
   };
 
 #define FE_ALL_EXCEPT \
@@ -46,10 +51,12 @@
   {
     __FE_UNDEFINED = -1,
 
-    FE_TONEAREST = 0x0,
-#define FE_TONEAREST	FE_TONEAREST
-    FE_TOWARDZERO = 0x1,
-#define FE_TOWARDZERO	FE_TOWARDZERO
+    FE_TONEAREST =
+#define FE_TONEAREST	0x0
+      FE_TONEAREST,
+    FE_TOWARDZERO =
+#define FE_TOWARDZERO	0x1
+      FE_TOWARDZERO,
   };
 
 

Modified: fsf/trunk/libc/sysdeps/sh/sh4/fpu/fclrexcpt.c
==============================================================================
--- fsf/trunk/libc/sysdeps/sh/sh4/fpu/fclrexcpt.c (original)
+++ fsf/trunk/libc/sysdeps/sh/sh4/fpu/fclrexcpt.c Sun Nov  4 00:02:10 2012
@@ -39,3 +39,4 @@
 
   return 0;
 }
+libm_hidden_def (feclearexcept)

Modified: fsf/trunk/libc/sysdeps/sparc/fpu/bits/fenv.h
==============================================================================
--- fsf/trunk/libc/sysdeps/sparc/fpu/bits/fenv.h (original)
+++ fsf/trunk/libc/sysdeps/sparc/fpu/bits/fenv.h Sun Nov  4 00:02:10 2012
@@ -26,16 +26,21 @@
    of the appropriate accrued exception bits from the FSR.  */
 enum
   {
-    FE_INVALID = 	(1 << 9),
-#define FE_INVALID	FE_INVALID
-    FE_OVERFLOW = 	(1 << 8),
-#define FE_OVERFLOW	FE_OVERFLOW
-    FE_UNDERFLOW = 	(1 << 7),
-#define FE_UNDERFLOW	FE_UNDERFLOW
-    FE_DIVBYZERO = 	(1 << 6),
-#define FE_DIVBYZERO	FE_DIVBYZERO
-    FE_INEXACT = 	(1 << 5)
-#define FE_INEXACT	FE_INEXACT
+    FE_INVALID =
+#define FE_INVALID	(1 << 9)
+      FE_INVALID,
+    FE_OVERFLOW =
+#define FE_OVERFLOW	(1 << 8)
+      FE_OVERFLOW,
+    FE_UNDERFLOW =
+#define FE_UNDERFLOW	(1 << 7)
+      FE_UNDERFLOW,
+    FE_DIVBYZERO =
+#define FE_DIVBYZERO	(1 << 6)
+      FE_DIVBYZERO,
+    FE_INEXACT =
+#define FE_INEXACT	(1 << 5)
+      FE_INEXACT
   };
 
 #define FE_ALL_EXCEPT \
@@ -46,14 +51,18 @@
    for the appropriate macros.  */
 enum
   {
-    FE_TONEAREST = 	(0U << 30),
-#define FE_TONEAREST	FE_TONEAREST
-    FE_TOWARDZERO = 	(1U << 30),
-#define FE_TOWARDZERO	FE_TOWARDZERO
-    FE_UPWARD = 	(2U << 30),
-#define FE_UPWARD	FE_UPWARD
-    FE_DOWNWARD = 	(3U << 30)
-#define FE_DOWNWARD	FE_DOWNWARD
+    FE_TONEAREST =
+#define FE_TONEAREST	(0 << 30)
+      FE_TONEAREST,
+    FE_TOWARDZERO =
+#define FE_TOWARDZERO	(1 << 30)
+      FE_TOWARDZERO,
+    FE_UPWARD =
+#define FE_UPWARD	(-0x7fffffff - 1) /* (2 << 30) */
+      FE_UPWARD,
+    FE_DOWNWARD =
+#define FE_DOWNWARD	(-0x40000000) /* (3 << 30) */
+      FE_DOWNWARD
   };
 
 #define __FE_ROUND_MASK	(3U << 30)

Modified: fsf/trunk/libc/sysdeps/sparc/fpu/fclrexcpt.c
==============================================================================
--- fsf/trunk/libc/sysdeps/sparc/fpu/fclrexcpt.c (original)
+++ fsf/trunk/libc/sysdeps/sparc/fpu/fclrexcpt.c Sun Nov  4 00:02:10 2012
@@ -1,5 +1,5 @@
 /* Clear given exceptions in current floating-point environment.
-   Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1997-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
@@ -39,4 +39,5 @@
 compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
 #endif
 
+libm_hidden_ver (__feclearexcept, feclearexcept)
 versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);

Modified: fsf/trunk/libc/sysdeps/sparc/fpu/fenv_private.h
==============================================================================
--- fsf/trunk/libc/sysdeps/sparc/fpu/fenv_private.h (original)
+++ fsf/trunk/libc/sysdeps/sparc/fpu/fenv_private.h Sun Nov  4 00:02:10 2012
@@ -10,6 +10,15 @@
   __fenv_stfsr(etmp);
   *(e) = etmp;
   etmp = etmp & ~((0x1f << 23) | FE_ALL_EXCEPT);
+  __fenv_ldfsr(etmp);
+}
+
+static __always_inline void
+libc_fesetround (int r)
+{
+  fenv_t etmp;
+  __fenv_stfsr(etmp);
+  etmp = (etmp & ~__FE_ROUND_MASK) | (r);
   __fenv_ldfsr(etmp);
 }
 
@@ -79,6 +88,7 @@
 }
 
 #define libc_feholdexceptf		libc_feholdexcept
+#define libc_fesetroundf		libc_fesetround
 #define libc_feholdexcept_setroundf	libc_feholdexcept_setround
 #define libc_fetestexceptf		libc_fetestexcept
 #define libc_fesetenvf			libc_fesetenv
@@ -87,6 +97,7 @@
 #define libc_feholdsetroundf		libc_feholdsetround
 #define libc_feresetroundf		libc_feresetround
 #define libc_feholdexcept		libc_feholdexcept
+#define libc_fesetround			libc_fesetround
 #define libc_feholdexcept_setround	libc_feholdexcept_setround
 #define libc_fetestexcept		libc_fetestexcept
 #define libc_fesetenv			libc_fesetenv
@@ -95,6 +106,7 @@
 #define libc_feholdsetround		libc_feholdsetround
 #define libc_feresetround		libc_feresetround
 #define libc_feholdexceptl		libc_feholdexcept
+#define libc_fesetroundl		libc_fesetround
 #define libc_feholdexcept_setroundl	libc_feholdexcept_setround
 #define libc_fetestexceptl		libc_fetestexcept
 #define libc_fesetenvl			libc_fesetenv

Added: fsf/trunk/libc/sysdeps/x86/Makefile
==============================================================================
--- fsf/trunk/libc/sysdeps/x86/Makefile (added)
+++ fsf/trunk/libc/sysdeps/x86/Makefile Sun Nov  4 00:02:10 2012
@@ -1,0 +1,4 @@
+ifeq ($(subdir),elf)
+CFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\
+		   -mno-sse -mno-mmx)
+endif

Modified: fsf/trunk/libc/sysdeps/x86/fpu/bits/fenv.h
==============================================================================
--- fsf/trunk/libc/sysdeps/x86/fpu/bits/fenv.h (original)
+++ fsf/trunk/libc/sysdeps/x86/fpu/bits/fenv.h Sun Nov  4 00:02:10 2012
@@ -23,17 +23,22 @@
    of the appropriate bits in the FPU control word.  */
 enum
   {
-    FE_INVALID = 0x01,
-#define FE_INVALID	FE_INVALID
+    FE_INVALID =
+#define FE_INVALID	0x01
+      FE_INVALID,
     __FE_DENORM = 0x02,
-    FE_DIVBYZERO = 0x04,
-#define FE_DIVBYZERO	FE_DIVBYZERO
-    FE_OVERFLOW = 0x08,
-#define FE_OVERFLOW	FE_OVERFLOW
-    FE_UNDERFLOW = 0x10,
-#define FE_UNDERFLOW	FE_UNDERFLOW
-    FE_INEXACT = 0x20
-#define FE_INEXACT	FE_INEXACT
+    FE_DIVBYZERO =
+#define FE_DIVBYZERO	0x04
+      FE_DIVBYZERO,
+    FE_OVERFLOW =
+#define FE_OVERFLOW	0x08
+      FE_OVERFLOW,
+    FE_UNDERFLOW =
+#define FE_UNDERFLOW	0x10
+      FE_UNDERFLOW,
+    FE_INEXACT =
+#define FE_INEXACT	0x20
+      FE_INEXACT
   };
 
 #define FE_ALL_EXCEPT \
@@ -44,14 +49,18 @@
    for the appropriate macros.  */
 enum
   {
-    FE_TONEAREST = 0,
-#define FE_TONEAREST	FE_TONEAREST
-    FE_DOWNWARD = 0x400,
-#define FE_DOWNWARD	FE_DOWNWARD
-    FE_UPWARD = 0x800,
-#define FE_UPWARD	FE_UPWARD
-    FE_TOWARDZERO = 0xc00
-#define FE_TOWARDZERO	FE_TOWARDZERO
+    FE_TONEAREST =
+#define FE_TONEAREST	0
+      FE_TONEAREST,
+    FE_DOWNWARD =
+#define FE_DOWNWARD	0x400
+      FE_DOWNWARD,
+    FE_UPWARD =
+#define FE_UPWARD	0x800
+      FE_UPWARD,
+    FE_TOWARDZERO =
+#define FE_TOWARDZERO	0xc00
+      FE_TOWARDZERO
   };
 
 

Modified: fsf/trunk/libc/sysdeps/x86_64/fpu/fclrexcpt.c
==============================================================================
--- fsf/trunk/libc/sysdeps/x86_64/fpu/fclrexcpt.c (original)
+++ fsf/trunk/libc/sysdeps/x86_64/fpu/fclrexcpt.c Sun Nov  4 00:02:10 2012
@@ -1,5 +1,5 @@
 /* Clear given exceptions in current floating-point environment.
-   Copyright (C) 2001 Free Software Foundation, Inc.
+   Copyright (C) 2001-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
@@ -49,3 +49,4 @@
   /* Success.  */
   return 0;
 }
+libm_hidden_def (feclearexcept)

Modified: fsf/trunk/libc/sysdeps/x86_64/multiarch/strcasestr-nonascii.c
==============================================================================
--- fsf/trunk/libc/sysdeps/x86_64/multiarch/strcasestr-nonascii.c (original)
+++ fsf/trunk/libc/sysdeps/x86_64/multiarch/strcasestr-nonascii.c Sun Nov  4 00:02:10 2012
@@ -16,7 +16,8 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-# include <ctype.h>
+#include <ctype.h>
+#include <xmmintrin.h>
 
 
 /* Similar to __m128i_strloadu.  Convert to lower case for none-POSIX/C

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