This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.24-67-g8b7d133


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  8b7d13322a7034c1cecbd441185b4d0db96a2a47 (commit)
       via  3292b26b54afe06a728cf16271d079074740ce80 (commit)
       via  6b1c3e3654e0ff410738e9e79ffe700fc091178e (commit)
       via  b22be8c36833338070c911081c9f0a83a1fbe3d5 (commit)
       via  760c61e944158c134d3d6209b127a5c3ac194d76 (commit)
       via  0ca2c770523608a8e6f2630452c74270e40db986 (commit)
       via  272ea6120790bccfc2d13534486aff69f7ff09d4 (commit)
       via  e03d01b9f2a88337e061a1885cc7f431063a083a (commit)
       via  969b3a56e91553250f6c3f5042f0a8d82d0a05de (commit)
       via  56acef0ebbceae8e2919aab9641598e3abb14b5a (commit)
       via  ce99c0816b2464efe9631cba6e51c7fe6ea90884 (commit)
       via  5146356f5a72c3c660cd782c9eaafbe767817050 (commit)
      from  056dd72af83f5459ce6d545a49dea6dba7d635dc (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=8b7d13322a7034c1cecbd441185b4d0db96a2a47

commit 8b7d13322a7034c1cecbd441185b4d0db96a2a47
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Tue Aug 16 16:25:57 2016 +0000

    Add fesetexcept: sparc.
    
    This patch adds a SPARC version of fesetexcept.  Untested.
    
    	* sysdeps/sparc/fpu/fesetexcept.c: New file.

diff --git a/ChangeLog b/ChangeLog
index 962e8a9..86dc105 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2016-08-16  Joseph Myers  <joseph@codesourcery.com>
 
+	* sysdeps/sparc/fpu/fesetexcept.c: New file.
+
 	* sysdeps/sh/sh4/fpu/fesetexcept.c: New file.
 
 	* sysdeps/s390/fpu/fesetexcept.c: New file.
diff --git a/sysdeps/sparc/fpu/fesetexcept.c b/sysdeps/sparc/fpu/fesetexcept.c
new file mode 100644
index 0000000..ef1c5de
--- /dev/null
+++ b/sysdeps/sparc/fpu/fesetexcept.c
@@ -0,0 +1,31 @@
+/* Set given exception flags.  SPARC version.
+   Copyright (C) 2016 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/>.  */
+
+#include <fenv.h>
+
+int
+fesetexcept (int excepts)
+{
+  fenv_t tmp;
+
+  __fenv_stfsr (tmp);
+  tmp |= excepts & FE_ALL_EXCEPT;
+  __fenv_ldfsr (tmp);
+
+  return 0;
+}

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=3292b26b54afe06a728cf16271d079074740ce80

commit 3292b26b54afe06a728cf16271d079074740ce80
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Tue Aug 16 16:25:10 2016 +0000

    Add fesetexcept: sh.
    
    This patch adds an SH version of fesetexcept.  Untested.
    
    	* sysdeps/sh/sh4/fpu/fesetexcept.c: New file.

diff --git a/ChangeLog b/ChangeLog
index ef36be4..962e8a9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2016-08-16  Joseph Myers  <joseph@codesourcery.com>
 
+	* sysdeps/sh/sh4/fpu/fesetexcept.c: New file.
+
 	* sysdeps/s390/fpu/fesetexcept.c: New file.
 
 	* sysdeps/powerpc/fpu/fesetexcept.c: New file.
diff --git a/sysdeps/sh/sh4/fpu/fesetexcept.c b/sysdeps/sh/sh4/fpu/fesetexcept.c
new file mode 100644
index 0000000..6be9494
--- /dev/null
+++ b/sysdeps/sh/sh4/fpu/fesetexcept.c
@@ -0,0 +1,32 @@
+/* Set given exception flags.  SH4 version.
+   Copyright (C) 2016 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/>.  */
+
+#include <fenv.h>
+#include <fpu_control.h>
+
+int
+fesetexcept (int excepts)
+{
+  fpu_control_t temp;
+
+  _FPU_GETCW (temp);
+  temp |= (excepts & FE_ALL_EXCEPT);
+  _FPU_SETCW (temp);
+
+  return 0;
+}

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=6b1c3e3654e0ff410738e9e79ffe700fc091178e

commit 6b1c3e3654e0ff410738e9e79ffe700fc091178e
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Tue Aug 16 16:24:11 2016 +0000

    Add fesetexcept: s390.
    
    This patch adds an S/390 version of fesetexcept.  Tested and corrected
    by Stefan Liebler.
    
    	* sysdeps/s390/fpu/fesetexcept.c: New file.

diff --git a/ChangeLog b/ChangeLog
index fe0663a..ef36be4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2016-08-16  Joseph Myers  <joseph@codesourcery.com>
 
+	* sysdeps/s390/fpu/fesetexcept.c: New file.
+
 	* sysdeps/powerpc/fpu/fesetexcept.c: New file.
 	* sysdeps/powerpc/nofpu/fesetexcept.c: Likewise.
 	* sysdeps/powerpc/powerpc32/e500/nofpu/fesetexcept.c: Likewise.
diff --git a/sysdeps/s390/fpu/fesetexcept.c b/sysdeps/s390/fpu/fesetexcept.c
new file mode 100644
index 0000000..e875f13
--- /dev/null
+++ b/sysdeps/s390/fpu/fesetexcept.c
@@ -0,0 +1,33 @@
+/* Set given exception flags.  S/390 version.
+   Copyright (C) 2016 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/>.  */
+
+#include <fenv.h>
+#include <fpu_control.h>
+#include <fenv_libc.h>
+
+int
+fesetexcept (int excepts)
+{
+  fexcept_t temp;
+
+  _FPU_GETCW (temp);
+  temp |= (excepts & FE_ALL_EXCEPT) << FPC_FLAGS_SHIFT;
+  _FPU_SETCW (temp);
+
+  return 0;
+}

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=b22be8c36833338070c911081c9f0a83a1fbe3d5

commit b22be8c36833338070c911081c9f0a83a1fbe3d5
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Tue Aug 16 16:22:12 2016 +0000

    Add fesetexcept: powerpc.
    
    This patch adds PowerPC versions of fesetexcept.
    
    	* sysdeps/powerpc/fpu/fesetexcept.c: New file.
    	* sysdeps/powerpc/nofpu/fesetexcept.c: Likewise.
    	* sysdeps/powerpc/powerpc32/e500/nofpu/fesetexcept.c: Likewise.

diff --git a/ChangeLog b/ChangeLog
index 0f78039..fe0663a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2016-08-16  Joseph Myers  <joseph@codesourcery.com>
 
+	* sysdeps/powerpc/fpu/fesetexcept.c: New file.
+	* sysdeps/powerpc/nofpu/fesetexcept.c: Likewise.
+	* sysdeps/powerpc/powerpc32/e500/nofpu/fesetexcept.c: Likewise.
+
 	* sysdeps/mips/fpu/fesetexcept.c: New file.
 
 	* sysdeps/m68k/fpu/fesetexcept.c: New file.
diff --git a/sysdeps/powerpc/fpu/fesetexcept.c b/sysdeps/powerpc/fpu/fesetexcept.c
new file mode 100644
index 0000000..fdd98f9
--- /dev/null
+++ b/sysdeps/powerpc/fpu/fesetexcept.c
@@ -0,0 +1,42 @@
+/* Set given exception flags.  PowerPC version.
+   Copyright (C) 2016 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/>.  */
+
+#include <fenv_libc.h>
+
+int
+fesetexcept (int excepts)
+{
+  fenv_union_t u, n;
+
+  u.fenv = fegetenv_register ();
+  n.l = (u.l
+	 | (excepts & FPSCR_STICKY_BITS)
+	 /* Turn FE_INVALID into FE_INVALID_SOFTWARE.  */
+	 | (excepts >> ((31 - FPSCR_VX) - (31 - FPSCR_VXSOFT))
+	    & FE_INVALID_SOFTWARE));
+  if (n.l != u.l)
+    {
+      fesetenv_register (n.fenv);
+
+      /* Deal with FE_INVALID_SOFTWARE not being implemented on some chips.  */
+      if (excepts & FE_INVALID)
+	feraiseexcept (FE_INVALID);
+    }
+
+  return 0;
+}
diff --git a/sysdeps/powerpc/nofpu/fesetexcept.c b/sysdeps/powerpc/nofpu/fesetexcept.c
new file mode 100644
index 0000000..3b19665
--- /dev/null
+++ b/sysdeps/powerpc/nofpu/fesetexcept.c
@@ -0,0 +1,28 @@
+/* Set given exception flags.  PowerPC soft-float version.
+   Copyright (C) 2016 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/>.  */
+
+#include "soft-supp.h"
+
+int
+fesetexcept (int excepts)
+{
+  __sim_exceptions_thread |= (excepts & FE_ALL_EXCEPT);
+  SIM_SET_GLOBAL (__sim_exceptions_global, __sim_exceptions_thread);
+
+  return 0;
+}
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fesetexcept.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fesetexcept.c
new file mode 100644
index 0000000..ff82f22
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/e500/nofpu/fesetexcept.c
@@ -0,0 +1,37 @@
+/* Set given exception flags.  e500 version.
+   Copyright (C) 2016 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/>.  */
+
+#include <fenv_libc.h>
+
+int
+fesetexcept (int excepts)
+{
+  unsigned long old_spefscr, spefscr;
+  int excepts_spe = __fexcepts_to_spe (excepts);
+
+  old_spefscr = fegetenv_register ();
+  spefscr = old_spefscr | excepts_spe;
+  fesetenv_register (spefscr);
+
+  /* If the state of the "invalid" or "underflow" flag has changed,
+     inform the kernel.  */
+  if (((spefscr ^ old_spefscr) & (SPEFSCR_FINVS | SPEFSCR_FUNFS)) != 0)
+    __fe_note_change ();
+
+  return 0;
+}

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=760c61e944158c134d3d6209b127a5c3ac194d76

commit 760c61e944158c134d3d6209b127a5c3ac194d76
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Tue Aug 16 16:21:21 2016 +0000

    Add fesetexcept: mips.
    
    This patch adds a MIPS version of fesetexcept.
    
    	* sysdeps/mips/fpu/fesetexcept.c: New file.

diff --git a/ChangeLog b/ChangeLog
index b61948b..0f78039 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2016-08-16  Joseph Myers  <joseph@codesourcery.com>
 
+	* sysdeps/mips/fpu/fesetexcept.c: New file.
+
 	* sysdeps/m68k/fpu/fesetexcept.c: New file.
 
 	* sysdeps/ia64/fpu/fesetexcept.c: New file.
diff --git a/sysdeps/mips/fpu/fesetexcept.c b/sysdeps/mips/fpu/fesetexcept.c
new file mode 100644
index 0000000..1c3d91a
--- /dev/null
+++ b/sysdeps/mips/fpu/fesetexcept.c
@@ -0,0 +1,32 @@
+/* Set given exception flags.  MIPS version.
+   Copyright (C) 2016 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/>.  */
+
+#include <fenv.h>
+#include <fpu_control.h>
+
+int
+fesetexcept (int excepts)
+{
+  fpu_control_t temp;
+
+  _FPU_GETCW (temp);
+  temp |= excepts & FE_ALL_EXCEPT;
+  _FPU_SETCW (temp);
+
+  return 0;
+}

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=0ca2c770523608a8e6f2630452c74270e40db986

commit 0ca2c770523608a8e6f2630452c74270e40db986
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Tue Aug 16 16:20:33 2016 +0000

    Add fesetexcept: m68k.
    
    This patch adds an M68K version of fesetexcept.  Untested.
    
    	* sysdeps/m68k/fpu/fesetexcept.c: New file.

diff --git a/ChangeLog b/ChangeLog
index a33298d..b61948b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2016-08-16  Joseph Myers  <joseph@codesourcery.com>
 
+	* sysdeps/m68k/fpu/fesetexcept.c: New file.
+
 	* sysdeps/ia64/fpu/fesetexcept.c: New file.
 
 	* sysdeps/hppa/fpu/fesetexcept.c: New file.
diff --git a/sysdeps/m68k/fpu/fesetexcept.c b/sysdeps/m68k/fpu/fesetexcept.c
new file mode 100644
index 0000000..bad05a9
--- /dev/null
+++ b/sysdeps/m68k/fpu/fesetexcept.c
@@ -0,0 +1,31 @@
+/* Set given exception flags.  M68K version.
+   Copyright (C) 2016 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/>.  */
+
+#include <fenv.h>
+
+int
+fesetexcept (int excepts)
+{
+  fexcept_t fpsr;
+
+  __asm__ ("fmove%.l %/fpsr,%0" : "=dm" (fpsr));
+  fpsr |= excepts & FE_ALL_EXCEPT;
+  __asm__ __volatile__ ("fmove%.l %0,%/fpsr" : : "dm" (fpsr));
+
+  return 0;
+}

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=272ea6120790bccfc2d13534486aff69f7ff09d4

commit 272ea6120790bccfc2d13534486aff69f7ff09d4
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Tue Aug 16 16:19:55 2016 +0000

    Add fesetexcept: ia64.
    
    This patch adds an IA64 version of fesetexcept.  Untested.
    
    	* sysdeps/ia64/fpu/fesetexcept.c: New file.

diff --git a/ChangeLog b/ChangeLog
index 1b1800b..a33298d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2016-08-16  Joseph Myers  <joseph@codesourcery.com>
 
+	* sysdeps/ia64/fpu/fesetexcept.c: New file.
+
 	* sysdeps/hppa/fpu/fesetexcept.c: New file.
 
 	* sysdeps/arm/fesetexcept.c: New file.
diff --git a/sysdeps/ia64/fpu/fesetexcept.c b/sysdeps/ia64/fpu/fesetexcept.c
new file mode 100644
index 0000000..d6004b6
--- /dev/null
+++ b/sysdeps/ia64/fpu/fesetexcept.c
@@ -0,0 +1,31 @@
+/* Set given exception flags.  IA64 version.
+   Copyright (C) 2016 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/>.  */
+
+#include <fenv.h>
+
+int
+fesetexcept (int excepts)
+{
+  fenv_t fpsr;
+
+  __asm__ __volatile__ ("mov.m %0=ar.fpsr" : "=r" (fpsr));
+  fpsr |= ((excepts & FE_ALL_EXCEPT) << 13);
+  __asm__ __volatile__ ("mov.m ar.fpsr=%0" :: "r" (fpsr) : "memory");
+
+  return 0;
+}

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=e03d01b9f2a88337e061a1885cc7f431063a083a

commit e03d01b9f2a88337e061a1885cc7f431063a083a
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Tue Aug 16 16:19:03 2016 +0000

    Add fesetexcept: hppa.
    
    This patch adds an HPPA version of fesetexcept.  Untested.
    
    	* sysdeps/hppa/fpu/fesetexcept.c: New file.

diff --git a/ChangeLog b/ChangeLog
index 977497b..1b1800b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2016-08-16  Joseph Myers  <joseph@codesourcery.com>
 
+	* sysdeps/hppa/fpu/fesetexcept.c: New file.
+
 	* sysdeps/arm/fesetexcept.c: New file.
 
 	* sysdeps/alpha/fpu/fesetexcept.c: New file.
diff --git a/sysdeps/hppa/fpu/fesetexcept.c b/sysdeps/hppa/fpu/fesetexcept.c
new file mode 100644
index 0000000..f1eb2e5
--- /dev/null
+++ b/sysdeps/hppa/fpu/fesetexcept.c
@@ -0,0 +1,35 @@
+/* Set given exception flags.  HPPA version.
+   Copyright (C) 2016 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/>.  */
+
+#include <fenv.h>
+#include <fpu_control.h>
+
+int
+fesetexcept (int excepts)
+{
+  fpu_control_t fpsr;
+  fpu_control_t fpsr_new;
+
+  _FPU_GETCW (fpsr);
+  excepts &= FE_ALL_EXCEPT;
+  fpsr_new = fpsr | (excepts << _FPU_HPPA_SHIFT_FLAGS);
+  if (fpsr != fpsr_new)
+    _FPU_SETCW (fpsr_new);
+
+  return 0;
+}

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=969b3a56e91553250f6c3f5042f0a8d82d0a05de

commit 969b3a56e91553250f6c3f5042f0a8d82d0a05de
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Tue Aug 16 16:18:24 2016 +0000

    Add fesetexcept: arm.
    
    This patch adds an ARM version of fesetexcept.
    
    	* sysdeps/arm/fesetexcept.c: New file.

diff --git a/ChangeLog b/ChangeLog
index d45d73d..977497b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2016-08-16  Joseph Myers  <joseph@codesourcery.com>
 
+	* sysdeps/arm/fesetexcept.c: New file.
+
 	* sysdeps/alpha/fpu/fesetexcept.c: New file.
 
 	* sysdeps/aarch64/fpu/fesetexcept.c: New file.
diff --git a/sysdeps/arm/fesetexcept.c b/sysdeps/arm/fesetexcept.c
new file mode 100644
index 0000000..96a79ae
--- /dev/null
+++ b/sysdeps/arm/fesetexcept.c
@@ -0,0 +1,38 @@
+/* Set given exception flags.  ARM version.
+   Copyright (C) 2016 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/>.  */
+
+#include <fenv.h>
+#include <fpu_control.h>
+#include <arm-features.h>
+
+int
+fesetexcept (int excepts)
+{
+  fpu_control_t fpscr, new_fpscr;
+
+  /* Fail if a VFP unit isn't present unless nothing needs to be done.  */
+  if (!ARM_HAVE_VFP)
+    return (excepts != 0);
+
+  _FPU_GETCW (fpscr);
+  new_fpscr = fpscr | (excepts & FE_ALL_EXCEPT);
+  if (new_fpscr != fpscr)
+    _FPU_SETCW (new_fpscr);
+
+  return 0;
+}

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=56acef0ebbceae8e2919aab9641598e3abb14b5a

commit 56acef0ebbceae8e2919aab9641598e3abb14b5a
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Tue Aug 16 16:17:42 2016 +0000

    Add fesetexcept: alpha.
    
    This patch adds an Alpha version of fesetexcept.  Untested.
    
    	* sysdeps/alpha/fpu/fesetexcept.c: New file.

diff --git a/ChangeLog b/ChangeLog
index 2aacdbd..d45d73d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2016-08-16  Joseph Myers  <joseph@codesourcery.com>
 
+	* sysdeps/alpha/fpu/fesetexcept.c: New file.
+
 	* sysdeps/aarch64/fpu/fesetexcept.c: New file.
 
 	* math/fesetexcept.c: New file.
diff --git a/sysdeps/alpha/fpu/fesetexcept.c b/sysdeps/alpha/fpu/fesetexcept.c
new file mode 100644
index 0000000..5d6904f
--- /dev/null
+++ b/sysdeps/alpha/fpu/fesetexcept.c
@@ -0,0 +1,31 @@
+/* Set given exception flags.  Alpha version.
+   Copyright (C) 2016 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/>.  */
+
+#include <fenv_libc.h>
+
+int
+fesetexcept (int excepts)
+{
+  unsigned long int tmp;
+
+  tmp = __ieee_get_fp_control ();
+  tmp |= excepts & SWCR_STATUS_MASK;
+  __ieee_set_fp_control (tmp);
+
+  return 0;
+}

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=ce99c0816b2464efe9631cba6e51c7fe6ea90884

commit ce99c0816b2464efe9631cba6e51c7fe6ea90884
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Tue Aug 16 16:16:57 2016 +0000

    Add fesetexcept: aarch64.
    
    This patch adds an AArch64 version of fesetexcept.  Untested.
    
    	* sysdeps/aarch64/fpu/fesetexcept.c: New file.

diff --git a/ChangeLog b/ChangeLog
index 3c90d9c..2aacdbd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2016-08-16  Joseph Myers  <joseph@codesourcery.com>
 
+	* sysdeps/aarch64/fpu/fesetexcept.c: New file.
+
 	* math/fesetexcept.c: New file.
 	* sysdeps/i386/fpu/fesetexcept.c: Likewise.
 	* sysdeps/x86_64/fpu/fesetexcept.c: Likewise.
diff --git a/sysdeps/aarch64/fpu/fesetexcept.c b/sysdeps/aarch64/fpu/fesetexcept.c
new file mode 100644
index 0000000..52210bb
--- /dev/null
+++ b/sysdeps/aarch64/fpu/fesetexcept.c
@@ -0,0 +1,34 @@
+/* Set given exception flags.  AArch64 version.
+   Copyright (C) 2016 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/>.  */
+
+#include <fenv.h>
+#include <fpu_control.h>
+
+int
+fesetexcept (int excepts)
+{
+  fpu_fpsr_t fpsr;
+  fpu_fpsr_t fpsr_new;
+
+  _FPU_GETFPSR (fpsr);
+  fpsr_new = fpsr | (excepts & FE_ALL_EXCEPT);
+  if (fpsr != fpsr_new)
+    _FPU_SETFPSR (fpsr_new);
+
+  return 0;
+}

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=5146356f5a72c3c660cd782c9eaafbe767817050

commit 5146356f5a72c3c660cd782c9eaafbe767817050
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Tue Aug 16 16:16:10 2016 +0000

    Add fesetexcept.
    
    TS 18661-1 defines an fesetexcept function for setting floating-point
    exception flags without the side-effect of causing enabled traps to be
    taken.
    
    This patch series implements this function for glibc.  The present
    patch adds the fallback stub implementation, x86 and x86_64
    implementations, documentation, tests and ABI baseline updates.  The
    remaining patches, some of them untested, add implementations for
    other architectures.  The implementations generally follow those of
    the fesetexceptflag function.
    
    As for fesetexceptflag, the approach taken for architectures where
    setting flags causes enabled traps to be taken is to set the flags
    (and potentially cause traps) rather than refusing to set the flags
    and returning an error.  Since ISO C and TS 18661 provide no way to
    enable traps, this is formally in accordance with the standards.
    
    The NEWS entry should be considered a placeholder, since this patch
    series is intended to be followed by further such series adding other
    TS 18661-1 features, so that the NEWS entry would end up looking more
    like
    
    * New <fenv.h> features from TS 18661-1:2014 are added to libm: the
      fesetexcept, fetestexceptflag, fegetmode and fesetmode functions,
      the femode_t type and the FE_DFL_MODE macro.
    
    with hopefully more such entries for other features, rather than
    having an entry for a single function in the end.
    
    I believe we have consensus for adding TS 18661-1 interfaces as per
    <https://sourceware.org/ml/libc-alpha/2016-06/msg00421.html>.
    
    Tested for x86_64, x86, mips64 (hard float, and soft float to test the
    fallback version), arm (hard float) and powerpc (hard float, soft
    float and e500).
    
    	* math/fesetexcept.c: New file.
    	* sysdeps/i386/fpu/fesetexcept.c: Likewise.
    	* sysdeps/x86_64/fpu/fesetexcept.c: Likewise.
    	* math/fenv.h: Define
    	__GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION and include
    	<bits/libc-header-start.h> instead of including <features.h>.
    	[__GLIBC_USE (IEC_60559_BFP_EXT)] (fesetexcept): New function
    	declaration.
    	* manual/arith.texi (fesetexcept): Document function.
    	* math/Versions (fesetexcept): New libm symbol at version
    	GLIBC_2.25.
    	* math/Makefile (libm-support): Add fesetexcept.
    	(tests): Add test-fesetexcept and test-fesetexcept-traps.
    	* math/test-fesetexcept.c: New file.
    	* math/test-fesetexcept-traps.c: Likewise.
    	* sysdeps/nacl/libm.abilist: Update.
    	* sysdeps/unix/sysv/linux/aarch64/libm.abilist: Likewise.
    	* sysdeps/unix/sysv/linux/alpha/libm.abilist: Likewise.
    	* sysdeps/unix/sysv/linux/arm/libm.abilist: Likewise.
    	* sysdeps/unix/sysv/linux/hppa/libm.abilist: Likewise.
    	* sysdeps/unix/sysv/linux/i386/libm.abilist: Likewise.
    	* sysdeps/unix/sysv/linux/ia64/libm.abilist: Likewise.
    	* sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Likewise.
    	* sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Likewise.
    	* sysdeps/unix/sysv/linux/microblaze/libm.abilist: Likewise.
    	* sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Likewise.
    	* sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Likewise.
    	* sysdeps/unix/sysv/linux/nios2/libm.abilist: Likewise.
    	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist:
    	Likewise.
    	* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist:
    	Likewise.
    	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist:
    	Likewise.
    	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist:
    	Likewise.
    	* sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Likewise.
    	* sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Likewise.
    	* sysdeps/unix/sysv/linux/sh/libm.abilist: Likewise.
    	* sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Likewise.
    	* sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Likewise.
    	* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist:
    	Likewise.
    	* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist:
    	Likewise.
    	* sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist: Likewise.
    	* sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Likewise.
    	* sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Likewise.

diff --git a/ChangeLog b/ChangeLog
index 87fcf32..3c90d9c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,54 @@
+2016-08-16  Joseph Myers  <joseph@codesourcery.com>
+
+	* math/fesetexcept.c: New file.
+	* sysdeps/i386/fpu/fesetexcept.c: Likewise.
+	* sysdeps/x86_64/fpu/fesetexcept.c: Likewise.
+	* math/fenv.h: Define
+	__GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION and include
+	<bits/libc-header-start.h> instead of including <features.h>.
+	[__GLIBC_USE (IEC_60559_BFP_EXT)] (fesetexcept): New function
+	declaration.
+	* manual/arith.texi (fesetexcept): Document function.
+	* math/Versions (fesetexcept): New libm symbol at version
+	GLIBC_2.25.
+	* math/Makefile (libm-support): Add fesetexcept.
+	(tests): Add test-fesetexcept and test-fesetexcept-traps.
+	* math/test-fesetexcept.c: New file.
+	* math/test-fesetexcept-traps.c: Likewise.
+	* sysdeps/nacl/libm.abilist: Update.
+	* sysdeps/unix/sysv/linux/aarch64/libm.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/alpha/libm.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/arm/libm.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/hppa/libm.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/i386/libm.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/ia64/libm.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/microblaze/libm.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/nios2/libm.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist:
+	Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist:
+	Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist:
+	Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist:
+	Likewise.
+	* sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/sh/libm.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist:
+	Likewise.
+	* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist:
+	Likewise.
+	* sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Likewise.
+
 2016-08-16  Florian Weimer  <fweimer@redhat.com>
 
 	* nptl/tst-tls3.c (default_stack_size_in_mb, stack_size_in_mb):
diff --git a/NEWS b/NEWS
index 415ba3d..fdcd7e7 100644
--- a/NEWS
+++ b/NEWS
@@ -32,6 +32,8 @@ Version 2.25
   presently cannot avoid being compiled under _GNU_SOURCE, exacerbating the
   problem.
 
+* The fesetexcept function from TS 18661-1:2014 is added to libm.
+
 Security related changes:
 
   On ARM EABI (32-bit), generating a backtrace for execution contexts which
diff --git a/manual/arith.texi b/manual/arith.texi
index ea8ff48..8dcd409 100644
--- a/manual/arith.texi
+++ b/manual/arith.texi
@@ -759,6 +759,18 @@ non-zero value otherwise.
 
 @comment fenv.h
 @comment ISO
+@deftypefun int fesetexcept (int @var{excepts})
+@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
+This function sets the supported exception flags indicated by
+@var{excepts}, like @code{feraiseexcept}, but without causing enabled
+traps to be taken.  @code{fesetexcept} is from TS 18661-1:2014.
+
+The function returns zero in case the operation was successful, a
+non-zero value otherwise.
+@end deftypefun
+
+@comment fenv.h
+@comment ISO
 @deftypefun int fetestexcept (int @var{excepts})
 @safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
 Test whether the exception flags indicated by the parameter @var{except}
diff --git a/math/Makefile b/math/Makefile
index 1da1797..38a4709 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -41,7 +41,7 @@ libm-support = s_lib_version s_matherr s_signgam			\
 	       fclrexcpt fgetexcptflg fraiseexcpt fsetexcptflg		\
 	       ftestexcept fegetround fesetround fegetenv feholdexcpt	\
 	       fesetenv feupdateenv t_exp fedisblxcpt feenablxcpt	\
-	       fegetexcept
+	       fegetexcept fesetexcept
 
 libm-calls =								  \
 	e_acosF e_acoshF e_asinF e_atan2F e_atanhF e_coshF e_expF e_fmodF \
@@ -146,7 +146,8 @@ tests = test-matherr test-fenv atest-exp atest-sincos atest-exp2 basic-test \
 	test-nearbyint-except-2 test-signgam-uchar test-signgam-uchar-init \
 	test-signgam-uint test-signgam-uint-init test-signgam-ullong \
 	test-signgam-ullong-init test-nan-overflow test-nan-payload \
-	test-fexcept test-fexcept-traps $(tests-static)
+	test-fexcept test-fexcept-traps test-fesetexcept \
+	test-fesetexcept-traps $(tests-static)
 tests-static = test-fpucw-static test-fpucw-ieee-static \
 	       test-signgam-uchar-static test-signgam-uchar-init-static \
 	       test-signgam-uint-static test-signgam-uint-init-static \
diff --git a/math/Versions b/math/Versions
index 467d7ed..ff4e4d4 100644
--- a/math/Versions
+++ b/math/Versions
@@ -214,4 +214,7 @@ libm {
     nextup; nextupf; nextupl;
     nextdown; nextdownf; nextdownl;
   }
+  GLIBC_2.25 {
+    fesetexcept;
+  }
 }
diff --git a/math/fenv.h b/math/fenv.h
index 9a1e112..7f4ceb7 100644
--- a/math/fenv.h
+++ b/math/fenv.h
@@ -22,7 +22,8 @@
 #ifndef _FENV_H
 #define _FENV_H	1
 
-#include <features.h>
+#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
+#include <bits/libc-header-start.h>
 
 /* Get the architecture dependend definitions.  The following definitions
    are expected to be done:
@@ -70,6 +71,12 @@ extern int fegetexceptflag (fexcept_t *__flagp, int __excepts) __THROW;
 /* Raise the supported exceptions represented by EXCEPTS.  */
 extern int feraiseexcept (int __excepts) __THROW;
 
+#if __GLIBC_USE (IEC_60559_BFP_EXT)
+/* Set the supported exception flags represented by EXCEPTS, without
+   causing enabled traps to be taken.  */
+extern int fesetexcept (int __excepts) __THROW;
+#endif
+
 /* Set complete status for exceptions indicated by EXCEPTS according to
    the representation in the object pointed to by FLAGP.  */
 extern int fesetexceptflag (const fexcept_t *__flagp, int __excepts) __THROW;
diff --git a/math/fesetexcept.c b/math/fesetexcept.c
new file mode 100644
index 0000000..892d8ad
--- /dev/null
+++ b/math/fesetexcept.c
@@ -0,0 +1,27 @@
+/* Set given exception flags.
+   Copyright (C) 2016 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/>.  */
+
+#include <fenv.h>
+
+int
+fesetexcept (int excepts)
+{
+  /* This always fails unless nothing needs to be done.  */
+  return (excepts != 0);
+}
+stub_warning (fesetexcept)
diff --git a/math/test-fesetexcept-traps.c b/math/test-fesetexcept-traps.c
new file mode 100644
index 0000000..c40b5bc
--- /dev/null
+++ b/math/test-fesetexcept-traps.c
@@ -0,0 +1,68 @@
+/* Test fesetexcept: exception traps enabled.
+   Copyright (C) 2016 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/>.  */
+
+#include <fenv.h>
+#include <stdio.h>
+#include <math-tests.h>
+
+static int
+do_test (void)
+{
+  int result = 0;
+
+  fedisableexcept (FE_ALL_EXCEPT);
+  int ret = feenableexcept (FE_ALL_EXCEPT);
+  if (!EXCEPTION_ENABLE_SUPPORTED (FE_ALL_EXCEPT) && (ret == -1))
+    {
+      puts ("feenableexcept (FE_ALL_EXCEPT) not supported, cannot test");
+      return 77;
+    }
+  else if (ret != 0)
+    {
+      puts ("feenableexcept (FE_ALL_EXCEPT) failed");
+      result = 1;
+      return result;
+    }
+
+  if (EXCEPTION_SET_FORCES_TRAP)
+    {
+      puts ("setting exceptions traps, cannot test on this architecture");
+      return 77;
+    }
+  /* Verify fesetexcept does not cause exception traps.  */
+  ret = fesetexcept (FE_ALL_EXCEPT);
+  if (ret == 0)
+    puts ("fesetexcept (FE_ALL_EXCEPT) succeeded");
+  else
+    {
+      puts ("fesetexcept (FE_ALL_EXCEPT) failed");
+      if (EXCEPTION_TESTS (float))
+	{
+	  puts ("failure of fesetexcept was unexpected");
+	  result = 1;
+	}
+      else
+	puts ("failure of fesetexcept OK");
+    }
+  feclearexcept (FE_ALL_EXCEPT);
+
+  return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/math/test-fesetexcept.c b/math/test-fesetexcept.c
new file mode 100644
index 0000000..912a9a6
--- /dev/null
+++ b/math/test-fesetexcept.c
@@ -0,0 +1,129 @@
+/* Test fesetexcept.
+   Copyright (C) 2016 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/>.  */
+
+#include <fenv.h>
+#include <stdio.h>
+#include <math-tests.h>
+
+static int
+test_fesetexcept (int exc, const char *exc_name)
+{
+  int result = 0;
+
+  printf ("Testing %s\n", exc_name);
+  feclearexcept (FE_ALL_EXCEPT);
+  int ret = fesetexcept (exc);
+  if (ret == 0)
+    printf ("fesetexcept (%s) succeeded\n", exc_name);
+  else
+    {
+      printf ("fesetexcept (%s) failed\n", exc_name);
+      if (exc == 0 || EXCEPTION_TESTS (float))
+	{
+	  puts ("failure of fesetexcept was unexpected");
+	  result = 1;
+	}
+      else
+	puts ("failure of fesetexcept OK, skipping further tests");
+      return result;
+    }
+  ret = fetestexcept (FE_ALL_EXCEPT);
+  if (ret != exc)
+    {
+      printf ("raised exceptions %x, expected %x\n",
+	      (unsigned int) ret, (unsigned int) exc);
+      result = 1;
+    }
+
+  ret = feraiseexcept (FE_ALL_EXCEPT);
+  if (ret != 0)
+    {
+      if (exc == 0 && !EXCEPTION_TESTS (float))
+	{
+	  puts ("feraiseexcept (FE_ALL_EXCEPT) failed, skipping further tests");
+	  return result;
+	}
+      puts ("feraiseexcept (FE_ALL_EXCEPT) unexpectedly failed");
+      result = 1;
+    }
+  ret = fesetexcept (exc);
+  if (ret != 0)
+    {
+      puts ("fesetexcept (second test) unexpectedly failed");
+      result = 1;
+    }
+  ret = fetestexcept (FE_ALL_EXCEPT);
+  if (ret != FE_ALL_EXCEPT)
+    {
+      printf ("raised exceptions (second test) %x, expected %x\n",
+	      (unsigned int) ret, (unsigned int) FE_ALL_EXCEPT);
+      result = 1;
+    }
+
+  feclearexcept (FE_ALL_EXCEPT);
+  ret = feraiseexcept (FE_ALL_EXCEPT & ~exc);
+  if (ret != 0)
+    {
+      puts ("feraiseexcept (third test) unexpectedly failed");
+      result = 1;
+    }
+  ret = fesetexcept (exc);
+  if (ret != 0)
+    {
+      puts ("fesetexcept (third test) unexpectedly failed");
+      result = 1;
+    }
+  ret = fetestexcept (FE_ALL_EXCEPT);
+  if (ret != FE_ALL_EXCEPT)
+    {
+      printf ("raised exceptions (third test) %x, expected %x\n",
+	      (unsigned int) ret, (unsigned int) FE_ALL_EXCEPT);
+      result = 1;
+    }
+
+  return result;
+}
+
+static int
+do_test (void)
+{
+  int result = 0;
+
+  result |= test_fesetexcept (0, "0");
+  result |= test_fesetexcept (FE_ALL_EXCEPT, "FE_ALL_EXCEPT");
+#ifdef FE_DIVBYZERO
+  result |= test_fesetexcept (FE_DIVBYZERO, "FE_DIVBYZERO");
+#endif
+#ifdef FE_INEXACT
+  result |= test_fesetexcept (FE_INEXACT, "FE_INEXACT");
+#endif
+#ifdef FE_INVALID
+  result |= test_fesetexcept (FE_INVALID, "FE_INVALID");
+#endif
+#ifdef FE_OVERFLOW
+  result |= test_fesetexcept (FE_OVERFLOW, "FE_OVERFLOW");
+#endif
+#ifdef FE_UNDERFLOW
+  result |= test_fesetexcept (FE_UNDERFLOW, "FE_UNDERFLOW");
+#endif
+
+  return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/sysdeps/i386/fpu/fesetexcept.c b/sysdeps/i386/fpu/fesetexcept.c
new file mode 100644
index 0000000..eeb0c7f
--- /dev/null
+++ b/sysdeps/i386/fpu/fesetexcept.c
@@ -0,0 +1,31 @@
+/* Set given exception flags.  i386 version.
+   Copyright (C) 2016 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/>.  */
+
+#include <fenv.h>
+
+int
+fesetexcept (int excepts)
+{
+  fenv_t temp;
+
+  __asm__ ("fnstenv %0" : "=m" (*&temp));
+  temp.__status_word |= excepts & FE_ALL_EXCEPT;
+  __asm__ ("fldenv %0" : : "m" (*&temp));
+
+  return 0;
+}
diff --git a/sysdeps/nacl/libm.abilist b/sysdeps/nacl/libm.abilist
index 838fede..b50f029 100644
--- a/sysdeps/nacl/libm.abilist
+++ b/sysdeps/nacl/libm.abilist
@@ -379,3 +379,5 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
index 781d2d3..01b01b7 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
@@ -410,3 +410,5 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist
index f342c6b..9ba817d 100644
--- a/sysdeps/unix/sysv/linux/alpha/libm.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist
@@ -420,6 +420,8 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
 GLIBC_2.3.4 GLIBC_2.3.4 A
 GLIBC_2.3.4 __c1_cabsf F
 GLIBC_2.3.4 __c1_cacosf F
diff --git a/sysdeps/unix/sysv/linux/arm/libm.abilist b/sysdeps/unix/sysv/linux/arm/libm.abilist
index 7a02fb1..d9a6f6f 100644
--- a/sysdeps/unix/sysv/linux/arm/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/libm.abilist
@@ -68,6 +68,8 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
 GLIBC_2.4 GLIBC_2.4 A
 GLIBC_2.4 _LIB_VERSION D 0x4
 GLIBC_2.4 __clog10 F
diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist
index bf40ddf..75d4797 100644
--- a/sysdeps/unix/sysv/linux/hppa/libm.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist
@@ -380,5 +380,7 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
 GLIBC_2.4 GLIBC_2.4 A
 GLIBC_2.4 exp2l F
diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist
index 92e9402..17b6d6d 100644
--- a/sysdeps/unix/sysv/linux/i386/libm.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libm.abilist
@@ -422,4 +422,6 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
 GLIBC_2.4 GLIBC_2.4 A
diff --git a/sysdeps/unix/sysv/linux/ia64/libm.abilist b/sysdeps/unix/sysv/linux/ia64/libm.abilist
index e2737a2..d2d8978 100644
--- a/sysdeps/unix/sysv/linux/ia64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libm.abilist
@@ -351,4 +351,6 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
 GLIBC_2.4 GLIBC_2.4 A
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
index 7a02fb1..d9a6f6f 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
@@ -68,6 +68,8 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
 GLIBC_2.4 GLIBC_2.4 A
 GLIBC_2.4 _LIB_VERSION D 0x4
 GLIBC_2.4 __clog10 F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
index 9af59d7..3edf8ae 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
@@ -420,4 +420,6 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
 GLIBC_2.4 GLIBC_2.4 A
diff --git a/sysdeps/unix/sysv/linux/microblaze/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/libm.abilist
index 0b1f136..e934101 100644
--- a/sysdeps/unix/sysv/linux/microblaze/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/libm.abilist
@@ -379,3 +379,5 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
index 2e2bb00..88cd724 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
@@ -381,6 +381,8 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
 GLIBC_2.4 GLIBC_2.4 A
 GLIBC_2.4 exp2l F
 _gp_disp _gp_disp A
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
index 7daa595..52d5cb3 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
@@ -412,4 +412,6 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
 GLIBC_2.4 GLIBC_2.4 A
diff --git a/sysdeps/unix/sysv/linux/nios2/libm.abilist b/sysdeps/unix/sysv/linux/nios2/libm.abilist
index a36e2f3..37f7a88 100644
--- a/sysdeps/unix/sysv/linux/nios2/libm.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libm.abilist
@@ -379,3 +379,5 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
index abe8c5d..ad61a97 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
@@ -421,6 +421,8 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
 GLIBC_2.4 GLIBC_2.4 A
 GLIBC_2.4 __clog10l F
 GLIBC_2.4 __finitel F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
index 1c25f56..8542238 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
@@ -420,6 +420,8 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
 GLIBC_2.4 GLIBC_2.4 A
 GLIBC_2.4 __clog10l F
 GLIBC_2.4 __finitel F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist
index 9d19474..b2f0608 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist
@@ -415,3 +415,5 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist
index cedb189..e5d36a1 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist
@@ -96,6 +96,8 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
 GLIBC_2.3 GLIBC_2.3 A
 GLIBC_2.3 _LIB_VERSION D 0x4
 GLIBC_2.3 __clog10 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
index 9b567c6..457aa71 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
@@ -410,6 +410,8 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
 GLIBC_2.4 GLIBC_2.4 A
 GLIBC_2.4 __clog10l F
 GLIBC_2.4 __finitel F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
index 78a82fb..217d76b 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
@@ -408,6 +408,8 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
 GLIBC_2.4 GLIBC_2.4 A
 GLIBC_2.4 __clog10l F
 GLIBC_2.4 __finitel F
diff --git a/sysdeps/unix/sysv/linux/sh/libm.abilist b/sysdeps/unix/sysv/linux/sh/libm.abilist
index f98ade7..d1da0df 100644
--- a/sysdeps/unix/sysv/linux/sh/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/libm.abilist
@@ -380,5 +380,7 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
 GLIBC_2.4 GLIBC_2.4 A
 GLIBC_2.4 exp2l F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
index d2e8421..1c58255 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
@@ -413,6 +413,8 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
 GLIBC_2.4 GLIBC_2.4 A
 GLIBC_2.4 __clog10l F
 GLIBC_2.4 __finitel F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
index e000221..6915c87 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
@@ -411,4 +411,6 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
 GLIBC_2.4 GLIBC_2.4 A
diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist
index 00e82c1..6ebaa0f 100644
--- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist
@@ -380,3 +380,5 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist
index 00e82c1..6ebaa0f 100644
--- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist
@@ -380,3 +380,5 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist b/sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist
index 00e82c1..6ebaa0f 100644
--- a/sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist
+++ b/sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist
@@ -380,3 +380,5 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
index 65b4708..2e77c3d 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
@@ -411,4 +411,6 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
 GLIBC_2.4 GLIBC_2.4 A
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
index d35e9f0..b9ccb1a 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
@@ -410,3 +410,5 @@ GLIBC_2.24 nextdownl F
 GLIBC_2.24 nextup F
 GLIBC_2.24 nextupf F
 GLIBC_2.24 nextupl F
+GLIBC_2.25 GLIBC_2.25 A
+GLIBC_2.25 fesetexcept F
diff --git a/sysdeps/x86_64/fpu/fesetexcept.c b/sysdeps/x86_64/fpu/fesetexcept.c
new file mode 100644
index 0000000..805f769
--- /dev/null
+++ b/sysdeps/x86_64/fpu/fesetexcept.c
@@ -0,0 +1,31 @@
+/* Set given exception flags.  x86_64 version.
+   Copyright (C) 2016 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/>.  */
+
+#include <fenv.h>
+
+int
+fesetexcept (int excepts)
+{
+  unsigned int mxcsr;
+
+  __asm__ ("stmxcsr %0" : "=m" (*&mxcsr));
+  mxcsr |= excepts & FE_ALL_EXCEPT;
+  __asm__ ("ldmxcsr %0" : : "m" (*&mxcsr));
+
+  return 0;
+}

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                          |   75 +++++++++++
 NEWS                                               |    2 +
 manual/arith.texi                                  |   12 ++
 math/Makefile                                      |    5 +-
 math/Versions                                      |    3 +
 math/fenv.h                                        |    9 ++-
 math/fesetexcept.c                                 |   27 ++++
 math/test-fesetexcept-traps.c                      |   68 ++++++++++
 math/test-fesetexcept.c                            |  129 ++++++++++++++++++++
 sysdeps/aarch64/fpu/fesetexcept.c                  |   34 +++++
 sysdeps/alpha/fpu/fesetexcept.c                    |   31 +++++
 sysdeps/arm/fesetexcept.c                          |   38 ++++++
 sysdeps/hppa/fpu/fesetexcept.c                     |   35 ++++++
 sysdeps/i386/fpu/fesetexcept.c                     |   31 +++++
 sysdeps/ia64/fpu/fesetexcept.c                     |   31 +++++
 sysdeps/m68k/fpu/fesetexcept.c                     |   31 +++++
 sysdeps/mips/fpu/fesetexcept.c                     |   32 +++++
 sysdeps/nacl/libm.abilist                          |    2 +
 sysdeps/powerpc/fpu/fesetexcept.c                  |   42 +++++++
 sysdeps/powerpc/nofpu/fesetexcept.c                |   28 +++++
 sysdeps/powerpc/powerpc32/e500/nofpu/fesetexcept.c |   37 ++++++
 sysdeps/s390/fpu/fesetexcept.c                     |   33 +++++
 sysdeps/sh/sh4/fpu/fesetexcept.c                   |   32 +++++
 sysdeps/sparc/fpu/fesetexcept.c                    |   31 +++++
 sysdeps/unix/sysv/linux/aarch64/libm.abilist       |    2 +
 sysdeps/unix/sysv/linux/alpha/libm.abilist         |    2 +
 sysdeps/unix/sysv/linux/arm/libm.abilist           |    2 +
 sysdeps/unix/sysv/linux/hppa/libm.abilist          |    2 +
 sysdeps/unix/sysv/linux/i386/libm.abilist          |    2 +
 sysdeps/unix/sysv/linux/ia64/libm.abilist          |    2 +
 sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist |    2 +
 sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist   |    2 +
 sysdeps/unix/sysv/linux/microblaze/libm.abilist    |    2 +
 sysdeps/unix/sysv/linux/mips/mips32/libm.abilist   |    2 +
 sysdeps/unix/sysv/linux/mips/mips64/libm.abilist   |    2 +
 sysdeps/unix/sysv/linux/nios2/libm.abilist         |    2 +
 .../sysv/linux/powerpc/powerpc32/fpu/libm.abilist  |    2 +
 .../linux/powerpc/powerpc32/nofpu/libm.abilist     |    2 +
 .../sysv/linux/powerpc/powerpc64/libm-le.abilist   |    2 +
 .../unix/sysv/linux/powerpc/powerpc64/libm.abilist |    2 +
 sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist  |    2 +
 sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist  |    2 +
 sysdeps/unix/sysv/linux/sh/libm.abilist            |    2 +
 sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist |    2 +
 sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist |    2 +
 .../sysv/linux/tile/tilegx/tilegx32/libm.abilist   |    2 +
 .../sysv/linux/tile/tilegx/tilegx64/libm.abilist   |    2 +
 sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist  |    2 +
 sysdeps/unix/sysv/linux/x86_64/64/libm.abilist     |    2 +
 sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist    |    2 +
 sysdeps/x86_64/fpu/fesetexcept.c                   |   31 +++++
 51 files changed, 878 insertions(+), 3 deletions(-)
 create mode 100644 math/fesetexcept.c
 create mode 100644 math/test-fesetexcept-traps.c
 create mode 100644 math/test-fesetexcept.c
 create mode 100644 sysdeps/aarch64/fpu/fesetexcept.c
 create mode 100644 sysdeps/alpha/fpu/fesetexcept.c
 create mode 100644 sysdeps/arm/fesetexcept.c
 create mode 100644 sysdeps/hppa/fpu/fesetexcept.c
 create mode 100644 sysdeps/i386/fpu/fesetexcept.c
 create mode 100644 sysdeps/ia64/fpu/fesetexcept.c
 create mode 100644 sysdeps/m68k/fpu/fesetexcept.c
 create mode 100644 sysdeps/mips/fpu/fesetexcept.c
 create mode 100644 sysdeps/powerpc/fpu/fesetexcept.c
 create mode 100644 sysdeps/powerpc/nofpu/fesetexcept.c
 create mode 100644 sysdeps/powerpc/powerpc32/e500/nofpu/fesetexcept.c
 create mode 100644 sysdeps/s390/fpu/fesetexcept.c
 create mode 100644 sysdeps/sh/sh4/fpu/fesetexcept.c
 create mode 100644 sysdeps/sparc/fpu/fesetexcept.c
 create mode 100644 sysdeps/x86_64/fpu/fesetexcept.c


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]