diff options
author | Joseph Myers <joseph@codesourcery.com> | 2016-08-29 11:47:21 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2016-08-29 11:47:21 +0000 |
commit | 780257d48d3e6f3f55b620e38e770c36778deefb (patch) | |
tree | d4ba91de85d991561e27affd98e351de4eaf581c /sysdeps | |
parent | ef4f97648dc95849e417dd3e6328165de4c22185 (diff) | |
download | glibc-780257d48d3e6f3f55b620e38e770c36778deefb.zip glibc-780257d48d3e6f3f55b620e38e770c36778deefb.tar.gz glibc-780257d48d3e6f3f55b620e38e770c36778deefb.tar.bz2 |
Add fetestexceptflag.
TS 18661-1 defines an fetestexceptflag function to test the exception
state saved in an fexcept_t object by fegetexceptflag.
This patch implements this function for glibc. Almost all
architectures save exception state in such a way that it can be
directly ANDed with exception flag bits, so rather than having lots of
fetestexceptflag implementations that all do the same thing, the math/
implementation is made to use this generic logic (which is also OK in
the fallback case where FE_ALL_EXCEPT is zero). The only architecture
that seems to need anything different is s390.
(fegetexceptflag and fesetexceptflag use abbreviated filenames
fgetexcptflg.c and fsetexcptflg.c. Because we are no longer concerned
by 14-character filename limits, fetestexceptflag uses the obvious
filename fetestexceptflag.c.)
The NEWS entry is intended to be expanded along the lines given in
<https://sourceware.org/ml/libc-alpha/2016-08/msg00356.html> when
fegetmode and fesetmode are added.
Tested for x86_64, x86, mips64 and powerpc.
* math/fetestexceptflag.c: New file.
* sysdeps/s390/fpu/fetestexceptflag.c: Likewise. Comment by
Stefan Liebler.
* math/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]
(fetestexceptflag): New function declaration.
* manual/arith.texi (fetestexceptflag): Document function.
* math/Versions (fetestexceptflag): New libm symbol at version
GLIBC_2.25.
* math/Makefile (libm-support): Add fetestexceptflag.
(tests): Add test-fetestexceptflag.
* math/test-fetestexceptflag.c: New file.
* 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.
Diffstat (limited to 'sysdeps')
28 files changed, 58 insertions, 0 deletions
diff --git a/sysdeps/nacl/libm.abilist b/sysdeps/nacl/libm.abilist index b50f029..2889773 100644 --- a/sysdeps/nacl/libm.abilist +++ b/sysdeps/nacl/libm.abilist @@ -381,3 +381,4 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag F diff --git a/sysdeps/s390/fpu/fetestexceptflag.c b/sysdeps/s390/fpu/fetestexceptflag.c new file mode 100644 index 0000000..c472d8c --- /dev/null +++ b/sysdeps/s390/fpu/fetestexceptflag.c @@ -0,0 +1,31 @@ +/* Test exception in saved exception state. 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 <fenv_libc.h> + +int +fetestexceptflag (const fexcept_t *flagp, int excepts) +{ + /* As *flagp is obtained by an earlier call of fegetexceptflag the + bits 0-5 of dxc-byte are either zero or correspond to the + flag-bits. Evaluate flags and last dxc-exception-code. */ + return (((*flagp >> FPC_FLAGS_SHIFT) | (*flagp >> FPC_DXC_SHIFT)) + & excepts + & FE_ALL_EXCEPT); +} diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist index 01b01b7..1f475cd 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist +++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist @@ -412,3 +412,4 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag F diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist index 9ba817d..11b76e9 100644 --- a/sysdeps/unix/sysv/linux/alpha/libm.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist @@ -422,6 +422,7 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag 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 d9a6f6f..1fc1804 100644 --- a/sysdeps/unix/sysv/linux/arm/libm.abilist +++ b/sysdeps/unix/sysv/linux/arm/libm.abilist @@ -70,6 +70,7 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag 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 75d4797..ed73488 100644 --- a/sysdeps/unix/sysv/linux/hppa/libm.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist @@ -382,5 +382,6 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag 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 17b6d6d..3a6dcaf 100644 --- a/sysdeps/unix/sysv/linux/i386/libm.abilist +++ b/sysdeps/unix/sysv/linux/i386/libm.abilist @@ -424,4 +424,5 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag 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 d2d8978..ec9916b 100644 --- a/sysdeps/unix/sysv/linux/ia64/libm.abilist +++ b/sysdeps/unix/sysv/linux/ia64/libm.abilist @@ -353,4 +353,5 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag 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 d9a6f6f..1fc1804 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist @@ -70,6 +70,7 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag 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 3edf8ae..32931f1 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist @@ -422,4 +422,5 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag 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 e934101..cab693a 100644 --- a/sysdeps/unix/sysv/linux/microblaze/libm.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/libm.abilist @@ -381,3 +381,4 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist index 88cd724..20a80cc 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist @@ -383,6 +383,7 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag 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 52d5cb3..02379f7 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist @@ -414,4 +414,5 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag 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 37f7a88..b4b377b 100644 --- a/sysdeps/unix/sysv/linux/nios2/libm.abilist +++ b/sysdeps/unix/sysv/linux/nios2/libm.abilist @@ -381,3 +381,4 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist index ad61a97..7eea14a 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist @@ -423,6 +423,7 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag 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 8542238..5eb2e9b 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist @@ -422,6 +422,7 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag 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 b2f0608..36b8e77 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist @@ -417,3 +417,4 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist index e5d36a1..2efd4eb 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist @@ -98,6 +98,7 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag 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 457aa71..62f75ba 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist @@ -412,6 +412,7 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag 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 217d76b..c41344a 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist @@ -410,6 +410,7 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag 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 d1da0df..3baecfb 100644 --- a/sysdeps/unix/sysv/linux/sh/libm.abilist +++ b/sysdeps/unix/sysv/linux/sh/libm.abilist @@ -382,5 +382,6 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag 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 1c58255..dd5390c 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist @@ -415,6 +415,7 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag 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 6915c87..394c29b 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist @@ -413,4 +413,5 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag 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 6ebaa0f..d66c886 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist @@ -382,3 +382,4 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag F diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist index 6ebaa0f..d66c886 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist @@ -382,3 +382,4 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag F diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist b/sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist index 6ebaa0f..d66c886 100644 --- a/sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist @@ -382,3 +382,4 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag F diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist index 2e77c3d..dd79dc4 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist @@ -413,4 +413,5 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag 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 b9ccb1a..45abb4f 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist @@ -412,3 +412,4 @@ GLIBC_2.24 nextupf F GLIBC_2.24 nextupl F GLIBC_2.25 GLIBC_2.25 A GLIBC_2.25 fesetexcept F +GLIBC_2.25 fetestexceptflag F |