This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Fix S/390 bits/fenv.h namespace use (bug 14801)


This *untested* patch fixes bug 14801, a bug I noticed while fixing
bug 3439: the S/390 definition of fenv_t uses field names that are in
the user's namespace, not permitted by ISO C.  The fields are renamed
with initial "__" to conform to ISO C requirements.

This patch needs S/390 review and testing.

2012-11-03  Joseph Myers  <joseph@codesourcery.com>

	[BZ #14801]
	* sysdeps/s390/fpu/bits/fenv.h (fenv_t): Use implementation
	namespace for names of struct fields.
	* sysdeps/s390/fpu/fegetenv.c (fegetenv): Update references to
	fenv_t fields.
	* sysdeps/s390/fpu/feholdexcpt.c (feholdexcept): Likewise.
	* sysdeps/s390/fpu/fesetenv.c (fesetenv): Likewise.

diff --git a/sysdeps/s390/fpu/bits/fenv.h b/sysdeps/s390/fpu/bits/fenv.h
index 6df7b17..251f3f5 100644
--- a/sysdeps/s390/fpu/bits/fenv.h
+++ b/sysdeps/s390/fpu/bits/fenv.h
@@ -67,8 +67,8 @@ typedef unsigned int fexcept_t; /* size of fpc */
    to the layout of the block written by the `fstenv'.  */
 typedef struct
 {
-  fexcept_t fpc;
-  void *ieee_instruction_pointer;
+  fexcept_t __fpc;
+  void *__ieee_instruction_pointer;
   /* failing instruction for ieee exceptions */
 } fenv_t;
 
diff --git a/sysdeps/s390/fpu/fegetenv.c b/sysdeps/s390/fpu/fegetenv.c
index 243f1f1..afbe2c7 100644
--- a/sysdeps/s390/fpu/fegetenv.c
+++ b/sysdeps/s390/fpu/fegetenv.c
@@ -1,5 +1,5 @@
 /* Store current floating-point environment.
-   Copyright (C) 2000, 2008 Free Software Foundation, Inc.
+   Copyright (C) 2000-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Denis Joseph Barrow (djbarrow@de.ibm.com).
 
@@ -23,7 +23,7 @@
 int
 fegetenv (fenv_t *envp)
 {
-  _FPU_GETCW (envp->fpc);
+  _FPU_GETCW (envp->__fpc);
 
   /* Success.  */
   return 0;
diff --git a/sysdeps/s390/fpu/feholdexcpt.c b/sysdeps/s390/fpu/feholdexcpt.c
index 76ca70f..5b97ade 100644
--- a/sysdeps/s390/fpu/feholdexcpt.c
+++ b/sysdeps/s390/fpu/feholdexcpt.c
@@ -1,5 +1,5 @@
 /* Store current floating-point environment and clear exceptions.
-   Copyright (C) 2000, 2005, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2000-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Denis Joseph Barrow (djbarrow@de.ibm.com).
 
@@ -27,7 +27,7 @@ int feholdexcept (fenv_t *envp)
   fegetenv (envp);
   /* Clear the current sticky bits as more than one exception
      may be generated.  */
-  fpc = envp->fpc & ~(FPC_FLAGS_MASK | FPC_DXC_MASK);
+  fpc = envp->__fpc & ~(FPC_FLAGS_MASK | FPC_DXC_MASK);
   /* Hold from generating fpu exceptions temporarily.  */
   _FPU_SETCW ((fpc & ~(FE_ALL_EXCEPT << FPC_EXCEPTION_MASK_SHIFT)));
   return 0;
diff --git a/sysdeps/s390/fpu/fesetenv.c b/sysdeps/s390/fpu/fesetenv.c
index 4fe8299..b534205 100644
--- a/sysdeps/s390/fpu/fesetenv.c
+++ b/sysdeps/s390/fpu/fesetenv.c
@@ -1,5 +1,5 @@
 /* Install given floating-point environment.
-   Copyright (C) 2000, 2008 Free Software Foundation, Inc.
+   Copyright (C) 2000-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Denis Joseph Barrow (djbarrow@de.ibm.com).
 
@@ -31,18 +31,18 @@ fesetenv (const fenv_t *envp)
 
   if (envp == FE_DFL_ENV)
     {
-      env.fpc = _FPU_DEFAULT;
-      env.ieee_instruction_pointer = 0;
+      env.__fpc = _FPU_DEFAULT;
+      env.__ieee_instruction_pointer = 0;
     }
   else if (envp == FE_NOMASK_ENV)
     {
-      env.fpc = FPC_EXCEPTION_MASK;
-      env.ieee_instruction_pointer = 0;
+      env.__fpc = FPC_EXCEPTION_MASK;
+      env.__ieee_instruction_pointer = 0;
     }
   else
     env = (*envp);
 
-  _FPU_SETCW (env.fpc);
+  _FPU_SETCW (env.__fpc);
 
   /* Success.  */
   return 0;

-- 
Joseph S. Myers
joseph@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]