[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...
- To: commits@xxxxxxxxxx
- Subject: [Commits] r24622 - in /fsf/trunk/libc: ./ localedata/ localedata/locales/ nptl/ sysdeps/ieee754/ldbl-128ibm/ sysdeps/powerpc/fpu/ sysd...
- From: eglibc@xxxxxxxxxx
- Date: Tue, 26 Nov 2013 08:02:10 -0000
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