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

[Commits] r24622 - in /fsf/trunk/libc: ./ localedata/ localedata/locales/ nptl/ sysdeps/ieee754/ldbl-128ibm/ sysdeps/powerpc/fpu/ sysd...



Author: eglibc
Date: Tue Nov 26 00:02:08 2013
New Revision: 24622

Log:
Import glibc-mainline for 2013-11-26

Added:
    fsf/trunk/libc/sysdeps/powerpc/fpu/fenv_private.h
Modified:
    fsf/trunk/libc/ChangeLog
    fsf/trunk/libc/NEWS
    fsf/trunk/libc/localedata/ChangeLog
    fsf/trunk/libc/localedata/locales/ga_IE
    fsf/trunk/libc/localedata/locales/gl_ES
    fsf/trunk/libc/localedata/locales/gu_IN
    fsf/trunk/libc/localedata/locales/gv_GB
    fsf/trunk/libc/localedata/locales/hi_IN
    fsf/trunk/libc/localedata/locales/hne_IN
    fsf/trunk/libc/localedata/locales/hr_HR
    fsf/trunk/libc/localedata/locales/hu_HU
    fsf/trunk/libc/localedata/locales/id_ID
    fsf/trunk/libc/localedata/locales/ik_CA
    fsf/trunk/libc/localedata/locales/is_IS
    fsf/trunk/libc/localedata/locales/it_CH
    fsf/trunk/libc/localedata/locales/it_IT
    fsf/trunk/libc/localedata/locales/ja_JP
    fsf/trunk/libc/nptl/ChangeLog
    fsf/trunk/libc/nptl/Makefile
    fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/e_expl.c
    fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/s_llrintl.c
    fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/s_lrintl.c
    fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/s_rintl.c
    fsf/trunk/libc/sysdeps/powerpc/fpu/fenv_libc.h
    fsf/trunk/libc/sysdeps/powerpc/fpu/math_private.h
    fsf/trunk/libc/sysdeps/powerpc/nofpu/fenv_libc.h
    fsf/trunk/libc/sysdeps/powerpc/powerpc32/e500/nofpu/fenv_libc.h
    fsf/trunk/libc/sysdeps/unix/sysv/linux/sys/ptrace.h

Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Tue Nov 26 00:02:08 2013
@@ -1,3 +1,31 @@
+2013-11-25  Carlos O'Donell  <carlos@xxxxxxxxxx>
+
+	[BZ #16245]
+	* sysdeps/unix/sysv/linux/sys/ptrace.h (__ptrace_eventcodes):
+	Rename PTRAVE_EVENT_SECCOMP to PTRACE_EVENT_SECCOMP.
+
+2013-11-25  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/powerpc/nofpu/fenv_libc.h (__fegetround): New macro.
+	* sysdeps/powerpc/powerpc32/e500/nofpu/fenv_libc.h (__fegetround):
+	Likewise.
+
+2013-11-25  Adhemerval Zanella  <azanella@xxxxxxxxxxxxxxxxxx>
+
+	* sysdeps/ieee754/ldbl-128ibm/e_expl.c (__ieee754_expl): Use
+	SET_RESTORE_ROUND instead of feholdexcept/fesetround/fesetenv.
+	* sysdeps/powerpc/fpu/fenv_libc.h (__fegetround): Remove define.
+	(__fesetround): Remove define.
+	* sysdeps/powerpc/fpu/fenv_private.h: New file: Inline floating point
+	rounding and exceptions handling.
+	* sysdeps/powerpc/fpu/math_private.h: Include fenv_private.h.
+	* sysdeps/powerpc/fpu/fenv_libc.h (__fe_mask_env): Define as hidden.
+	(__fe_nomask_env): Likewise.
+	* sysdeps/ieee754/ldbl-128ibm/s_llrintl.c (__llrintl): Use
+	__fegetround instead of fegetround.
+	* sysdeps/ieee754/ldbl-128ibm/s_lrintl.c (__lrintl): Likewise.
+	* sysdeps/ieee754/ldbl-128ibm/s_rintl.c (__rintl): Likewise.
+
 2013-11-21  Roland McGrath  <roland@xxxxxxxxxxxxx>
 
 	* malloc/malloc.c: Move #include <sys/param.h> to the top; comment why

Modified: fsf/trunk/libc/NEWS
==============================================================================
--- fsf/trunk/libc/NEWS (original)
+++ fsf/trunk/libc/NEWS Tue Nov 26 00:02:08 2013
@@ -9,17 +9,17 @@
 
 * The following bugs are resolved with this release:
 
-  156, 387, 431, 832, 2801, 7003, 9954, 11157, 10253, 10278, 11087, 13028,
-  13982, 13985, 14029, 14143, 14155, 14547, 14699, 14752, 14876, 14910,
-  15048, 15218, 15277, 15308, 15362, 15374, 15400, 15427, 15483, 15522,
-  15531, 15532, 15601, 15608, 15609, 15610, 15632, 15640, 15670, 15672,
-  15680, 15681, 15723, 15734, 15735, 15736, 15748, 15749, 15754, 15760,
-  15763, 15764, 15797, 15799, 15825, 15844, 15847, 15849, 15855, 15856,
-  15857, 15859, 15867, 15886, 15887, 15890, 15892, 15893, 15895, 15897,
-  15905, 15909, 15917, 15919, 15921, 15923, 15939, 15948, 15963, 15966,
-  15985, 15988, 15997, 16032, 16034, 16036, 16037, 16041, 16055, 16071,
-  16072, 16074, 16078, 16103, 16112, 16143, 16144, 16146, 16150, 16151,
-  16153, 16167, 16172.
+  156, 387, 431, 832, 2801, 7003, 9954, 10253, 10278, 11087, 11157, 11214,
+  13028, 13982, 13985, 14029, 14143, 14155, 14547, 14699, 14752, 14876,
+  14910, 15048, 15218, 15277, 15308, 15362, 15374, 15400, 15427, 15483,
+  15522, 15531, 15532, 15601, 15608, 15609, 15610, 15632, 15640, 15670,
+  15672, 15680, 15681, 15723, 15734, 15735, 15736, 15748, 15749, 15754,
+  15760, 15763, 15764, 15797, 15799, 15825, 15844, 15847, 15849, 15855,
+  15856, 15857, 15859, 15867, 15886, 15887, 15890, 15892, 15893, 15895,
+  15897, 15905, 15909, 15917, 15919, 15921, 15923, 15939, 15948, 15963,
+  15966, 15985, 15988, 15997, 16032, 16034, 16036, 16037, 16041, 16055,
+  16071, 16072, 16074, 16078, 16103, 16112, 16143, 16144, 16146, 16150,
+  16151, 16153, 16167, 16172, 16245.
 
 * CVE-2012-4412 The strcoll implementation caches indices and rules for
   large collation sequences to optimize multiple passes.  This cache

Modified: fsf/trunk/libc/localedata/ChangeLog
==============================================================================
--- fsf/trunk/libc/localedata/ChangeLog (original)
+++ fsf/trunk/libc/localedata/ChangeLog Tue Nov 26 00:02:08 2013
@@ -1,3 +1,20 @@
+2013-11-25  Chris Leonard  <cjl@xxxxxxxxxxxxx>
+
+	* locales/ga_IE: Add lang_name to various locales.
+	* locales/gl_ES: Likewise.
+	* locales/gu_IN: Likewise.
+	* locales/gv_GB: Likewise.
+	* locales/hi_IN: Likewise.
+	* locales/hne_IN: Likewise.
+	* locales/hr_HR: Likewise.
+	* locales/hu_HU: Likewise.
+	* locales/id_ID: Likewise.
+	* locales/ik_CA: Likewise.
+	* locales/is_IS: Likewise.
+	* locales/it_CH: Likewise.
+	* locales/it_IT: Likewise.
+	* locales/ja_JP: Likewise.
+
 2013-11-24  Chris Leonard  <cjl@xxxxxxxxxxxxx>
 
 	* locales/bs_BA: Add lang_name to various locales.

Modified: fsf/trunk/libc/localedata/locales/ga_IE
==============================================================================
--- fsf/trunk/libc/localedata/locales/ga_IE (original)
+++ fsf/trunk/libc/localedata/locales/ga_IE Tue Nov 26 00:02:08 2013
@@ -160,6 +160,8 @@
 country_num 372
 % IRL
 country_car    "<U0049><U0052><U004C>"
+% Gaeilge
+lang_name    "<U0047><U0061><U0065><U0069><U006C><U0067><U0065>"
 % ga
 lang_ab      "<U0067><U0061>"
 % gle

Modified: fsf/trunk/libc/localedata/locales/gl_ES
==============================================================================
--- fsf/trunk/libc/localedata/locales/gl_ES (original)
+++ fsf/trunk/libc/localedata/locales/gl_ES Tue Nov 26 00:02:08 2013
@@ -159,6 +159,8 @@
 country_num 724
 % E
 country_car    "<U0045>"
+% Galego
+lang_name    "<U0047><U0061><U006C><U0065><U0067><U006F>"
 % gl
 lang_ab      "<U0067><U006C>"
 % glg

Modified: fsf/trunk/libc/localedata/locales/gu_IN
==============================================================================
--- fsf/trunk/libc/localedata/locales/gu_IN (original)
+++ fsf/trunk/libc/localedata/locales/gu_IN Tue Nov 26 00:02:08 2013
@@ -217,6 +217,8 @@
 country_num 356
 % IND
 country_car    "<U0049><U004E><U0044>"
+% ÃÂÂÃÂÂÃÂÂÃÂÂÃÂÂÃÂÂÃÂÂ
+lang_name    "<U0A97><U0AC1><U0A9C><U0AB0><U0ABE><U0AA4><U0AC0>"
 % gu
 lang_ab      "<U0067><U0075>"
 % guj

Modified: fsf/trunk/libc/localedata/locales/gv_GB
==============================================================================
--- fsf/trunk/libc/localedata/locales/gv_GB (original)
+++ fsf/trunk/libc/localedata/locales/gv_GB Tue Nov 26 00:02:08 2013
@@ -174,6 +174,8 @@
 country_num 826
 % GB
 country_car    "<U0047><U0042>"
+% y Ghaelg
+lang_name    "<U0079><U0020><U0047><U0068><U0061><U0065><U006C><U0067>"
 % gv
 lang_ab      "<U0067><U0076>"
 % glv

Modified: fsf/trunk/libc/localedata/locales/hi_IN
==============================================================================
--- fsf/trunk/libc/localedata/locales/hi_IN (original)
+++ fsf/trunk/libc/localedata/locales/hi_IN Tue Nov 26 00:02:08 2013
@@ -217,6 +217,8 @@
 country_num 356
 % IND
 country_car    "<U0049><U004E><U0044>"
+% ÃÂÂÃÂÂÃÂÂÃÂÂÃÂÂÃÂÂ
+lang_name    "<U0939><U093F><U0928><U094D><U0926><U0940>"
 % hi
 lang_ab      "<U0068><U0069>"
 % hin

Modified: fsf/trunk/libc/localedata/locales/hne_IN
==============================================================================
--- fsf/trunk/libc/localedata/locales/hne_IN (original)
+++ fsf/trunk/libc/localedata/locales/hne_IN Tue Nov 26 00:02:08 2013
@@ -165,6 +165,8 @@
 country_num 356
 % IND
 country_car    "<U0049><U004E><U0044>"
+% ÃÂÂÃÂÂÃÂÂÃÂÂÃÂÂÃÂÂÃÂÂÃÂÂÃÂÂÃÂÂ
+lang_name    "<U091B><U0924><U094D><U0924><U0940><U0938><U0917><U0922><U093C><U0940>"
 % hne
 lang_term    "<U0068><U006E><U0065>"
 END LC_ADDRESS

Modified: fsf/trunk/libc/localedata/locales/hr_HR
==============================================================================
--- fsf/trunk/libc/localedata/locales/hr_HR (original)
+++ fsf/trunk/libc/localedata/locales/hr_HR Tue Nov 26 00:02:08 2013
@@ -2249,6 +2249,8 @@
 country_num 191
 % HR
 country_car    "<U0048><U0052>"
+% hrvatski
+lang_name    "<U0068><U0072><U0076><U0061><U0074><U0073><U006B><U0069>"
 % hr
 lang_ab      "<U0068><U0072>"
 % hrv

Modified: fsf/trunk/libc/localedata/locales/hu_HU
==============================================================================
--- fsf/trunk/libc/localedata/locales/hu_HU (original)
+++ fsf/trunk/libc/localedata/locales/hu_HU Tue Nov 26 00:02:08 2013
@@ -586,6 +586,8 @@
 country_num 348
 % H
 country_car    "<U0048>"
+% magyar
+lang_name    "<U006D><U0061><U0067><U0079><U0061><U0072>"
 % hu
 lang_ab      "<U0068><U0075>"
 % hun

Modified: fsf/trunk/libc/localedata/locales/id_ID
==============================================================================
--- fsf/trunk/libc/localedata/locales/id_ID (original)
+++ fsf/trunk/libc/localedata/locales/id_ID Tue Nov 26 00:02:08 2013
@@ -161,6 +161,8 @@
 country_num 360
 % RI
 country_car    "<U0052><U0049>"
+% Bahasa Indonesia
+lang_name    "<U0042><U0061><U0068><U0061><U0073><U0061><U0020><U0049><U006E><U0064>/<U006F><U006E><U0065><U0073><U0069><U0061>"
 % id
 lang_ab      "<U0069><U0064>"
 % ind

Modified: fsf/trunk/libc/localedata/locales/ik_CA
==============================================================================
--- fsf/trunk/libc/localedata/locales/ik_CA (original)
+++ fsf/trunk/libc/localedata/locales/ik_CA Tue Nov 26 00:02:08 2013
@@ -233,6 +233,8 @@
 country_num 124
 % CDN
 country_car    "<U0043><U0044><U004E>"
+% IÃÂupiatun
+lang_name    "<U0049><U00F1><U0075><U0070><U0069><U0061><U0074><U0075><U006E>"
 % ik
 lang_ab      "<U0069><U006B>"
 % ipk

Modified: fsf/trunk/libc/localedata/locales/is_IS
==============================================================================
--- fsf/trunk/libc/localedata/locales/is_IS (original)
+++ fsf/trunk/libc/localedata/locales/is_IS Tue Nov 26 00:02:08 2013
@@ -2265,6 +2265,8 @@
 country_num 352
 % IS
 country_car    "<U0049><U0053>"
+% ÃÂslenska
+lang_name    "<U00ED><U0073><U006C><U0065><U006E><U0073><U006B><U0061>"
 % is
 lang_ab      "<U0069><U0073>"
 % isl

Modified: fsf/trunk/libc/localedata/locales/it_CH
==============================================================================
--- fsf/trunk/libc/localedata/locales/it_CH (original)
+++ fsf/trunk/libc/localedata/locales/it_CH Tue Nov 26 00:02:08 2013
@@ -136,6 +136,8 @@
 country_num 756
 % CH
 country_car    "<U0043><U0048>"
+% Italiano
+lang_name    "<U0049><U0074><U0061><U006C><U0069><U0061><U006E><U006F>"
 % it
 lang_ab      "<U0069><U0074>"
 % ita

Modified: fsf/trunk/libc/localedata/locales/it_IT
==============================================================================
--- fsf/trunk/libc/localedata/locales/it_IT (original)
+++ fsf/trunk/libc/localedata/locales/it_IT Tue Nov 26 00:02:08 2013
@@ -162,6 +162,8 @@
 country_num 380
 % I
 country_car    "<U0049>"
+% Italiano
+lang_name    "<U0049><U0074><U0061><U006C><U0069><U0061><U006E><U006F>"
 % it
 lang_ab      "<U0069><U0074>"
 % ita

Modified: fsf/trunk/libc/localedata/locales/ja_JP
==============================================================================
--- fsf/trunk/libc/localedata/locales/ja_JP (original)
+++ fsf/trunk/libc/localedata/locales/ja_JP Tue Nov 26 00:02:08 2013
@@ -15044,6 +15044,8 @@
 country_num 392
 % J
 country_car    "<U004A>"
+% ÃÂÂÃÂÂÃÂÂ
+lang_name    "<U65E5><U672C><U8A9E>"
 % ja
 lang_ab      "<U006A><U0061>"
 % jpn

Modified: fsf/trunk/libc/nptl/ChangeLog
==============================================================================
--- fsf/trunk/libc/nptl/ChangeLog (original)
+++ fsf/trunk/libc/nptl/ChangeLog Tue Nov 26 00:02:08 2013
@@ -1,3 +1,8 @@
+2013-11-25  Paul Pluzhnikov  <ppluzhnikov@xxxxxxxxxx>
+
+	[BZ #11214]
+	* Makefile (tst-getpid2-ENV): New variable.
+
 2013-11-20  Paul Pluzhnikov  <ppluzhnikov@xxxxxxxxxx>
 
 	* Makefile (tst-cleanup2, tst-cleanupx2): Add -fno-builtin

Modified: fsf/trunk/libc/nptl/Makefile
==============================================================================
--- fsf/trunk/libc/nptl/Makefile (original)
+++ fsf/trunk/libc/nptl/Makefile Tue Nov 26 00:02:08 2013
@@ -447,6 +447,11 @@
 tst-cancelx7-ARGS = $(tst-cancel7-ARGS)
 tst-umask1-ARGS = $(objpfx)tst-umask1.temp
 
+# In this test, we create a CLONE_VM "thread" that shares TLS storage
+# with the original thread. Both threads then race in ld.so with lazy PLT
+# resolution. Avoid this race by disabling lazy binding. BZ #11214.
+tst-getpid2-ENV = LD_BIND_NOW=1
+
 $(objpfx)tst-atfork2: $(libdl) $(shared-thread-library)
 LDFLAGS-tst-atfork2 = -rdynamic
 tst-atfork2-ENV = MALLOC_TRACE=$(objpfx)tst-atfork2.mtrace

Modified: fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/e_expl.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/e_expl.c (original)
+++ fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/e_expl.c Tue Nov 26 00:02:08 2013
@@ -134,18 +134,17 @@
 long double
 __ieee754_expl (long double x)
 {
+  long double result, x22;
+  union ibm_extended_long_double ex2_u, scale_u;
+  int unsafe;
+
   /* Check for usual case.  */
   if (isless (x, himark) && isgreater (x, lomark))
     {
-      int tval1, tval2, unsafe, n_i, exponent2;
-      long double x22, n, result, xl;
-      union ibm_extended_long_double ex2_u, scale_u;
-      fenv_t oldenv;
-
-      feholdexcept (&oldenv);
-#ifdef FE_TONEAREST
-      fesetround (FE_TONEAREST);
-#endif
+      int tval1, tval2, n_i, exponent2;
+      long double n, xl;
+
+      SET_RESTORE_ROUND (FE_TONEAREST);
 
       n = __roundl (x*M_1_LN2);
       x = x-n*M_LN2_0;
@@ -201,11 +200,6 @@
 	 less than 4.8e-39.  */
       x22 = x + x*x*(P1+x*(P2+x*(P3+x*(P4+x*(P5+x*P6)))));
 
-      /* Return result.  */
-      fesetenv (&oldenv);
-
-      result = x22 * ex2_u.ld + ex2_u.ld;
-
       /* Now we can test whether the result is ultimate or if we are unsure.
 	 In the later case we should probably call a mpn based routine to give
 	 the ultimate result.
@@ -235,10 +229,6 @@
 	    return __ieee754_expl_proc2 (origx);
 	  }
        */
-      if (!unsafe)
-	return result;
-      else
-	return result * scale_u.ld;
     }
   /* Exceptional cases:  */
   else if (isless (x, himark))
@@ -253,5 +243,10 @@
   else
     /* Return x, if x is a NaN or Inf; or overflow, otherwise.  */
     return TWO1023*x;
+
+  result = x22 * ex2_u.ld + ex2_u.ld;
+  if (!unsafe)
+    return result;
+  return result * scale_u.ld;
 }
 strong_alias (__ieee754_expl, __expl_finite)

Modified: fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/s_llrintl.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/s_llrintl.c (original)
+++ fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/s_llrintl.c Tue Nov 26 00:02:08 2013
@@ -43,7 +43,7 @@
 #endif
     )
     {
-      save_round = fegetround ();
+      save_round = __fegetround ();
 
       if (__builtin_expect ((xh == -(double) (-__LONG_LONG_MAX__ - 1)), 0))
 	{

Modified: fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/s_lrintl.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/s_lrintl.c (original)
+++ fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/s_lrintl.c Tue Nov 26 00:02:08 2013
@@ -49,7 +49,7 @@
 #endif
     )
     {
-      save_round = fegetround ();
+      save_round = __fegetround ();
 
 #if __LONG_MAX__ == 2147483647
       long long llhi = (long long) xh;

Modified: fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/s_rintl.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/s_rintl.c (original)
+++ fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/s_rintl.c Tue Nov 26 00:02:08 2013
@@ -40,7 +40,7 @@
 					     __builtin_inf ()), 1))
     {
       double orig_xh;
-      int save_round = fegetround ();
+      int save_round = __fegetround ();
 
       /* Long double arithmetic, including the canonicalisation below,
 	 only works in round-to-nearest mode.  */

Modified: fsf/trunk/libc/sysdeps/powerpc/fpu/fenv_libc.h
==============================================================================
--- fsf/trunk/libc/sysdeps/powerpc/fpu/fenv_libc.h (original)
+++ fsf/trunk/libc/sysdeps/powerpc/fpu/fenv_libc.h Tue Nov 26 00:02:08 2013
@@ -23,9 +23,9 @@
 #include <ldsodefs.h>
 #include <sysdep.h>
 
-extern const fenv_t *__fe_nomask_env (void);
+extern const fenv_t *__fe_nomask_env (void) attribute_hidden;
 
-extern const fenv_t *__fe_mask_env (void);
+extern const fenv_t *__fe_mask_env (void) attribute_hidden;
 
 /* The sticky bits in the FPSCR indicating exceptions have occurred.  */
 #define FPSCR_STICKY_BITS ((FE_ALL_EXCEPT | FE_ALL_INVALID) & ~FE_INVALID)
@@ -83,7 +83,6 @@
 		"mfcr  %0" : "=r"(result) : : "cr7");
   return result & 3;
 }
-#define fegetround() __fegetround()
 
 static inline int
 __fesetround (int round)
@@ -107,7 +106,6 @@
 
   return 0;
 }
-#define fesetround(mode) __fesetround(mode)
 
 /* Definitions of all the FPSCR bit numbers */
 enum {

Added: fsf/trunk/libc/sysdeps/powerpc/fpu/fenv_private.h
==============================================================================
--- fsf/trunk/libc/sysdeps/powerpc/fpu/fenv_private.h (added)
+++ fsf/trunk/libc/sysdeps/powerpc/fpu/fenv_private.h Tue Nov 26 00:02:08 2013
@@ -1,0 +1,274 @@
+/* Private floating point rounding and exceptions handling. PowerPC version.
+   Copyright (C) 2013 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 FENV_PRIVATE_H
+#define FENV_PRIVATE_H 1
+
+#include <fenv.h>
+#include <fenv_libc.h>
+#include <fpu_control.h>
+
+#define _FPU_MASK_ALL (_FPU_MASK_ZM | _FPU_MASK_OM | _FPU_MASK_UM \
+                      | _FPU_MASK_XM | _FPU_MASK_IM)
+
+/* Mask everything but the rounding moded and non-IEEE arithmetic flags.  */
+#define _FPU_MASK_ROUNDING 0xffffffff00000007LL
+
+/* Mask restore rounding mode and exception enabled.  */
+#define _FPU_MASK_EXCEPT_ROUND 0xffffffff1fffff00LL
+
+/* Mask exception enable but fraction rounded/inexact and FP result/CC
+   bits.  */
+#define _FPU_MASK_FRAC_INEX_RET_CC 0x1ff80fff
+
+static __always_inline void
+libc_feholdexcept_ppc (fenv_t *envp)
+{
+  fenv_union_t old, new;
+
+  old.fenv = *envp = fegetenv_register ();
+
+  new.l = old.l & _FPU_MASK_ROUNDING;
+
+  /* If the old env had any enabled exceptions, then mask SIGFPE in the
+     MSR FE0/FE1 bits.  This may allow the FPU to run faster because it
+     always takes the default action and can not generate SIGFPE.  */
+  if ((old.l & _FPU_MASK_ALL) != 0)
+    (void) __fe_mask_env ();
+
+  fesetenv_register (new.fenv);
+}
+
+static __always_inline void
+libc_fesetround_ppc (int r)
+{
+  __fesetround (r);
+}
+
+static __always_inline void
+libc_feholdexcept_setround_ppc (fenv_t *envp, int r)
+{
+  fenv_union_t old, new;
+
+  old.fenv = *envp = fegetenv_register ();
+
+  new.l = (old.l & _FPU_MASK_ROUNDING) | r;
+
+  if ((old.l & _FPU_MASK_ALL) != 0)
+    (void) __fe_mask_env ();
+
+  fesetenv_register (new.fenv);
+}
+
+static __always_inline int
+libc_fetestexcept_ppc (int e)
+{
+  fenv_union_t u;
+  u.fenv = fegetenv_register ();
+  return u.l & e;
+}
+
+static __always_inline void
+libc_fesetenv_ppc (const fenv_t *envp)
+{
+  fenv_union_t old, new;
+
+  new.fenv = *envp;
+  old.fenv = fegetenv_register ();
+
+  /* If the old env has no enabled exceptions and the new env has any enabled
+     exceptions, then unmask SIGFPE in the MSR FE0/FE1 bits.  This will put the
+     hardware into "precise mode" and may cause the FPU to run slower on some
+     hardware.  */
+  if ((old.l & _FPU_MASK_ALL) == 0 && (new.l & _FPU_MASK_ALL) != 0)
+    (void) __fe_nomask_env ();
+
+  /* If the old env had any enabled exceptions and the new env has no enabled
+     exceptions, then mask SIGFPE in the MSR FE0/FE1 bits.  This may allow the
+     FPU to run faster because it always takes the default action and can not
+     generate SIGFPE.  */
+  if ((old.l & _FPU_MASK_ALL) != 0 && (new.l & _FPU_MASK_ALL) == 0)
+    (void) __fe_mask_env ();
+
+  fesetenv_register (*envp);
+}
+
+static __always_inline int
+libc_feupdateenv_test_ppc (fenv_t *envp, int ex)
+{
+  fenv_union_t old, new;
+
+  new.fenv = *envp;
+  old.fenv = fegetenv_register ();
+
+  /* Restore rounding mode and exception enable from *envp and merge
+     exceptions.  Leave fraction rounded/inexact and FP result/CC bits
+     unchanged.  */
+  new.l = (old.l & _FPU_MASK_EXCEPT_ROUND)
+          | (new.l & _FPU_MASK_FRAC_INEX_RET_CC);
+
+  if ((old.l & _FPU_MASK_ALL) == 0 && (new.l & _FPU_MASK_ALL) != 0)
+    (void) __fe_nomask_env ();
+
+  if ((old.l & _FPU_MASK_ALL) != 0 && (new.l & _FPU_MASK_ALL) == 0)
+    (void) __fe_mask_env ();
+
+  fesetenv_register (new.fenv);
+
+  return old.l & ex;
+}
+
+static __always_inline void
+libc_feupdateenv_ppc (fenv_t *e)
+{
+  libc_feupdateenv_test_ppc (e, 0);
+}
+
+static __always_inline void
+libc_feholdsetround_ppc (fenv_t *e, int r)
+{
+  fenv_union_t old, new;
+
+  old.fenv = fegetenv_register ();
+  /* Clear current precision and set newer one.  */
+  new.l = (old.l & ~0x3) | r;
+  *e = old.fenv;
+
+  if ((old.l & _FPU_MASK_ALL) != 0)
+    (void) __fe_mask_env ();
+  fesetenv_register (new.fenv);
+}
+
+static __always_inline void
+libc_feresetround_ppc (fenv_t *envp)
+{
+  fenv_union_t old, new;
+
+  new.fenv = *envp;
+  old.fenv = fegetenv_register ();
+
+  /* Restore rounding mode and exception enable from *envp and merge
+     exceptions.  Leave fraction rounded/inexact and FP result/CC bits
+     unchanged.  */
+  new.l = (old.l & _FPU_MASK_EXCEPT_ROUND)
+          | (new.l & _FPU_MASK_FRAC_INEX_RET_CC);
+
+  if ((old.l & _FPU_MASK_ALL) == 0 && (new.l & _FPU_MASK_ALL) != 0)
+    (void) __fe_nomask_env ();
+
+  if ((old.l & _FPU_MASK_ALL) != 0 && (new.l & _FPU_MASK_ALL) == 0)
+    (void) __fe_mask_env ();
+
+  /* Atomically enable and raise (if appropriate) exceptions set in `new'.  */
+  fesetenv_register (new.fenv);
+}
+
+#define libc_feholdexceptf           libc_feholdexcept_ppc
+#define libc_feholdexcept            libc_feholdexcept_ppc
+#define libc_feholdexcept_setroundf  libc_feholdexcept_setround_ppc
+#define libc_feholdexcept_setround   libc_feholdexcept_setround_ppc
+#define libc_fetestexceptf           libc_fetestexcept_ppc
+#define libc_fetestexcept            libc_fetestexcept_ppc
+#define libc_fesetroundf             libc_fesetround_ppc
+#define libc_fesetround              libc_fesetround_ppc
+#define libc_fesetenvf               libc_fesetenv_ppc
+#define libc_fesetenv                libc_fesetenv_ppc
+#define libc_feupdateenv_testf       libc_feupdateenv_test_ppc
+#define libc_feupdateenv_test        libc_feupdateenv_test_ppc
+#define libc_feupdateenvf            libc_feupdateenv_ppc
+#define libc_feupdateenv             libc_feupdateenv_ppc
+#define libc_feholdsetroundf         libc_feholdsetround_ppc
+#define libc_feholdsetround          libc_feholdsetround_ppc
+#define libc_feresetroundf           libc_feresetround_ppc
+#define libc_feresetround            libc_feresetround_ppc
+
+
+/* We have support for rounding mode context.  */
+#define HAVE_RM_CTX 1
+
+static __always_inline void
+libc_feholdexcept_setround_ppc_ctx (struct rm_ctx *ctx, int r)
+{
+  fenv_union_t old, new;
+
+  old.fenv = fegetenv_register ();
+
+  new.l = (old.l & _FPU_MASK_ROUNDING) | r;
+  ctx->env = old.fenv;
+  if (__glibc_unlikely (new.l != old.l))
+    {
+      if ((old.l & _FPU_MASK_ALL) != 0)
+	(void) __fe_mask_env ();
+      fesetenv_register (new.fenv);
+      ctx->updated_status = true;
+    }
+  else
+    ctx->updated_status = false;
+}
+
+static __always_inline void
+libc_fesetenv_ppc_ctx (struct rm_ctx *ctx)
+{
+  libc_fesetenv_ppc (&ctx->env);
+}
+
+static __always_inline void
+libc_feupdateenv_ppc_ctx (struct rm_ctx *ctx)
+{
+  if (__glibc_unlikely (ctx->updated_status))
+    libc_feupdateenv_test_ppc (&ctx->env, 0);
+}
+
+static __always_inline void
+libc_feholdsetround_ppc_ctx (struct rm_ctx *ctx, int r)
+{
+  fenv_union_t old, new;
+
+  old.fenv = fegetenv_register ();
+  new.l = (old.l & ~0x3) | r;
+  ctx->env = old.fenv;
+  if (__glibc_unlikely (new.l != old.l))
+    {
+      if ((old.l & _FPU_MASK_ALL) != 0)
+	(void) __fe_mask_env ();
+      fesetenv_register (new.fenv);
+      ctx->updated_status = true;
+    }
+  else
+    ctx->updated_status = false;
+}
+
+static __always_inline void
+libc_feresetround_ppc_ctx (struct rm_ctx *ctx)
+{
+  if (__glibc_unlikely (ctx->updated_status))
+    libc_feresetround_ppc (&ctx->env);
+}
+
+#define libc_feholdexcept_setroundf_ctx  libc_feholdexcept_setround_ppc_ctx
+#define libc_feholdexcept_setround_ctx   libc_feholdexcept_setround_ppc_ctx
+#define libc_fesetenv_ctx                libc_fesetenv_ppc_ctx
+#define libc_fesetenvf_ctx               libc_fesetenv_ppc_ctx
+#define libc_feholdsetround_ctx          libc_feholdsetround_ppc_ctx
+#define libc_feholdsetroundf_ctx         libc_feholdsetround_ppc_ctx
+#define libc_feresetround_ctx            libc_feresetround_ppc_ctx
+#define libc_feresetroundf_ctx           libc_feresetround_ppc_ctx
+#define libc_feupdateenvf_ctx            libc_feupdateenv_ppc_ctx
+#define libc_feupdateenv_ctx             libc_feupdateenv_ppc_ctx
+
+#endif

Modified: fsf/trunk/libc/sysdeps/powerpc/fpu/math_private.h
==============================================================================
--- fsf/trunk/libc/sysdeps/powerpc/fpu/math_private.h (original)
+++ fsf/trunk/libc/sysdeps/powerpc/fpu/math_private.h Tue Nov 26 00:02:08 2013
@@ -22,6 +22,7 @@
 #include <sysdep.h>
 #include <ldsodefs.h>
 #include <dl-procinfo.h>
+#include <fenv_private.h>
 #include_next <math_private.h>
 
 # if __WORDSIZE == 64 || defined _ARCH_PWR4

Modified: fsf/trunk/libc/sysdeps/powerpc/nofpu/fenv_libc.h
==============================================================================
--- fsf/trunk/libc/sysdeps/powerpc/nofpu/fenv_libc.h (original)
+++ fsf/trunk/libc/sysdeps/powerpc/nofpu/fenv_libc.h Tue Nov 26 00:02:08 2013
@@ -25,4 +25,7 @@
 
 #include <fenv.h>
 
+/* ldbl-128ibm code uses __fegetround.  */
+#define __fegetround()	fegetround ()
+
 #endif /* fenv_libc.h */

Modified: fsf/trunk/libc/sysdeps/powerpc/powerpc32/e500/nofpu/fenv_libc.h
==============================================================================
--- fsf/trunk/libc/sysdeps/powerpc/powerpc32/e500/nofpu/fenv_libc.h (original)
+++ fsf/trunk/libc/sysdeps/powerpc/powerpc32/e500/nofpu/fenv_libc.h Tue Nov 26 00:02:08 2013
@@ -20,6 +20,9 @@
 #define _FENV_LIBC_H	1
 
 #include <fenv.h>
+
+/* ldbl-128ibm code uses __fegetround.  */
+#define __fegetround()	fegetround ()
 
 int __feraiseexcept_spe (int);
 libm_hidden_proto (__feraiseexcept_spe)

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/sys/ptrace.h
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/sys/ptrace.h (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/sys/ptrace.h Tue Nov 26 00:02:08 2013
@@ -184,7 +184,7 @@
   PTRACE_EVENT_EXEC	= 4,
   PTRACE_EVENT_VFORK_DONE = 5,
   PTRACE_EVENT_EXIT	= 6,
-  PTRAVE_EVENT_SECCOMP  = 7
+  PTRACE_EVENT_SECCOMP  = 7
 };
 
 /* Arguments for PTRACE_PEEKSIGINFO.  */

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