public inbox for libc-ports@sourceware.org
 help / color / mirror / Atom feed
* Fix ARM fenv.h fallback returns
@ 2011-01-09 23:51 Joseph S. Myers
  0 siblings, 0 replies; only message in thread
From: Joseph S. Myers @ 2011-01-09 23:51 UTC (permalink / raw)
  To: libc-ports

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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2011-01-07  1:45 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-01-09 23:51 Fix ARM fenv.h fallback returns Joseph S. Myers

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).