+2013-06-20 Joseph Myers <joseph@codesourcery.com>
+
+ [BZ #15654]
+ * math/fedisblxcpt.c (fedisableexcept): Return 0.
+ * math/feenablxcpt.c (feenableexcept): Return 0 for argument 0.
+ * math/fegetenv.c (__fegetenv): Return 0.
+ * math/fegetexcept.c (fegetexcept): Return 0.
+ * math/fegetround.c (fegetround) [FE_TONEAREST]: Return
+ FE_TONEAREST.
+ * math/feholdexcpt.c (feholdexcept): Return 0.
+ * math/fesetenv.c (__fesetenv): Return 0.
+ * math/fesetround.c (fesetround) [FE_TONEAREST]: Return 0 for
+ argument FE_TONEAREST.
+ * math/feupdateenv.c (__feupdateenv): Return 0.
+ * math/fgetexcptflg.c (__fegetexceptflag): Return 0.
+
2013-06-18 Roland McGrath <roland@hack.frob.com>
* elf/rtld-Rules (rtld-compile-command.S): New variable.
15361, 15366, 15380, 15381, 15394, 15395, 15405, 15406, 15409, 15416,
15418, 15419, 15423, 15424, 15426, 15429, 15431, 15432, 15441, 15442,
15448, 15465, 15480, 15485, 15488, 15490, 15492, 15493, 15497, 15506,
- 15529, 15536, 15553, 15577, 15583, 15618, 15627, 15631.
+ 15529, 15536, 15553, 15577, 15583, 15618, 15627, 15631, 15654.
* CVE-2013-0242 Buffer overrun in regexp matcher has been fixed (Bugzilla
#15078).
int
fedisableexcept (int excepts)
{
- /* Signal failure. */
- return -1;
+ /* All exception traps are disabled. */
+ return 0;
}
stub_warning (fedisableexcept)
int
feenableexcept (int excepts)
{
- /* Signal failure. */
- return -1;
+ /* Signal failure if any exception traps are to be enabled. */
+ if (excepts != 0)
+ return -1;
+ else
+ return 0;
}
stub_warning (feenableexcept)
int
__fegetenv (fenv_t *envp)
{
- /* This always fails. */
- return 1;
+ /* Nothing to do. */
+ return 0;
}
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
strong_alias (__fegetenv, __old_fegetenv)
int
fegetexcept (void)
{
- /* Signal failure. */
- return -1;
+ /* All exception traps are disabled. */
+ return 0;
}
stub_warning (fegetexcept)
int
fegetround (void)
{
+#ifdef FE_TONEAREST
+ return FE_TONEAREST;
+#else
return 0;
+#endif
}
stub_warning (fegetround)
int
feholdexcept (fenv_t *envp)
{
- return 1; /* Signal failure. */
+ /* No exception traps to disable and no state to save. */
+ return 0;
}
libm_hidden_def (feholdexcept)
stub_warning (feholdexcept)
int
__fesetenv (const fenv_t *envp)
{
- /* This always fails. */
- return 1;
+ /* Nothing to do. */
+ return 0;
}
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
strong_alias (__fesetenv, __old_fesetenv)
int
fesetround (int round)
{
+#ifdef FE_TONEAREST
+ return (round == FE_TONEAREST) ? 0 : 1;
+#else
return 1; /* Signal we are unable to set the direction. */
+#endif
}
libm_hidden_def (fesetround)
stub_warning (fesetround)
int
__feupdateenv (const fenv_t *envp)
{
- /* This always fails. */
- return 1;
+ /* Nothing to do. */
+ return 0;
}
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
strong_alias (__feupdateenv, __old_feupdateenv)
int
__fegetexceptflag (fexcept_t *flagp, int excepts)
{
- /* This always fails. */
- return 1;
+ /* Nothing to do. */
+ return 0;
}
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
strong_alias (__fegetexceptflag, __old_fegetexceptflag)