This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Fix S/390 bits/fenv.h namespace use (bug 14801)
- From: "Joseph S. Myers" <joseph at codesourcery dot com>
- To: <libc-alpha at sourceware dot org>
- Cc: Andreas Krebbel <Andreas dot Krebbel at de dot ibm dot com>
- Date: Sat, 3 Nov 2012 02:12:44 +0000
- Subject: 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