aboutsummaryrefslogtreecommitdiff
path: root/math
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2013-06-20 19:10:44 +0000
committerJoseph Myers <joseph@codesourcery.com>2013-06-20 19:10:44 +0000
commitc91e0825251b4f57e8ce1d9d4673bee6e279e0cd (patch)
tree8ec4d95dc25e260084f23726cbb2cc202ed46e93 /math
parentbfcacbdec0ea80b12b23f89572c29b87624e76ec (diff)
downloadglibc-c91e0825251b4f57e8ce1d9d4673bee6e279e0cd.zip
glibc-c91e0825251b4f57e8ce1d9d4673bee6e279e0cd.tar.gz
glibc-c91e0825251b4f57e8ce1d9d4673bee6e279e0cd.tar.bz2
Avoid spurious failures from <fenv.h> fallback functions (bug 15654).
Diffstat (limited to 'math')
-rw-r--r--math/fedisblxcpt.c4
-rw-r--r--math/feenablxcpt.c7
-rw-r--r--math/fegetenv.c4
-rw-r--r--math/fegetexcept.c4
-rw-r--r--math/fegetround.c4
-rw-r--r--math/feholdexcpt.c3
-rw-r--r--math/fesetenv.c4
-rw-r--r--math/fesetround.c4
-rw-r--r--math/feupdateenv.c4
-rw-r--r--math/fgetexcptflg.c4
10 files changed, 27 insertions, 15 deletions
diff --git a/math/fedisblxcpt.c b/math/fedisblxcpt.c
index 9b6ef27..9b8374a 100644
--- a/math/fedisblxcpt.c
+++ b/math/fedisblxcpt.c
@@ -22,7 +22,7 @@
int
fedisableexcept (int excepts)
{
- /* Signal failure. */
- return -1;
+ /* All exception traps are disabled. */
+ return 0;
}
stub_warning (fedisableexcept)
diff --git a/math/feenablxcpt.c b/math/feenablxcpt.c
index d8620a0..e57d4e3 100644
--- a/math/feenablxcpt.c
+++ b/math/feenablxcpt.c
@@ -22,7 +22,10 @@
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)
diff --git a/math/fegetenv.c b/math/fegetenv.c
index 14bb801..29229dc 100644
--- a/math/fegetenv.c
+++ b/math/fegetenv.c
@@ -23,8 +23,8 @@
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)
diff --git a/math/fegetexcept.c b/math/fegetexcept.c
index 42aaf93..9075160 100644
--- a/math/fegetexcept.c
+++ b/math/fegetexcept.c
@@ -22,7 +22,7 @@
int
fegetexcept (void)
{
- /* Signal failure. */
- return -1;
+ /* All exception traps are disabled. */
+ return 0;
}
stub_warning (fegetexcept)
diff --git a/math/fegetround.c b/math/fegetround.c
index deb3c5d..24bbd16 100644
--- a/math/fegetround.c
+++ b/math/fegetround.c
@@ -22,6 +22,10 @@
int
fegetround (void)
{
+#ifdef FE_TONEAREST
+ return FE_TONEAREST;
+#else
return 0;
+#endif
}
stub_warning (fegetround)
diff --git a/math/feholdexcpt.c b/math/feholdexcpt.c
index b4e3260..c830afb 100644
--- a/math/feholdexcpt.c
+++ b/math/feholdexcpt.c
@@ -22,7 +22,8 @@
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)
diff --git a/math/fesetenv.c b/math/fesetenv.c
index 058700f..7361958 100644
--- a/math/fesetenv.c
+++ b/math/fesetenv.c
@@ -23,8 +23,8 @@
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)
diff --git a/math/fesetround.c b/math/fesetround.c
index 0e06217..1895a20 100644
--- a/math/fesetround.c
+++ b/math/fesetround.c
@@ -22,7 +22,11 @@
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)
diff --git a/math/feupdateenv.c b/math/feupdateenv.c
index e0350b3..5a39521 100644
--- a/math/feupdateenv.c
+++ b/math/feupdateenv.c
@@ -23,8 +23,8 @@
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)
diff --git a/math/fgetexcptflg.c b/math/fgetexcptflg.c
index 1512864..764be42 100644
--- a/math/fgetexcptflg.c
+++ b/math/fgetexcptflg.c
@@ -23,8 +23,8 @@
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)