Make ARM fesetenv (FE_NOMASK_ENV) detect failure (bug 14866).

This commit is contained in:
Joseph Myers 2012-11-21 20:26:56 +00:00
parent 09e958ed42
commit ad35f2dd75
3 changed files with 17 additions and 1 deletions

2
NEWS
View File

@ -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.

View File

@ -1,3 +1,9 @@
2012-11-21 Joseph Myers <joseph@codesourcery.com>
[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 <marcus.shawcroft@linaro.org>
* sysdeps/unix/sysv/linux/arm/Makefile (libcrypt-sysdep_routines): Add

View File

@ -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;
}