From: Joseph Myers Date: Wed, 21 Nov 2012 20:26:56 +0000 (+0000) Subject: Make ARM fesetenv (FE_NOMASK_ENV) detect failure (bug 14866). X-Git-Tag: glibc-2.17~135 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ad35f2dd750ed3e3f483409ef50b38ea19745002;p=thirdparty%2Fglibc.git Make ARM fesetenv (FE_NOMASK_ENV) detect failure (bug 14866). --- diff --git a/NEWS b/NEWS index f78758a903f..9eb0a10ab69 100644 --- a/NEWS +++ b/NEWS @@ -21,7 +21,7 @@ Version 2.17 14638, 14645, 14648, 14652, 14660, 14661, 14669, 14672, 14683, 14694, 14716, 14719, 14743, 14767, 14783, 14784, 14785, 14793, 14796, 14797, 14801, 14805, 14807, 14809, 14811, 14815, 14821, 14824, 14828, 14831, - 14835, 14838, 14856. + 14835, 14838, 14856, 14866. * Port to ARM AArch64 contributed by Linaro. diff --git a/ports/ChangeLog.arm b/ports/ChangeLog.arm index d060121311a..2a56a9f6434 100644 --- a/ports/ChangeLog.arm +++ b/ports/ChangeLog.arm @@ -1,3 +1,9 @@ +2012-11-21 Joseph Myers + + [BZ #14866] + * sysdeps/arm/fesetenv.c (__fesetenv): Test whether bits for + trapping exceptions were successfully set for FE_NOMASK_ENV. + 2012-11-14 Marcus Shawcroft * sysdeps/unix/sysv/linux/arm/Makefile (libcrypt-sysdep_routines): Add diff --git a/ports/sysdeps/arm/fesetenv.c b/ports/sysdeps/arm/fesetenv.c index 2fad61da1a1..e92f9f5ac84 100644 --- a/ports/sysdeps/arm/fesetenv.c +++ b/ports/sysdeps/arm/fesetenv.c @@ -40,6 +40,16 @@ __fesetenv (const fenv_t *envp) _FPU_SETCW (temp); + if (envp == FE_NOMASK_ENV) + { + /* VFPv3 and VFPv4 do not support trapping exceptions, so + test whether the relevant bits were set and fail if + not. */ + _FPU_GETCW (temp); + if ((temp & _FPU_IEEE) != _FPU_IEEE) + return 1; + } + /* Success. */ return 0; }