This is the mail archive of the
libc-ports@sources.redhat.com
mailing list for the libc-ports project.
Fix ARM fenv.h fallback returns
- From: "Joseph S. Myers" <joseph at codesourcery dot com>
- To: libc-ports at sourceware dot org
- Date: Fri, 7 Jan 2011 01:44:46 +0000 (UTC)
- Subject: Fix ARM fenv.h fallback returns
C99(+TC1) explicit says that feclearexcept, feraiseexcept and
fesetexceptflag return zero when their "excepts" operand is zero, because
nothing needs to be done in that case. I've applied the patch to fix the
ARM EABI implementations to do so when VFP is unavailable - these
operations should always be considered supported and successful when
applied to the empty set of exceptions, even when no exceptions are
supported.
diff --git a/ChangeLog.arm b/ChangeLog.arm
index d02f269..8951801 100644
--- a/ChangeLog.arm
+++ b/ChangeLog.arm
@@ -1,3 +1,10 @@
+2011-01-07 Joseph Myers <joseph@codesourcery.com>
+
+ * sysdeps/arm/eabi/fclrexcpt.c (__feclearexcept): Return zero if
+ unsupported but nothing needs to be done.
+ * sysdeps/arm/eabi/fraiseexcpt.c (feraiseexcept): Likewise.
+ * sysdeps/arm/eabi/fsetexcptflg.c (__fesetexceptflag): Likewise.
+
2010-12-21 Joseph Myers <joseph@codesourcery.com>
* sysdeps/arm/stackinfo.h: Define DEFAULT_STACK_PERMS with PF_X.
diff --git a/sysdeps/arm/eabi/fclrexcpt.c b/sysdeps/arm/eabi/fclrexcpt.c
index 8287dc6..0bdd6a1 100644
--- a/sysdeps/arm/eabi/fclrexcpt.c
+++ b/sysdeps/arm/eabi/fclrexcpt.c
@@ -1,5 +1,5 @@
/* Clear given exceptions in current floating-point environment.
- Copyright (C) 1997,98,99,2000,01,05 Free Software Foundation, Inc.
+ Copyright (C) 1997,98,99,2000,01,05,11 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
@@ -48,8 +48,8 @@ __feclearexcept (int excepts)
return 0;
}
- /* Unsupported, so fail. */
- return 1;
+ /* Unsupported, so fail unless nothing needs to be done. */
+ return (excepts != 0);
}
#include <shlib-compat.h>
diff --git a/sysdeps/arm/eabi/fraiseexcpt.c b/sysdeps/arm/eabi/fraiseexcpt.c
index 53ccd9d..78441ec 100644
--- a/sysdeps/arm/eabi/fraiseexcpt.c
+++ b/sysdeps/arm/eabi/fraiseexcpt.c
@@ -1,5 +1,5 @@
/* Raise given exceptions.
- Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2011 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
@@ -103,8 +103,8 @@ feraiseexcept (int excepts)
return 0;
}
- /* Unsupported, so fail. */
- return 1;
+ /* Unsupported, so fail unless nothing needs to be done. */
+ return (excepts != 0);
}
libm_hidden_def (feraiseexcept)
diff --git a/sysdeps/arm/eabi/fsetexcptflg.c b/sysdeps/arm/eabi/fsetexcptflg.c
index 3dfeb2c..28966bb 100644
--- a/sysdeps/arm/eabi/fsetexcptflg.c
+++ b/sysdeps/arm/eabi/fsetexcptflg.c
@@ -1,5 +1,5 @@
/* Set floating-point environment exception handling.
- Copyright (C) 1997,98,99,2000,01,05,08 Free Software Foundation, Inc.
+ Copyright (C) 1997,98,99,2000,01,05,08,11 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
@@ -47,8 +47,8 @@ __fesetexceptflag (const fexcept_t *flagp, int excepts)
return 0;
}
- /* Unsupported, so fail. */
- return 1;
+ /* Unsupported, so fail unless nothing needs to be done. */
+ return (excepts != 0);
}
#include <shlib-compat.h>
--
Joseph S. Myers
joseph@codesourcery.com