From 63ae7b6309964400c6289d9030c7d336a33b304f Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sun, 31 Oct 1999 23:32:56 +0000 Subject: Update. * Versions.def (libm): Add GLIBC_2.1.3. ISO C99 TR1 changes various fe* functions to return an error value. * math/Versions [GLIBC_2.1.3]: Add feclearexcept, fegetexceptflag, feraiseexcept, fesetexceptflag, fegetenv, fesetenv, and feupdateenv. * sysdeps/alpha/fpu/fclrexcpt.c: Return value and add alias. * sysdeps/alpha/fpu/fegetenv.c: Likewise. * sysdeps/alpha/fpu/fesetenv.c: Likewise. * sysdeps/alpha/fpu/feupdateenv.c: Likewise. * sysdeps/alpha/fpu/fgetexcptflg.c: Likewise. * sysdeps/alpha/fpu/fraiseexcpt.c: Likewise. * sysdeps/alpha/fpu/fsetexcptflg.c: Likewise. * sysdeps/arm/fpu/fclrexcpt.c: Likewise. * sysdeps/arm/fpu/fegetenv.c: Likewise. * sysdeps/arm/fpu/fesetenv.c: Likewise. * sysdeps/arm/fpu/fraiseexcpt.c: Likewise. * sysdeps/arm/fpu/fsetexcptflg.c: Likewise. * sysdeps/generic/fclrexcpt.c: Likewise. * sysdeps/generic/fegetenv.c: Likewise. * sysdeps/generic/fesetenv.c: Likewise. * sysdeps/generic/feupdateenv.c: Likewise. * sysdeps/generic/fgetexcptflg.c: Likewise. * sysdeps/generic/fraiseexcpt.c: Likewise. * sysdeps/generic/fsetexcptflg.c: Likewise. * sysdeps/i386/fpu/fclrexcpt.c: Likewise. * sysdeps/i386/fpu/fegetenv.c: Likewise. * sysdeps/i386/fpu/fesetenv.c: Likewise. * sysdeps/i386/fpu/feupdateenv.c: Likewise. * sysdeps/i386/fpu/fgetexcptflg.c: Likewise. * sysdeps/i386/fpu/fraiseexcpt.c: Likewise. * sysdeps/i386/fpu/fsetexcptflg.c: Likewise. * sysdeps/m68k/fpu/fclrexcpt.c: Likewise. * sysdeps/m68k/fpu/fegetenv.c: Likewise. * sysdeps/m68k/fpu/fesetenv.c: Likewise. * sysdeps/m68k/fpu/feupdateenv.c: Likewise. * sysdeps/m68k/fpu/fgetexcptflg.c: Likewise. * sysdeps/m68k/fpu/fraiseexcpt.c: Likewise. * sysdeps/m68k/fpu/fsetexcptflg.c: Likewise. * sysdeps/mips/fclrexcpt.c: Likewise. * sysdeps/mips/fegetenv.c: Likewise. * sysdeps/mips/fesetenv.c: Likewise. * sysdeps/mips/feupdateenv.c: Likewise. * sysdeps/mips/fgetexcptflg.c: Likewise. * sysdeps/powerpc/fclrexcpt.c: Likewise. * sysdeps/powerpc/fegetenv.c: Likewise. * sysdeps/powerpc/fesetenv.c: Likewise. * sysdeps/powerpc/feupdateenv.c: Likewise. * sysdeps/powerpc/fgetexcptflg.c: Likewise. * sysdeps/powerpc/fraiseexcpt.c: Likewise. * sysdeps/powerpc/fsetexcptflg.c: Likewise. * sysdeps/sparc/fpu/fclrexcpt.c: Likewise. * sysdeps/sparc/fpu/fegetenv.c: Likewise. * sysdeps/sparc/fpu/fesetenv.c: Likewise. * sysdeps/sparc/fpu/feupdateenv.c: Likewise. * sysdeps/sparc/fpu/fgetexcptflg.c: Likewise. * sysdeps/sparc/fpu/fraiseexcpt.c: Likewise. * sysdeps/sparc/fpu/fsetexcptflg.c: Likewise. * math/fenv.h: Adjust prototypes.: Likewise. * manual/arith.texi: Adjust documentation for these changes. * manual/arith.texi: Document feraiseexcept. * sysdeps/powerpc/fegetenv.c: Moved to... * sysdeps/powerpc/fpu/fegetenv.c: ...here. * sysdeps/powerpc/fegetround.c: Moved to... * sysdeps/powerpc/fpu/fegetround.c: ...here. * sysdeps/powerpc/feholdexcpt.c: Moved to... * sysdeps/powerpc/fpu/feholdexcpt.c: ...here. * sysdeps/powerpc/fesetenv.c: Moved to... * sysdeps/powerpc/fpu/fesetenv.c: ...here. * sysdeps/powerpc/fenv_libc.h: Moved to... * sysdeps/powerpc/fpu/fenv_libc.h: ...here. * sysdeps/powerpc/feupdateenv.c: Moved to... * sysdeps/powerpc/fpu/feupdateenv.c: ...here. * sysdeps/powerpc/fgetexcptflg.c: Moved to... * sysdeps/powerpc/fpu/fgetexcptflg.c: ...here. * sysdeps/powerpc/fraiseexcpt.c: Moved to... * sysdeps/powerpc/fpu/fraiseexcpt.c: ...here. * sysdeps/powerpc/fsetexcptflg.c: Moved to... * sysdeps/powerpc/fpu/fsetexcptflg.c: ...here. * sysdeps/powerpc/ftestexcept.c: Moved to... * sysdeps/powerpc/fpu/ftestexcept.c: ...here. * sysdeps/powerpc/fesetround.c: Moved to... * sysdeps/powerpc/fpu/fesetround.c: ...here * sysdeps/powerpc/fenv_const.c: Moved to... * sysdeps/powerpc/fpu/fenv_const.c: ...here. 1999-10-29 Jakub Jelinek * stdlib/longlong.h: Avoid UDIV_TIME redefinition. * sysdeps/sparc/sparc32/dl-machine.h: Fix loading of SPARC v8plus libraries from statically linked programs. * sysdeps/unix/sysv/linux/sparc/bits/sigaction.h: POSIX 199309 fix for sigaction on SPARC. Patches by David S. Miller . * sysdeps/unix/sysv/linux/sparc/sys/ucontext.h: Declare gregset_t and other required structures and defines for SPARC 64bit ABI as well, not only 32bit ABI. 1999-10-31 Andreas Jaeger * sysdeps/sparc/sparc64/fpu/bits/huge_val.h: Replace __USE_ISOC9X by __USE_ISOC99 and update comments. * math/complex.h: Update comments for ISO C99. * math/fenv.h: Likewise. * math/test-fenv.c: Likewise. * math/tgmath.h: Likewise. * libio/stdio.h: Likewise. * posix/sys/types.h: Likewise. * sysdeps/generic/inttypes.h: Likewise. * sysdeps/generic/stdint.h: Likewise. 1999-10-31 Ulrich Drepper --- ChangeLog | 116 +++++++++++++++++++++++++ libio/stdio.h | 2 +- manual/.cvsignore | 4 +- manual/arith.texi | 45 ++++++++-- manual/creature.texi | 2 +- math/Versions | 5 ++ math/complex.h | 10 +-- math/fenv.h | 16 ++-- math/test-fenv.c | 2 +- math/tgmath.h | 2 +- posix/sys/types.h | 2 +- stdlib/longlong.h | 2 + sysdeps/alpha/fpu/fclrexcpt.c | 20 +++-- sysdeps/alpha/fpu/fegetenv.c | 19 ++-- sysdeps/alpha/fpu/fesetenv.c | 24 +++-- sysdeps/alpha/fpu/feupdateenv.c | 20 +++-- sysdeps/alpha/fpu/fgetexcptflg.c | 14 ++- sysdeps/alpha/fpu/fraiseexcpt.c | 47 +++++----- sysdeps/alpha/fpu/fsetexcptflg.c | 18 ++-- sysdeps/arm/fpu/fclrexcpt.c | 16 ++-- sysdeps/arm/fpu/fegetenv.c | 12 ++- sysdeps/arm/fpu/fesetenv.c | 16 ++-- sysdeps/arm/fpu/fraiseexcpt.c | 16 ++-- sysdeps/arm/fpu/fsetexcptflg.c | 16 ++-- sysdeps/generic/fclrexcpt.c | 12 ++- sysdeps/generic/fegetenv.c | 10 ++- sysdeps/generic/fesetenv.c | 12 ++- sysdeps/generic/feupdateenv.c | 12 ++- sysdeps/generic/fgetexcptflg.c | 12 ++- sysdeps/generic/fraiseexcpt.c | 12 ++- sysdeps/generic/fsetexcptflg.c | 12 ++- sysdeps/generic/inttypes.h | 4 +- sysdeps/generic/stdint.h | 6 +- sysdeps/i386/fpu/fclrexcpt.c | 10 ++- sysdeps/i386/fpu/fegetenv.c | 12 ++- sysdeps/i386/fpu/fesetenv.c | 10 ++- sysdeps/i386/fpu/feupdateenv.c | 12 ++- sysdeps/i386/fpu/fgetexcptflg.c | 12 ++- sysdeps/i386/fpu/fraiseexcpt.c | 10 ++- sysdeps/i386/fpu/fsetexcptflg.c | 10 ++- sysdeps/m68k/fpu/fclrexcpt.c | 12 ++- sysdeps/m68k/fpu/fegetenv.c | 12 ++- sysdeps/m68k/fpu/fesetenv.c | 10 ++- sysdeps/m68k/fpu/feupdateenv.c | 12 ++- sysdeps/m68k/fpu/fgetexcptflg.c | 12 ++- sysdeps/m68k/fpu/fraiseexcpt.c | 12 ++- sysdeps/m68k/fpu/fsetexcptflg.c | 12 ++- sysdeps/mips/fclrexcpt.c | 14 ++- sysdeps/mips/fegetenv.c | 12 ++- sysdeps/mips/fesetenv.c | 10 ++- sysdeps/mips/feupdateenv.c | 12 ++- sysdeps/mips/fgetexcptflg.c | 12 ++- sysdeps/powerpc/fclrexcpt.c | 16 ++-- sysdeps/powerpc/fegetenv.c | 26 ------ sysdeps/powerpc/fegetround.c | 29 ------- sysdeps/powerpc/feholdexcpt.c | 38 -------- sysdeps/powerpc/fenv_const.c | 33 ------- sysdeps/powerpc/fenv_libc.h | 106 ---------------------- sysdeps/powerpc/fesetenv.c | 26 ------ sysdeps/powerpc/fesetround.c | 41 --------- sysdeps/powerpc/feupdateenv.c | 37 -------- sysdeps/powerpc/fgetexcptflg.c | 32 ------- sysdeps/powerpc/fpu/feholdexcpt.c | 38 ++++++++ sysdeps/powerpc/fpu/fenv_const.c | 33 +++++++ sysdeps/powerpc/fpu/fenv_libc.h | 106 ++++++++++++++++++++++ sysdeps/powerpc/fpu/fgetexcptflg.c | 38 ++++++++ sysdeps/powerpc/fpu/fraiseexcpt.c | 59 +++++++++++++ sysdeps/powerpc/fpu/fsetexcptflg.c | 54 ++++++++++++ sysdeps/powerpc/fraiseexcpt.c | 53 ----------- sysdeps/powerpc/fsetexcptflg.c | 48 ---------- sysdeps/powerpc/ftestexcept.c | 33 ------- sysdeps/sparc/fpu/fclrexcpt.c | 12 ++- sysdeps/sparc/fpu/fegetenv.c | 12 ++- sysdeps/sparc/fpu/fesetenv.c | 12 ++- sysdeps/sparc/fpu/feupdateenv.c | 12 ++- sysdeps/sparc/fpu/fgetexcptflg.c | 12 ++- sysdeps/sparc/fpu/fraiseexcpt.c | 34 ++++---- sysdeps/sparc/fpu/fsetexcptflg.c | 12 ++- sysdeps/sparc/sparc32/dl-machine.h | 4 +- sysdeps/sparc/sparc64/fpu/bits/huge_val.h | 6 +- sysdeps/unix/sysv/linux/sparc/bits/sigaction.h | 17 +++- sysdeps/unix/sysv/linux/sparc/sys/ucontext.h | 37 +++++++- 82 files changed, 1030 insertions(+), 742 deletions(-) delete mode 100644 sysdeps/powerpc/fegetenv.c delete mode 100644 sysdeps/powerpc/fegetround.c delete mode 100644 sysdeps/powerpc/feholdexcpt.c delete mode 100644 sysdeps/powerpc/fenv_const.c delete mode 100644 sysdeps/powerpc/fenv_libc.h delete mode 100644 sysdeps/powerpc/fesetenv.c delete mode 100644 sysdeps/powerpc/fesetround.c delete mode 100644 sysdeps/powerpc/feupdateenv.c delete mode 100644 sysdeps/powerpc/fgetexcptflg.c create mode 100644 sysdeps/powerpc/fpu/feholdexcpt.c create mode 100644 sysdeps/powerpc/fpu/fenv_const.c create mode 100644 sysdeps/powerpc/fpu/fenv_libc.h create mode 100644 sysdeps/powerpc/fpu/fgetexcptflg.c create mode 100644 sysdeps/powerpc/fpu/fraiseexcpt.c create mode 100644 sysdeps/powerpc/fpu/fsetexcptflg.c delete mode 100644 sysdeps/powerpc/fraiseexcpt.c delete mode 100644 sysdeps/powerpc/fsetexcptflg.c delete mode 100644 sysdeps/powerpc/ftestexcept.c diff --git a/ChangeLog b/ChangeLog index 33f104cb20..bcd626f2dd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,119 @@ +1999-10-31 Ulrich Drepper + + * Versions.def (libm): Add GLIBC_2.1.3. + + ISO C99 TR1 changes various fe* functions to return an error value. + * math/Versions [GLIBC_2.1.3]: Add feclearexcept, fegetexceptflag, + feraiseexcept, fesetexceptflag, fegetenv, fesetenv, and feupdateenv. + * sysdeps/alpha/fpu/fclrexcpt.c: Return value and add alias. + * sysdeps/alpha/fpu/fegetenv.c: Likewise. + * sysdeps/alpha/fpu/fesetenv.c: Likewise. + * sysdeps/alpha/fpu/feupdateenv.c: Likewise. + * sysdeps/alpha/fpu/fgetexcptflg.c: Likewise. + * sysdeps/alpha/fpu/fraiseexcpt.c: Likewise. + * sysdeps/alpha/fpu/fsetexcptflg.c: Likewise. + * sysdeps/arm/fpu/fclrexcpt.c: Likewise. + * sysdeps/arm/fpu/fegetenv.c: Likewise. + * sysdeps/arm/fpu/fesetenv.c: Likewise. + * sysdeps/arm/fpu/fraiseexcpt.c: Likewise. + * sysdeps/arm/fpu/fsetexcptflg.c: Likewise. + * sysdeps/generic/fclrexcpt.c: Likewise. + * sysdeps/generic/fegetenv.c: Likewise. + * sysdeps/generic/fesetenv.c: Likewise. + * sysdeps/generic/feupdateenv.c: Likewise. + * sysdeps/generic/fgetexcptflg.c: Likewise. + * sysdeps/generic/fraiseexcpt.c: Likewise. + * sysdeps/generic/fsetexcptflg.c: Likewise. + * sysdeps/i386/fpu/fclrexcpt.c: Likewise. + * sysdeps/i386/fpu/fegetenv.c: Likewise. + * sysdeps/i386/fpu/fesetenv.c: Likewise. + * sysdeps/i386/fpu/feupdateenv.c: Likewise. + * sysdeps/i386/fpu/fgetexcptflg.c: Likewise. + * sysdeps/i386/fpu/fraiseexcpt.c: Likewise. + * sysdeps/i386/fpu/fsetexcptflg.c: Likewise. + * sysdeps/m68k/fpu/fclrexcpt.c: Likewise. + * sysdeps/m68k/fpu/fegetenv.c: Likewise. + * sysdeps/m68k/fpu/fesetenv.c: Likewise. + * sysdeps/m68k/fpu/feupdateenv.c: Likewise. + * sysdeps/m68k/fpu/fgetexcptflg.c: Likewise. + * sysdeps/m68k/fpu/fraiseexcpt.c: Likewise. + * sysdeps/m68k/fpu/fsetexcptflg.c: Likewise. + * sysdeps/mips/fclrexcpt.c: Likewise. + * sysdeps/mips/fegetenv.c: Likewise. + * sysdeps/mips/fesetenv.c: Likewise. + * sysdeps/mips/feupdateenv.c: Likewise. + * sysdeps/mips/fgetexcptflg.c: Likewise. + * sysdeps/powerpc/fclrexcpt.c: Likewise. + * sysdeps/powerpc/fegetenv.c: Likewise. + * sysdeps/powerpc/fesetenv.c: Likewise. + * sysdeps/powerpc/feupdateenv.c: Likewise. + * sysdeps/powerpc/fgetexcptflg.c: Likewise. + * sysdeps/powerpc/fraiseexcpt.c: Likewise. + * sysdeps/powerpc/fsetexcptflg.c: Likewise. + * sysdeps/sparc/fpu/fclrexcpt.c: Likewise. + * sysdeps/sparc/fpu/fegetenv.c: Likewise. + * sysdeps/sparc/fpu/fesetenv.c: Likewise. + * sysdeps/sparc/fpu/feupdateenv.c: Likewise. + * sysdeps/sparc/fpu/fgetexcptflg.c: Likewise. + * sysdeps/sparc/fpu/fraiseexcpt.c: Likewise. + * sysdeps/sparc/fpu/fsetexcptflg.c: Likewise. + * math/fenv.h: Adjust prototypes.: Likewise. + * manual/arith.texi: Adjust documentation for these changes. + + * manual/arith.texi: Document feraiseexcept. + + * sysdeps/powerpc/fegetenv.c: Moved to... + * sysdeps/powerpc/fpu/fegetenv.c: ...here. + * sysdeps/powerpc/fegetround.c: Moved to... + * sysdeps/powerpc/fpu/fegetround.c: ...here. + * sysdeps/powerpc/feholdexcpt.c: Moved to... + * sysdeps/powerpc/fpu/feholdexcpt.c: ...here. + * sysdeps/powerpc/fesetenv.c: Moved to... + * sysdeps/powerpc/fpu/fesetenv.c: ...here. + * sysdeps/powerpc/fenv_libc.h: Moved to... + * sysdeps/powerpc/fpu/fenv_libc.h: ...here. + * sysdeps/powerpc/feupdateenv.c: Moved to... + * sysdeps/powerpc/fpu/feupdateenv.c: ...here. + * sysdeps/powerpc/fgetexcptflg.c: Moved to... + * sysdeps/powerpc/fpu/fgetexcptflg.c: ...here. + * sysdeps/powerpc/fraiseexcpt.c: Moved to... + * sysdeps/powerpc/fpu/fraiseexcpt.c: ...here. + * sysdeps/powerpc/fsetexcptflg.c: Moved to... + * sysdeps/powerpc/fpu/fsetexcptflg.c: ...here. + * sysdeps/powerpc/ftestexcept.c: Moved to... + * sysdeps/powerpc/fpu/ftestexcept.c: ...here. + * sysdeps/powerpc/fesetround.c: Moved to... + * sysdeps/powerpc/fpu/fesetround.c: ...here + * sysdeps/powerpc/fenv_const.c: Moved to... + * sysdeps/powerpc/fpu/fenv_const.c: ...here. + +1999-10-29 Jakub Jelinek + + * stdlib/longlong.h: Avoid UDIV_TIME redefinition. + * sysdeps/sparc/sparc32/dl-machine.h: Fix loading of SPARC v8plus + libraries from statically linked programs. + * sysdeps/unix/sysv/linux/sparc/bits/sigaction.h: POSIX 199309 + fix for sigaction on SPARC. + Patches by David S. Miller . + + * sysdeps/unix/sysv/linux/sparc/sys/ucontext.h: Declare + gregset_t and other required structures and defines for SPARC 64bit + ABI as well, not only 32bit ABI. + +1999-10-31 Andreas Jaeger + + * sysdeps/sparc/sparc64/fpu/bits/huge_val.h: Replace __USE_ISOC9X + by __USE_ISOC99 and update comments. + + * math/complex.h: Update comments for ISO C99. + * math/fenv.h: Likewise. + * math/test-fenv.c: Likewise. + * math/tgmath.h: Likewise. + * libio/stdio.h: Likewise. + * posix/sys/types.h: Likewise. + * sysdeps/generic/inttypes.h: Likewise. + * sysdeps/generic/stdint.h: Likewise. + 1999-10-31 Ulrich Drepper * manual/creature.texi (Feature Test Macros): Mention _ISOC99_SOURCE. diff --git a/libio/stdio.h b/libio/stdio.h index 91004e5c7a..e78c33ba8b 100644 --- a/libio/stdio.h +++ b/libio/stdio.h @@ -114,7 +114,7 @@ typedef _G_fpos64_t fpos64_t; extern FILE *stdin; /* Standard input stream. */ extern FILE *stdout; /* Standard output stream. */ extern FILE *stderr; /* Standard error output stream. */ -/* C89/C9x say they're macros. Make them happy. */ +/* C89/C99 say they're macros. Make them happy. */ #define stdin stdin #define stdout stdout #define stderr stderr diff --git a/manual/.cvsignore b/manual/.cvsignore index 1d23d99cd2..268ddb653d 100644 --- a/manual/.cvsignore +++ b/manual/.cvsignore @@ -1,5 +1,5 @@ *.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps -*.gz *.Z *.tar *.tgz +*.gz *.Z *.tar *.tgz *.bz2 =* TODO COPYING* AUTHORS copyr-* copying.* glibc-* @@ -10,3 +10,5 @@ glibc-* texis top-menu.texi chapters.texi summary.texi stamp-* distinfo dir-add.texinfo + +libm-err.texi diff --git a/manual/arith.texi b/manual/arith.texi index 0dae46c99b..51d67a99d1 100644 --- a/manual/arith.texi +++ b/manual/arith.texi @@ -476,9 +476,27 @@ and save and restore the set of exceptions flagged. @comment fenv.h @comment ISO -@deftypefun void feclearexcept (int @var{excepts}) +@deftypefun int feclearexcept (int @var{excepts}) This function clears all of the supported exception flags indicated by @var{excepts}. + +The function returns zero in case the operation was successful, a +non-zero value otherwise. +@end deftypefun + +@comment fenv.h +@comment ISO +@deftypefun int feraiseexcept (int @var{excepts}) +This function raises the supported exceptions indicated by +@var{excepts}. If more than one exception bit in @var{excepts} is set +the order in which the exceptions are raised is undefined except that +overflow (@code{FE_OVERFLOW}) or underflow (@code{FE_UNDERFLOW}) are +raised before inexact (@code{FE_INEXACT}). Whether for overflow or +underflow the inexact exception is also raised is also implementation +dependent. + +The function returns zero in case the operation was successful, a +non-zero value otherwise. @end deftypefun @comment fenv.h @@ -519,19 +537,25 @@ following functions: @comment fenv.h @comment ISO -@deftypefun void fegetexceptflag (fexcept_t *@var{flagp}, int @var{excepts}) +@deftypefun int fegetexceptflag (fexcept_t *@var{flagp}, int @var{excepts}) This function stores in the variable pointed to by @var{flagp} an implementation-defined value representing the current setting of the exception flags indicated by @var{excepts}. + +The function returns zero in case the operation was successful, a +non-zero value otherwise. @end deftypefun @comment fenv.h @comment ISO -@deftypefun void fesetexceptflag (const fexcept_t *@var{flagp}, int +@deftypefun int fesetexceptflag (const fexcept_t *@var{flagp}, int @var{excepts}) This function restores the flags for the exceptions indicated by @var{excepts} to the values stored in the variable pointed to by @var{flagp}. + +The function returns zero in case the operation was successful, a +non-zero value otherwise. @end deftypefun Note that the value stored in @code{fexcept_t} bears no resemblance to @@ -736,9 +760,12 @@ To save the state of the FPU, use one of these functions: @comment fenv.h @comment ISO -@deftypefun void fegetenv (fenv_t *@var{envp}) +@deftypefun int fegetenv (fenv_t *@var{envp}) Store the floating-point environment in the variable pointed to by @var{envp}. + +The function returns zero in case the operation was successful, a +non-zero value otherwise. @end deftypefun @comment fenv.h @@ -780,19 +807,25 @@ functions: @comment fenv.h @comment ISO -@deftypefun void fesetenv (const fenv_t *@var{envp}) +@deftypefun int fesetenv (const fenv_t *@var{envp}) Set the floating-point environment to that described by @var{envp}. + +The function returns zero in case the operation was successful, a +non-zero value otherwise. @end deftypefun @comment fenv.h @comment ISO -@deftypefun void feupdateenv (const fenv_t *@var{envp}) +@deftypefun int feupdateenv (const fenv_t *@var{envp}) Like @code{fesetenv}, this function sets the floating-point environment to that described by @var{envp}. However, if any exceptions were flagged in the status word before @code{feupdateenv} was called, they remain flagged after the call. In other words, after @code{feupdateenv} is called, the status word is the bitwise OR of the previous status word and the one saved in @var{envp}. + +The function returns zero in case the operation was successful, a +non-zero value otherwise. @end deftypefun @node Arithmetic Functions diff --git a/manual/creature.texi b/manual/creature.texi index 11061f9321..88478a2ef2 100644 --- a/manual/creature.texi +++ b/manual/creature.texi @@ -196,7 +196,7 @@ This macro was introduced as part of the Large File Support extension @comment (none) @comment GNU @defvr Macro _ISOC99_SOURCE -Until the revides @w{ISO C} standard is widely adopted the new features +Until the revised @w{ISO C} standard is widely adopted the new features are not automatically enabled. The GNU libc nevertheless has a complete implementation of the new standard and to enable the new features the macro @code{_ISOC99_SOURCE} should be defined. diff --git a/math/Versions b/math/Versions index 8bed0264f7..2be65529c9 100644 --- a/math/Versions +++ b/math/Versions @@ -153,4 +153,9 @@ libm { __fpclassify; __fpclassifyf; __fpclassifyl; __signbit; __signbitf; __signbitl; } + GLIBC_2.1.3 { + # fp environment functions changes from ISO C99 TR1 + feclearexcept; fegetenv; fegetexceptflag; feraiseexcept; + fesetenv; fesetexceptflag; feupdateenv; + } } diff --git a/math/complex.h b/math/complex.h index 26cc5e24d7..72b498e1fa 100644 --- a/math/complex.h +++ b/math/complex.h @@ -17,7 +17,7 @@ Boston, MA 02111-1307, USA. */ /* - * ISO C 9X: 7.8 Complex arithmetic + * ISO C99: 7.8 Complex arithmetic */ #ifndef _COMPLEX_H @@ -25,13 +25,13 @@ #include -/* Get general and ISO C 9X specific information. */ +/* Get general and ISO C99 specific information. */ #include __BEGIN_DECLS -/* We might need to add support for more compilers here. But once ISO - C 9X is out hopefully all maintained compilers will provide the data +/* We might need to add support for more compilers here. But since ISO + C99 is out hopefully all maintained compilers will soon provide the data types `float complex' and `double complex'. */ #if __GNUC_PREREQ (2, 7) # define _Complex __complex__ @@ -82,7 +82,7 @@ __BEGIN_DECLS #undef __MATH_PRECNAME /* And the long double versions. It is non-critical to define them - here unconditionally since `long double' is required in ISO C 9X. */ + here unconditionally since `long double' is required in ISO C99. */ #if __STDC__ - 0 || __GNUC__ - 0 && !defined __NO_LONG_DOUBLE_MATH # ifndef _Mlong_double_ # define _Mlong_double_ long double diff --git a/math/fenv.h b/math/fenv.h index 8e83246a17..35428370b4 100644 --- a/math/fenv.h +++ b/math/fenv.h @@ -17,7 +17,7 @@ Boston, MA 02111-1307, USA. */ /* - * ISO C 9X 7.6: Floating-point environment + * ISO C99 7.6: Floating-point environment */ #ifndef _FENV_H @@ -62,18 +62,18 @@ __BEGIN_DECLS /* Floating-point exception handling. */ /* Clear the supported exceptions represented by EXCEPTS. */ -extern void feclearexcept (int __excepts) __THROW; +extern int feclearexcept (int __excepts) __THROW; /* Store implementation-defined representation of the exception flags indicated by EXCEPTS in the object pointed to by FLAGP. */ -extern void fegetexceptflag (fexcept_t *__flagp, int __excepts) __THROW; +extern int fegetexceptflag (fexcept_t *__flagp, int __excepts) __THROW; /* Raise the supported exceptions represented by EXCEPTS. */ -extern void feraiseexcept (int __excepts) __THROW; +extern int feraiseexcept (int __excepts) __THROW; /* Set complete status for exceptions indicated by EXCEPTS according to the representation in the object pointed to by FLAGP. */ -extern void fesetexceptflag (__const fexcept_t *__flagp, int __excepts) __THROW; +extern int fesetexceptflag (__const fexcept_t *__flagp, int __excepts) __THROW; /* Determine which of subset of the exceptions specified by EXCEPTS are currently set. */ @@ -93,7 +93,7 @@ extern int fesetround (int __rounding_direction) __THROW; /* Store the current floating-point environment in the object pointed to by ENVP. */ -extern void fegetenv (fenv_t *__envp) __THROW; +extern int fegetenv (fenv_t *__envp) __THROW; /* Save the current environment in the object pointed to by ENVP, clear exception flags and install a non-stop mode (if available) for all @@ -102,12 +102,12 @@ extern int feholdexcept (fenv_t *__envp) __THROW; /* Establish the floating-point environment represented by the object pointed to by ENVP. */ -extern void fesetenv (__const fenv_t *__envp) __THROW; +extern int fesetenv (__const fenv_t *__envp) __THROW; /* Save current exceptions in temporary storage, install environment represented by object pointed to by ENVP and raise exceptions according to saved exceptions. */ -extern void feupdateenv (__const fenv_t *__envp) __THROW; +extern int feupdateenv (__const fenv_t *__envp) __THROW; __END_DECLS diff --git a/math/test-fenv.c b/math/test-fenv.c index 3292f81dbb..937f535c68 100644 --- a/math/test-fenv.c +++ b/math/test-fenv.c @@ -373,7 +373,7 @@ feenv_tests (void) } -/* IEC 559 and ISO C 9X define a default startup environment */ +/* IEC 559 and ISO C99 define a default startup environment */ static void initial_tests (void) { diff --git a/math/tgmath.h b/math/tgmath.h index 449b498ab7..7bf22b94de 100644 --- a/math/tgmath.h +++ b/math/tgmath.h @@ -17,7 +17,7 @@ Boston, MA 02111-1307, USA. */ /* - * ISO C 9X Standard: 7.9 Type-generic math + * ISO C99 Standard: 7.22 Type-generic math */ #ifndef _TGMATH_H diff --git a/posix/sys/types.h b/posix/sys/types.h index a01cd25507..28f3a74c01 100644 --- a/posix/sys/types.h +++ b/posix/sys/types.h @@ -144,7 +144,7 @@ typedef unsigned int uint; #if !__GNUC_PREREQ (2, 7) -/* These types are defined by the ISO C 9x header . */ +/* These types are defined by the ISO C99 header . */ # ifndef __int8_t_defined # define __int8_t_defined typedef char int8_t; diff --git a/stdlib/longlong.h b/stdlib/longlong.h index 397188eb4d..d45e824322 100644 --- a/stdlib/longlong.h +++ b/stdlib/longlong.h @@ -1179,7 +1179,9 @@ extern USItype __udiv_qrnnd (); #define UDIV_TIME (3+7*32) /* 7 instructions/iteration. 32 iterations. */ #else extern USItype __udiv_qrnnd __P ((USItype *, USItype, USItype, USItype)); +#ifndef UDIV_TIME #define UDIV_TIME 140 +#endif /* UDIV_TIME */ #endif /* udiv_qrnnd */ #endif /* __sparc__ */ diff --git a/sysdeps/alpha/fpu/fclrexcpt.c b/sysdeps/alpha/fpu/fclrexcpt.c index 7aa79af100..2e76995f4e 100644 --- a/sysdeps/alpha/fpu/fclrexcpt.c +++ b/sysdeps/alpha/fpu/fclrexcpt.c @@ -1,5 +1,5 @@ /* Clear given exceptions in current floating-point environment. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Richard Henderson , 1997. @@ -20,17 +20,23 @@ #include -void -feclearexcept (int excepts) +int +__feclearexcept (int excepts) { - unsigned long swcr; + unsigned long int swcr; /* Get the current state. */ - swcr = __ieee_get_fp_control(); + swcr = __ieee_get_fp_control (); /* Clear the relevant bits. */ - swcr &= ~((unsigned long)excepts & FE_ALL_EXCEPT); + swcr &= ~((unsigned long int) excepts & FE_ALL_EXCEPT); /* Put the new state in effect. */ - __ieee_set_fp_control(swcr); + __ieee_set_fp_control (swcr); + + /* Success. */ + return 0; } +strong_alias (__feclearexcept, __old_feclearexcept) +symbol_version (__old_feclearexcept, feclearexcept, GLIBC_2.1); +default_symbol_version (__feclearexcept, feclearexcept, GLIBC_2.1.3); diff --git a/sysdeps/alpha/fpu/fegetenv.c b/sysdeps/alpha/fpu/fegetenv.c index c8b705d230..63dc7ffaaf 100644 --- a/sysdeps/alpha/fpu/fegetenv.c +++ b/sysdeps/alpha/fpu/fegetenv.c @@ -1,5 +1,5 @@ /* Store current floating-point environment. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Richard Henderson , 1997 @@ -20,18 +20,25 @@ #include -void -fegetenv (fenv_t *envp) +int +__fegetenv (fenv_t *envp) { - unsigned long fpcr, swcr; + unsigned long int fpcr; + unsigned long int swcr; /* Get status from software and hardware. Note that we don't need an excb because the callsys is an implied trap barrier. */ - swcr = __ieee_get_fp_control(); - __asm__ __volatile__("mf_fpcr %0" : "=f"(fpcr)); + swcr = __ieee_get_fp_control (); + __asm__ __volatile__ ("mf_fpcr %0" : "=f" (fpcr)); /* Merge the two bits of information. The magic number at the end is the exception enable mask. */ *envp = (fpcr & (3UL << 58)) | (swcr & (FE_ALL_EXCEPT | 0x3e)); + + /* Success. */ + return 0; } +strong_alias (__fegetenv, __old_fegetenv) +symbol_version (__old_fegetenv, fegetenv, GLIBC_2.1); +default_symbol_version (__fegetenv, fegetenv, GLIBC_2.1.3); diff --git a/sysdeps/alpha/fpu/fesetenv.c b/sysdeps/alpha/fpu/fesetenv.c index 3692967a5b..9a38778b0c 100644 --- a/sysdeps/alpha/fpu/fesetenv.c +++ b/sysdeps/alpha/fpu/fesetenv.c @@ -1,5 +1,5 @@ /* Install given floating-point environment. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Richard Henderson , 1997 @@ -20,26 +20,32 @@ #include -void -fesetenv (const fenv_t *envp) +int +__fesetenv (const fenv_t *envp) { - unsigned long fpcr; + unsigned long int fpcr; fenv_t env; /* Magic encoding of default values: high bit set (never possible for a user-space address) is not indirect. And we don't even have to get rid of it since we mask things around just below. */ - if ((long)envp >= 0) + if ((long int) envp >= 0) env = *envp; else - env = (unsigned long)envp; + env = (unsigned long int) envp; /* Reset the rounding mode with the hardware fpcr. Note that the following system call is an implied trap barrier for our modification. */ - __asm__ __volatile__("excb; mf_fpcr %0" : "=f"(fpcr)); + __asm__ __volatile__ ("excb; mf_fpcr %0" : "=f" (fpcr)); fpcr = (fpcr & ~(3UL << 58)) | (env & (3UL << 58)); - __asm__ __volatile__("mt_fpcr %0" : : "f"(fpcr)); + __asm__ __volatile__ ("mt_fpcr %0" : : "f" (fpcr)); /* Reset the exception status and mask with the kernel's FP code. */ - __ieee_set_fp_control(env & (FE_ALL_EXCEPT | 0x3e)); + __ieee_set_fp_control (env & (FE_ALL_EXCEPT | 0x3e)); + + /* Success. */ + return 0; } +strong_alias (__fesetenv, __old_fesetenv) +symbol_version (__old_fesetenv, fesetenv, GLIBC_2.1); +default_symbol_version (__fesetenv, fesetenv, GLIBC_2.1.3); diff --git a/sysdeps/alpha/fpu/feupdateenv.c b/sysdeps/alpha/fpu/feupdateenv.c index 816575a134..bd6a979aa7 100644 --- a/sysdeps/alpha/fpu/feupdateenv.c +++ b/sysdeps/alpha/fpu/feupdateenv.c @@ -1,5 +1,5 @@ /* Install given floating-point environment and raise exceptions. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Richard Henderson , 1997. @@ -20,19 +20,25 @@ #include -void -feupdateenv (const fenv_t *envp) +int +__feupdateenv (const fenv_t *envp) { - unsigned long tmp; + unsigned long int tmp; /* Get the current exception state. */ - tmp = __ieee_get_fp_control(); + tmp = __ieee_get_fp_control (); /* Install new environment. */ - fesetenv(envp); + fesetenv (envp); /* Raise the saved exception. Incidently for us the implementation defined format of the values in objects of type fexcept_t is the same as the ones specified using the FE_* constants. */ - feraiseexcept((int)tmp & FE_ALL_EXCEPT); + feraiseexcept ((int) tmp & FE_ALL_EXCEPT); + + /* Success. */ + return 0; } +strong_alias (__feupdateenv, __old_feupdateenv) +symbol_version (__old_feupdateenv, feupdateenv, GLIBC_2.1); +default_symbol_version (__feupdateenv, feupdateenv, GLIBC_2.1.3); diff --git a/sysdeps/alpha/fpu/fgetexcptflg.c b/sysdeps/alpha/fpu/fgetexcptflg.c index 28d9e129b1..2811d02cd1 100644 --- a/sysdeps/alpha/fpu/fgetexcptflg.c +++ b/sysdeps/alpha/fpu/fgetexcptflg.c @@ -1,5 +1,5 @@ /* Store current representation for exceptions. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Richard Henderson , 1997. @@ -20,14 +20,20 @@ #include -void -fegetexceptflag (fexcept_t *flagp, int excepts) +int +__fegetexceptflag (fexcept_t *flagp, int excepts) { - unsigned long tmp; + unsigned long int tmp; /* Get the current state. */ tmp = __ieee_get_fp_control(); /* Return that portion that corresponds to the requested exceptions. */ *flagp = tmp & excepts & FE_ALL_EXCEPT; + + /* Success. */ + return 0; } +strong_alias (__fegetexceptflag, __old_fegetexceptflag) +symbol_version (__old_fegetexceptflag, fegetexceptflag, GLIBC_2.1); +default_symbol_version (__fegetexceptflag, fegetexceptflag, GLIBC_2.1.3); diff --git a/sysdeps/alpha/fpu/fraiseexcpt.c b/sysdeps/alpha/fpu/fraiseexcpt.c index 9b61ddb843..bcbc06b400 100644 --- a/sysdeps/alpha/fpu/fraiseexcpt.c +++ b/sysdeps/alpha/fpu/fraiseexcpt.c @@ -1,5 +1,5 @@ /* Raise given exceptions. - Copyright (C) 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Richard Henderson , 1997. @@ -22,9 +22,10 @@ #include void -feraiseexcept (int excepts) +__feraiseexcept (int excepts) { - double tmp, dummy; + double tmp; + double dummy; /* Raise exceptions represented by EXPECTS. But we must raise only one signal at a time. It is important the if the overflow/underflow @@ -36,38 +37,34 @@ feraiseexcept (int excepts) /* First: invalid exception. */ if (FE_INVALID & excepts) - { - /* One example of a invalid operation is 0 * Infinity. */ - __asm__ __volatile__("mult/sui $f31,%1,%0; trapb" - : "=&f"(tmp) : "f"(HUGE_VAL)); - } + /* One example of a invalid operation is 0 * Infinity. */ + __asm__ __volatile__("mult/sui $f31,%1,%0; trapb" + : "=&f" (tmp) : "f" (HUGE_VAL)); /* Next: division by zero. */ if (FE_DIVBYZERO & excepts) - { - __asm__ __volatile__("cmpteq $f31,$f31,%1; divt/sui %1,$f31,%0; trapb" - : "=&f"(tmp), "=f"(dummy)); - } + __asm__ __volatile__("cmpteq $f31,$f31,%1; divt/sui %1,$f31,%0; trapb" + : "=&f" (tmp), "=f" (dummy)); /* Next: overflow. */ if (FE_OVERFLOW & excepts) - { - __asm__ __volatile__("mult/sui %1,%1,%0; trapb" - : "=&f"(tmp) : "f"(DBL_MAX)); - } + __asm__ __volatile__("mult/sui %1,%1,%0; trapb" + : "=&f" (tmp) : "f" (DBL_MAX)); /* Next: underflow. */ if (FE_UNDERFLOW & excepts) - { - __asm__ __volatile__("divt/sui %1,%2,%0; trapb" - : "=&f"(tmp) : "f"(DBL_MIN), - "f"((double) (1UL << 60))); - } + __asm__ __volatile__("divt/sui %1,%2,%0; trapb" + : "=&f" (tmp) : "f" (DBL_MIN), + "f" ((double) (1UL << 60))); /* Last: inexact. */ if (FE_INEXACT & excepts) - { - __asm__ __volatile__("divt/sui %1,%2,%0; trapb" - : "=&f"(tmp) : "f"(1.0), "f"(M_PI)); - } + __asm__ __volatile__("divt/sui %1,%2,%0; trapb" + : "=&f" (tmp) : "f" (1.0), "f" (M_PI)); + + /* Success. */ + return 0; } +strong_alias (__feraiseexcept, __old_feraiseexcept) +symbol_version (__old_feraiseexcept, feraiseexcept, GLIBC_2.1); +default_symbol_version (__feraiseexcept, feraiseexcept, GLIBC_2.1.3); diff --git a/sysdeps/alpha/fpu/fsetexcptflg.c b/sysdeps/alpha/fpu/fsetexcptflg.c index 5764a6ec7b..eeb987ede2 100644 --- a/sysdeps/alpha/fpu/fsetexcptflg.c +++ b/sysdeps/alpha/fpu/fsetexcptflg.c @@ -1,5 +1,5 @@ /* Set floating-point environment exception handling. - Copyright (C) 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Richard Henderson , 1997. @@ -20,17 +20,23 @@ #include -void -fesetexceptflag (const fexcept_t *flagp, int excepts) +int +__fesetexceptflag (const fexcept_t *flagp, int excepts) { - unsigned long tmp; + unsigned long int tmp; /* Get the current exception state. */ - tmp = __ieee_get_fp_control(); + tmp = __ieee_get_fp_control (); /* Set all the bits that were called for. */ tmp = (tmp & ~FE_ALL_EXCEPT) | (*flagp & excepts & FE_ALL_EXCEPT); /* And store it back. */ - __ieee_set_fp_control(tmp); + __ieee_set_fp_control (tmp); + + /* Success. */ + return 0; } +strong_alias (__fesetexceptflag, __old_fesetexceptflag) +symbol_version (__old_fesetexceptflag, fesetexceptflag, GLIBC_2.1); +default_symbol_version (__fesetexceptflag, fesetexceptflag, GLIBC_2.1.3); diff --git a/sysdeps/arm/fpu/fclrexcpt.c b/sysdeps/arm/fpu/fclrexcpt.c index 34ad36dfa8..0bcdfdf5d9 100644 --- a/sysdeps/arm/fpu/fclrexcpt.c +++ b/sysdeps/arm/fpu/fclrexcpt.c @@ -1,5 +1,5 @@ /* Clear given exceptions in current floating-point environment. - Copyright (C) 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999 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 @@ -20,8 +20,8 @@ #include #include -void -feclearexcept (int excepts) +int +__feclearexcept (int excepts) { unsigned long int temp; @@ -29,11 +29,17 @@ feclearexcept (int excepts) excepts &= FE_ALL_EXCEPT; /* Get the current floating point status. */ - _FPU_GETCW(temp); + _FPU_GETCW (temp); /* Clear the relevant bits. */ temp &= excepts ^ FE_ALL_EXCEPT; /* Put the new data in effect. */ - _FPU_SETCW(temp); + _FPU_SETCW (temp); + + /* Success. */ + return 0; } +strong_alias (__feclearexcept, __old_feclearexcept) +symbol_version (__old_feclearexcept, feclearexcept, GLIBC_2.1); +default_symbol_version (__feclearexcept, feclearexcept, GLIBC_2.1.3); diff --git a/sysdeps/arm/fpu/fegetenv.c b/sysdeps/arm/fpu/fegetenv.c index 99dc1f0d8c..7fde5f21e4 100644 --- a/sysdeps/arm/fpu/fegetenv.c +++ b/sysdeps/arm/fpu/fegetenv.c @@ -20,10 +20,16 @@ #include #include -void -fegetenv (fenv_t *envp) +int +__fegetenv (fenv_t *envp) { unsigned long int temp; - _FPU_GETCW(temp); + _FPU_GETCW (temp); envp->__cw = temp; + + /* Success. */ + return 0; } +strong_alias (__fegetenv, __old_fegetenv) +symbol_version (__old_fegetenv, fegetenv, GLIBC_2.1); +default_symbol_version (__fegetenv, fegetenv, GLIBC_2.1.3); diff --git a/sysdeps/arm/fpu/fesetenv.c b/sysdeps/arm/fpu/fesetenv.c index 7f3a434778..13cda82554 100644 --- a/sysdeps/arm/fpu/fesetenv.c +++ b/sysdeps/arm/fpu/fesetenv.c @@ -20,14 +20,20 @@ #include #include -void -fesetenv (const fenv_t *envp) +int +__fesetenv (const fenv_t *envp) { if (envp == FE_DFL_ENV) - _FPU_SETCW(_FPU_DEFAULT); + _FPU_SETCW (_FPU_DEFAULT); else { - unsigned long temp = envp->__cw; - _FPU_SETCW(temp); + unsigned long int temp = envp->__cw; + _FPU_SETCW (temp); } + + /* Success. */ + return 0; } +strong_alias (__fesetenv, __old_fesetenv) +symbol_version (__old_fesetenv, fesetenv, GLIBC_2.1); +default_symbol_version (__fesetenv, fesetenv, GLIBC_2.1.3); diff --git a/sysdeps/arm/fpu/fraiseexcpt.c b/sysdeps/arm/fpu/fraiseexcpt.c index 0fbfb16c94..77d928a32b 100644 --- a/sysdeps/arm/fpu/fraiseexcpt.c +++ b/sysdeps/arm/fpu/fraiseexcpt.c @@ -1,5 +1,5 @@ /* Raise given exceptions. - Copyright (C) 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999 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 @@ -21,12 +21,18 @@ #include #include -void -feraiseexcept (int excepts) +int +__feraiseexcept (int excepts) { /* Raise exceptions represented by EXPECTS. */ fexcept_t temp; - _FPU_GETCW(temp); + _FPU_GETCW (temp); temp |= (excepts & FE_ALL_EXCEPT); - _FPU_SETCW(temp); + _FPU_SETCW (temp); + + /* Success. */ + return 0; } +strong_alias (__feraiseexcept, __old_feraiseexcept) +symbol_version (__old_feraiseexcept, feraiseexcept, GLIBC_2.1); +default_symbol_version (__feraiseexcept, feraiseexcept, GLIBC_2.1.3); diff --git a/sysdeps/arm/fpu/fsetexcptflg.c b/sysdeps/arm/fpu/fsetexcptflg.c index f5c06a6f6c..ef157a27ed 100644 --- a/sysdeps/arm/fpu/fsetexcptflg.c +++ b/sysdeps/arm/fpu/fsetexcptflg.c @@ -1,5 +1,5 @@ /* Set floating-point environment exception handling. - Copyright (C) 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999 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 @@ -21,18 +21,24 @@ #include #include -void -fesetexceptflag (const fexcept_t *flagp, int excepts) +int +__fesetexceptflag (const fexcept_t *flagp, int excepts) { fexcept_t temp; /* Get the current environment. */ - _FPU_GETCW(temp); + _FPU_GETCW (temp); /* Set the desired exception mask. */ temp &= ~((excepts & FE_ALL_EXCEPT) << FE_EXCEPT_SHIFT); temp |= (*flagp & excepts & FE_ALL_EXCEPT) << FE_EXCEPT_SHIFT; /* Save state back to the FPU. */ - _FPU_SETCW(temp); + _FPU_SETCW (temp); + + /* Success. */ + return 0; } +strong_alias (__fesetexceptflag, __old_fesetexceptflag) +symbol_version (__old_fesetexceptflag, fesetexceptflag, GLIBC_2.1); +default_symbol_version (__fesetexceptflag, fesetexceptflag, GLIBC_2.1.3); diff --git a/sysdeps/generic/fclrexcpt.c b/sysdeps/generic/fclrexcpt.c index c760e54a3e..d5b157ecac 100644 --- a/sysdeps/generic/fclrexcpt.c +++ b/sysdeps/generic/fclrexcpt.c @@ -1,5 +1,5 @@ /* Clear given exceptions in current floating-point environment. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -20,9 +20,15 @@ #include -void -feclearexcept (int excepts) +int +__feclearexcept (int excepts) { + /* This always fails. */ + return 1; } +strong_alias (__feclearexcept, __old_feclearexcept) +symbol_version (__old_feclearexcept, feclearexcept, GLIBC_2.1); +default_symbol_version (__feclearexcept, feclearexcept, GLIBC_2.1.3); + stub_warning (feclearexcept) #include diff --git a/sysdeps/generic/fegetenv.c b/sysdeps/generic/fegetenv.c index 4afe17a004..6983839284 100644 --- a/sysdeps/generic/fegetenv.c +++ b/sysdeps/generic/fegetenv.c @@ -1,5 +1,5 @@ /* Store current floating-point environment. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -20,9 +20,15 @@ #include -void +int fegetenv (fenv_t *envp) { + /* This always fails. */ + return 1; } +strong_alias (__fegetenv, __old_fegetenv) +symbol_version (__old_fegetenv, fegetenv, GLIBC_2.1); +default_symbol_version (__fegetenv, fegetenv, GLIBC_2.1.3); + stub_warning (fegetenv) #include diff --git a/sysdeps/generic/fesetenv.c b/sysdeps/generic/fesetenv.c index 91619494c5..53ef89e9db 100644 --- a/sysdeps/generic/fesetenv.c +++ b/sysdeps/generic/fesetenv.c @@ -1,5 +1,5 @@ /* Install given floating-point environment. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -20,9 +20,15 @@ #include -void -fesetenv (const fenv_t *envp) +int +__fesetenv (const fenv_t *envp) { + /* This always fails. */ + return 1; } +strong_alias (__fesetenv, __old_fesetenv) +symbol_version (__old_fesetenv, fesetenv, GLIBC_2.1); +default_symbol_version (__fesetenv, fesetenv, GLIBC_2.1.3); + stub_warning (fesetenv) #include diff --git a/sysdeps/generic/feupdateenv.c b/sysdeps/generic/feupdateenv.c index cc6f59d4ce..5c70c4ad97 100644 --- a/sysdeps/generic/feupdateenv.c +++ b/sysdeps/generic/feupdateenv.c @@ -1,5 +1,5 @@ /* Install given floating-point environment and raise exceptions. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -20,9 +20,15 @@ #include -void -feupdateenv (const fenv_t *envp) +int +__feupdateenv (const fenv_t *envp) { + /* This always fails. */ + return 1; } +strong_alias (__feupdateenv, __old_feupdateenv) +symbol_version (__old_feupdateenv, feupdateenv, GLIBC_2.1); +default_symbol_version (__feupdateenv, feupdateenv, GLIBC_2.1.3); + stub_warning (feupdateenv) #include diff --git a/sysdeps/generic/fgetexcptflg.c b/sysdeps/generic/fgetexcptflg.c index 94f36f7f21..164f374e04 100644 --- a/sysdeps/generic/fgetexcptflg.c +++ b/sysdeps/generic/fgetexcptflg.c @@ -1,5 +1,5 @@ /* Store current representation for exceptions. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -20,9 +20,15 @@ #include -void -fegetexceptflag (fexcept_t *flagp, int excepts) +int +__fegetexceptflag (fexcept_t *flagp, int excepts) { + /* This always fails. */ + return 1; } +strong_alias (__fegetexceptflag, __old_fegetexceptflag) +symbol_version (__old_fegetexceptflag, fegetexceptflag, GLIBC_2.1); +default_symbol_version (__fegetexceptflag, fegetexceptflag, GLIBC_2.1.3); + stub_warning (fegetexceptflag) #include diff --git a/sysdeps/generic/fraiseexcpt.c b/sysdeps/generic/fraiseexcpt.c index 5f24782652..d2061996ce 100644 --- a/sysdeps/generic/fraiseexcpt.c +++ b/sysdeps/generic/fraiseexcpt.c @@ -1,5 +1,5 @@ /* Raise given exceptions. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -20,9 +20,15 @@ #include -void -feraiseexcept (int excepts) +int +__feraiseexcept (int excepts) { + /* This always fails. */ + return 1; } +strong_alias (__feraiseexcept, __old_feraiseexcept) +symbol_version (__old_feraiseexcept, feraiseexcept, GLIBC_2.1); +default_symbol_version (__feraiseexcept, feraiseexcept, GLIBC_2.1.3); + stub_warning (feraiseexcept) #include diff --git a/sysdeps/generic/fsetexcptflg.c b/sysdeps/generic/fsetexcptflg.c index b3a6375851..5765c71c3e 100644 --- a/sysdeps/generic/fsetexcptflg.c +++ b/sysdeps/generic/fsetexcptflg.c @@ -1,5 +1,5 @@ /* Set floating-point environment exception handling. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -20,9 +20,15 @@ #include -void -fesetexceptflag (const fexcept_t *flagp, int excepts) +int +__fesetexceptflag (const fexcept_t *flagp, int excepts) { + /* This always fails. */ + return 1; } +strong_alias (__fesetexceptflag, __old_fesetexceptflag) +symbol_version (__old_fesetexceptflag, fesetexceptflag, GLIBC_2.1); +default_symbol_version (__fesetexceptflag, fesetexceptflag, GLIBC_2.1.3); + stub_warning (fesetexceptflag) #include diff --git a/sysdeps/generic/inttypes.h b/sysdeps/generic/inttypes.h index c81a236fa9..2d4c1686e3 100644 --- a/sysdeps/generic/inttypes.h +++ b/sysdeps/generic/inttypes.h @@ -17,7 +17,7 @@ Boston, MA 02111-1307, USA. */ /* - * ISO C 9X: 7.5 Format conversion of integer types + * ISO C99: 7.8 Format conversion of integer types */ #ifndef _INTTYPES_H @@ -28,7 +28,7 @@ #include -/* The ISO C 9X standard specifies that these macros must only be +/* The ISO C99 standard specifies that these macros must only be defined if explicitly requested. */ #if !defined __cplusplus || defined __STDC_FORMAT_MACROS diff --git a/sysdeps/generic/stdint.h b/sysdeps/generic/stdint.h index 9713d52348..1269b78f34 100644 --- a/sysdeps/generic/stdint.h +++ b/sysdeps/generic/stdint.h @@ -17,7 +17,7 @@ Boston, MA 02111-1307, USA. */ /* - * ISO C 9X: 7.18 Integer types + * ISO C99: 7.18 Integer types */ #ifndef _STDINT_H @@ -140,7 +140,7 @@ typedef unsigned long long int uintmax_t; #endif -/* The ISO C 9X standard specifies that in C++ implementations these +/* The ISO C99 standard specifies that in C++ implementations these macros should only be defined if explicitly requested. */ #if !defined __cplusplus || defined __STDC_LIMIT_MACROS @@ -280,7 +280,7 @@ typedef unsigned long long int uintmax_t; #endif /* C++ && limit macros */ -/* The ISO C 9X standard specifies that in C++ implementations these +/* The ISO C99 standard specifies that in C++ implementations these should only be defined if explicitly requested. */ #if !defined __cplusplus || defined __STDC_CONSTANT_MACROS diff --git a/sysdeps/i386/fpu/fclrexcpt.c b/sysdeps/i386/fpu/fclrexcpt.c index 8bf53d9cfc..d7095d299a 100644 --- a/sysdeps/i386/fpu/fclrexcpt.c +++ b/sysdeps/i386/fpu/fclrexcpt.c @@ -20,8 +20,8 @@ #include -void -feclearexcept (int excepts) +int +__feclearexcept (int excepts) { fenv_t temp; @@ -37,4 +37,10 @@ feclearexcept (int excepts) /* Put the new data in effect. */ __asm__ ("fldenv %0" : : "m" (*&temp)); + + /* Success. */ + return 0; } +strong_alias (__feclearexcept, __old_feclearexcept) +symbol_version (__old_feclearexcept, feclearexcept, GLIBC_2.1); +default_symbol_version (__feclearexcept, feclearexcept, GLIBC_2.1.3); diff --git a/sysdeps/i386/fpu/fegetenv.c b/sysdeps/i386/fpu/fegetenv.c index 452449d044..525eb08bd2 100644 --- a/sysdeps/i386/fpu/fegetenv.c +++ b/sysdeps/i386/fpu/fegetenv.c @@ -1,5 +1,5 @@ /* Store current floating-point environment. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -20,8 +20,14 @@ #include -void -fegetenv (fenv_t *envp) +int +__fegetenv (fenv_t *envp) { __asm__ ("fnstenv %0" : "=m" (*envp)); + + /* Success. */ + return 0; } +strong_alias (__fegetenv, __old_fegetenv) +symbol_version (__old_fegetenv, fegetenv, GLIBC_2.1); +default_symbol_version (__fegetenv, fegetenv, GLIBC_2.1.3); diff --git a/sysdeps/i386/fpu/fesetenv.c b/sysdeps/i386/fpu/fesetenv.c index 4a9cbed43f..102bc98647 100644 --- a/sysdeps/i386/fpu/fesetenv.c +++ b/sysdeps/i386/fpu/fesetenv.c @@ -23,8 +23,8 @@ #include -void -fesetenv (const fenv_t *envp) +int +__fesetenv (const fenv_t *envp) { fenv_t temp; @@ -73,4 +73,10 @@ fesetenv (const fenv_t *envp) } __asm__ ("fldenv %0" : : "m" (temp)); + + /* Success. */ + return 0; } +strong_alias (__fesetenv, __old_fesetenv) +symbol_version (__old_fesetenv, fesetenv, GLIBC_2.1); +default_symbol_version (__fesetenv, fesetenv, GLIBC_2.1.3); diff --git a/sysdeps/i386/fpu/feupdateenv.c b/sysdeps/i386/fpu/feupdateenv.c index 0f7abc2344..1643570c21 100644 --- a/sysdeps/i386/fpu/feupdateenv.c +++ b/sysdeps/i386/fpu/feupdateenv.c @@ -1,5 +1,5 @@ /* Install given floating-point environment and raise exceptions. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -20,8 +20,8 @@ #include -void -feupdateenv (const fenv_t *envp) +int +__feupdateenv (const fenv_t *envp) { fexcept_t temp; @@ -36,4 +36,10 @@ feupdateenv (const fenv_t *envp) defined format of the values in objects of type fexcept_t is the same as the ones specified using the FE_* constants. */ feraiseexcept ((int) temp); + + /* Success. */ + return 0; } +strong_alias (__feupdateenv, __old_feupdateenv) +symbol_version (__old_feupdateenv, feupdateenv, GLIBC_2.1); +default_symbol_version (__feupdateenv, feupdateenv, GLIBC_2.1.3); diff --git a/sysdeps/i386/fpu/fgetexcptflg.c b/sysdeps/i386/fpu/fgetexcptflg.c index 1db3953eae..bec8d76ec5 100644 --- a/sysdeps/i386/fpu/fgetexcptflg.c +++ b/sysdeps/i386/fpu/fgetexcptflg.c @@ -1,5 +1,5 @@ /* Store current representation for exceptions. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -20,8 +20,8 @@ #include -void -fegetexceptflag (fexcept_t *flagp, int excepts) +int +__fegetexceptflag (fexcept_t *flagp, int excepts) { fexcept_t temp; @@ -29,4 +29,10 @@ fegetexceptflag (fexcept_t *flagp, int excepts) __asm__ ("fnstsw %0" : "=m" (*&temp)); *flagp = temp & excepts & FE_ALL_EXCEPT; + + /* Success. */ + return 0; } +strong_alias (__fegetexceptflag, __old_fegetexceptflag) +symbol_version (__old_fegetexceptflag, fegetexceptflag, GLIBC_2.1); +default_symbol_version (__fegetexceptflag, fegetexceptflag, GLIBC_2.1.3); diff --git a/sysdeps/i386/fpu/fraiseexcpt.c b/sysdeps/i386/fpu/fraiseexcpt.c index f39ab53b67..bd1aa78e5a 100644 --- a/sysdeps/i386/fpu/fraiseexcpt.c +++ b/sysdeps/i386/fpu/fraiseexcpt.c @@ -21,8 +21,8 @@ #include #include -void -feraiseexcept (int excepts) +int +__feraiseexcept (int excepts) { /* Raise exceptions represented by EXPECTS. But we must raise only one signal at a time. It is important that if the overflow/underflow @@ -109,4 +109,10 @@ feraiseexcept (int excepts) /* And raise the exception. */ __asm__ __volatile__ ("fwait"); } + + /* Success. */ + return 0; } +strong_alias (__feraiseexcept, __old_feraiseexcept) +symbol_version (__old_feraiseexcept, feraiseexcept, GLIBC_2.1); +default_symbol_version (__feraiseexcept, feraiseexcept, GLIBC_2.1.3); diff --git a/sysdeps/i386/fpu/fsetexcptflg.c b/sysdeps/i386/fpu/fsetexcptflg.c index 5861b4ee8a..cd45059aaf 100644 --- a/sysdeps/i386/fpu/fsetexcptflg.c +++ b/sysdeps/i386/fpu/fsetexcptflg.c @@ -21,8 +21,8 @@ #include #include -void -fesetexceptflag (const fexcept_t *flagp, int excepts) +int +__fesetexceptflag (const fexcept_t *flagp, int excepts) { fenv_t temp; @@ -37,4 +37,10 @@ fesetexceptflag (const fexcept_t *flagp, int excepts) Possibly new exceptions are set but they won't get executed unless the next floating-point instruction. */ __asm__ ("fldenv %0" : : "m" (*&temp)); + + /* Success. */ + return 0; } +strong_alias (__fesetexceptflag, __old_fesetexceptflag) +symbol_version (__old_fesetexceptflag, fesetexceptflag, GLIBC_2.1); +default_symbol_version (__fesetexceptflag, fesetexceptflag, GLIBC_2.1.3); diff --git a/sysdeps/m68k/fpu/fclrexcpt.c b/sysdeps/m68k/fpu/fclrexcpt.c index b914bac9f9..5b2c4253e5 100644 --- a/sysdeps/m68k/fpu/fclrexcpt.c +++ b/sysdeps/m68k/fpu/fclrexcpt.c @@ -1,5 +1,5 @@ /* Clear given exceptions in current floating-point environment. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Schwab @@ -20,8 +20,8 @@ #include -void -feclearexcept (int excepts) +int +__feclearexcept (int excepts) { fexcept_t fpsr; @@ -36,4 +36,10 @@ feclearexcept (int excepts) /* Put the new data in effect. */ __asm__ __volatile__ ("fmove%.l %0,%/fpsr" : : "dm" (fpsr)); + + /* Success. */ + return 0; } +strong_alias (__feclearexcept, __old_feclearexcept) +symbol_version (__old_feclearexcept, feclearexcept, GLIBC_2.1); +default_symbol_version (__feclearexcept, feclearexcept, GLIBC_2.1.3); diff --git a/sysdeps/m68k/fpu/fegetenv.c b/sysdeps/m68k/fpu/fegetenv.c index b437b7ef8a..8936b38807 100644 --- a/sysdeps/m68k/fpu/fegetenv.c +++ b/sysdeps/m68k/fpu/fegetenv.c @@ -1,5 +1,5 @@ /* Store current floating-point environment. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Schwab @@ -20,8 +20,14 @@ #include -void -fegetenv (fenv_t *envp) +int +__fegetenv (fenv_t *envp) { __asm__ ("fmovem%.l %/fpcr/%/fpsr/%/fpiar,%0" : "=m" (*envp)); + + /* Success. */ + return 0; } +strong_alias (__fegetenv, __old_fegetenv) +symbol_version (__old_fegetenv, fegetenv, GLIBC_2.1); +default_symbol_version (__fegetenv, fegetenv, GLIBC_2.1.3); diff --git a/sysdeps/m68k/fpu/fesetenv.c b/sysdeps/m68k/fpu/fesetenv.c index b8ad428893..11bffb449e 100644 --- a/sysdeps/m68k/fpu/fesetenv.c +++ b/sysdeps/m68k/fpu/fesetenv.c @@ -20,8 +20,8 @@ #include -void -fesetenv (const fenv_t *envp) +int +__fesetenv (const fenv_t *envp) { fenv_t temp; @@ -45,4 +45,10 @@ fesetenv (const fenv_t *envp) } __asm__ __volatile__ ("fmovem%.l %0,%/fpcr/%/fpsr/%/fpiar" : : "m" (*&temp)); + + /* Success. */ + return 0; } +strong_alias (__fesetenv, __old_fesetenv) +symbol_version (__old_fesetenv, fesetenv, GLIBC_2.1); +default_symbol_version (__fesetenv, fesetenv, GLIBC_2.1.3); diff --git a/sysdeps/m68k/fpu/feupdateenv.c b/sysdeps/m68k/fpu/feupdateenv.c index f5922b4de4..48d42d983f 100644 --- a/sysdeps/m68k/fpu/feupdateenv.c +++ b/sysdeps/m68k/fpu/feupdateenv.c @@ -1,5 +1,5 @@ /* Install given floating-point environment and raise exceptions. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Schwab @@ -20,8 +20,8 @@ #include -void -feupdateenv (const fenv_t *envp) +int +__feupdateenv (const fenv_t *envp) { fexcept_t fpsr; @@ -36,4 +36,10 @@ feupdateenv (const fenv_t *envp) defined format of the values in objects of type fexcept_t is the same as the ones specified using the FE_* constants. */ feraiseexcept ((int) fpsr); + + /* Success. */ + return 0; } +strong_alias (__feupdateenv, __old_feupdateenv) +symbol_version (__old_feupdateenv, feupdateenv, GLIBC_2.1); +default_symbol_version (__feupdateenv, feupdateenv, GLIBC_2.1.3); diff --git a/sysdeps/m68k/fpu/fgetexcptflg.c b/sysdeps/m68k/fpu/fgetexcptflg.c index 4086e1a97f..5d3a435970 100644 --- a/sysdeps/m68k/fpu/fgetexcptflg.c +++ b/sysdeps/m68k/fpu/fgetexcptflg.c @@ -1,5 +1,5 @@ /* Store current representation for exceptions. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Schwab @@ -20,8 +20,8 @@ #include -void -fegetexceptflag (fexcept_t *flagp, int excepts) +int +__fegetexceptflag (fexcept_t *flagp, int excepts) { fexcept_t fpsr; @@ -29,4 +29,10 @@ fegetexceptflag (fexcept_t *flagp, int excepts) __asm__ ("fmove%.l %/fpsr,%0" : "=dm" (fpsr)); *flagp = fpsr & excepts & FE_ALL_EXCEPT; + + /* Success. */ + return 0; } +strong_alias (__fegetexceptflag, __old_fegetexceptflag) +symbol_version (__old_fegetexceptflag, fegetexceptflag, GLIBC_2.1); +default_symbol_version (__fegetexceptflag, fegetexceptflag, GLIBC_2.1.3); diff --git a/sysdeps/m68k/fpu/fraiseexcpt.c b/sysdeps/m68k/fpu/fraiseexcpt.c index bc49c9c71f..c283d4bbde 100644 --- a/sysdeps/m68k/fpu/fraiseexcpt.c +++ b/sysdeps/m68k/fpu/fraiseexcpt.c @@ -1,5 +1,5 @@ /* Raise given exceptions. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Schwab @@ -21,8 +21,8 @@ #include #include -void -feraiseexcept (int excepts) +int +__feraiseexcept (int excepts) { /* Raise exceptions represented by EXCEPTS. But we must raise only one signal at a time. It is important that if the overflow/underflow @@ -67,4 +67,10 @@ feraiseexcept (int excepts) long double d = 1.0; __asm__ __volatile__ ("fdiv%.s %#0r3,%0; fnop" : "=f" (d) : "0" (d)); } + + /* Success. */ + return 0; } +strong_alias (__feraiseexcept, __old_feraiseexcept) +symbol_version (__old_feraiseexcept, feraiseexcept, GLIBC_2.1); +default_symbol_version (__feraiseexcept, feraiseexcept, GLIBC_2.1.3); diff --git a/sysdeps/m68k/fpu/fsetexcptflg.c b/sysdeps/m68k/fpu/fsetexcptflg.c index aa92ffd0c5..890042a0a7 100644 --- a/sysdeps/m68k/fpu/fsetexcptflg.c +++ b/sysdeps/m68k/fpu/fsetexcptflg.c @@ -1,5 +1,5 @@ /* Set floating-point environment exception handling. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Schwab @@ -21,8 +21,8 @@ #include #include -void -fesetexceptflag (const fexcept_t *flagp, int excepts) +int +__fesetexceptflag (const fexcept_t *flagp, int excepts) { fexcept_t fpsr; @@ -35,4 +35,10 @@ fesetexceptflag (const fexcept_t *flagp, int excepts) /* Store the new status register. */ __asm__ __volatile__ ("fmove%.l %0,%/fpsr" : : "dm" (fpsr)); + + /* Success. */ + return 0; } +strong_alias (__fesetexceptflag, __old_fesetexceptflag) +symbol_version (__old_fesetexceptflag, fesetexceptflag, GLIBC_2.1); +default_symbol_version (__fesetexceptflag, fesetexceptflag, GLIBC_2.1.3); diff --git a/sysdeps/mips/fclrexcpt.c b/sysdeps/mips/fclrexcpt.c index de96dd0b5c..990dfe6996 100644 --- a/sysdeps/mips/fclrexcpt.c +++ b/sysdeps/mips/fclrexcpt.c @@ -1,5 +1,5 @@ /* Clear given exceptions in current floating-point environment. - Copyright (C) 1998 Free Software Foundation, Inc. + Copyright (C) 1998, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Jaeger , 1998. @@ -21,8 +21,8 @@ #include #include -void -feclearexcept (int excepts) +int +__feclearexcept (int excepts) { int cw; @@ -34,7 +34,13 @@ feclearexcept (int excepts) /* Clear exception bits. */ cw &= ~excepts; - + /* Put the new data in effect. */ _FPU_SETCW (cw); + + /* Success. */ + return 0; } +strong_alias (__feclearexcept, __old_feclearexcept) +symbol_version (__old_feclearexcept, feclearexcept, GLIBC_2.1); +default_symbol_version (__feclearexcept, feclearexcept, GLIBC_2.1.3); diff --git a/sysdeps/mips/fegetenv.c b/sysdeps/mips/fegetenv.c index 13a2c8fc19..72b7ee5811 100644 --- a/sysdeps/mips/fegetenv.c +++ b/sysdeps/mips/fegetenv.c @@ -1,5 +1,5 @@ /* Store current floating-point environment. - Copyright (C) 1998 Free Software Foundation, Inc. + Copyright (C) 1998, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Jaeger , 1998. @@ -21,8 +21,14 @@ #include #include -void -fegetenv (fenv_t *envp) +int +__fegetenv (fenv_t *envp) { _FPU_GETCW (*envp); + + /* Success. */ + return 0; } +strong_alias (__fegetenv, __old_fegetenv) +symbol_version (__old_fegetenv, fegetenv, GLIBC_2.1); +default_symbol_version (__fegetenv, fegetenv, GLIBC_2.1.3); diff --git a/sysdeps/mips/fesetenv.c b/sysdeps/mips/fesetenv.c index 116fbaefce..43a571efde 100644 --- a/sysdeps/mips/fesetenv.c +++ b/sysdeps/mips/fesetenv.c @@ -21,11 +21,17 @@ #include #include -void -fesetenv (const fenv_t *envp) +int +__fesetenv (const fenv_t *envp) { if (envp == FE_DFL_ENV) _FPU_SETCW (_FPU_DEFAULT); else _FPU_SETCW (envp->__fp_control_register); + + /* Success. */ + return 0; } +strong_alias (__fesetenv, __old_fesetenv) +symbol_version (__old_fesetenv, fesetenv, GLIBC_2.1); +default_symbol_version (__fesetenv, fesetenv, GLIBC_2.1.3); diff --git a/sysdeps/mips/feupdateenv.c b/sysdeps/mips/feupdateenv.c index e826084671..f0748cee77 100644 --- a/sysdeps/mips/feupdateenv.c +++ b/sysdeps/mips/feupdateenv.c @@ -1,5 +1,5 @@ /* Install given floating-point environment and raise exceptions. - Copyright (C) 1998 Free Software Foundation, Inc. + Copyright (C) 1998, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Jaeger , 1998. @@ -21,8 +21,8 @@ #include #include -void -feupdateenv (const fenv_t *envp) +int +__feupdateenv (const fenv_t *envp) { int temp; @@ -37,4 +37,10 @@ feupdateenv (const fenv_t *envp) defined format of the values in objects of type fexcept_t is the same as the ones specified using the FE_* constants. */ feraiseexcept (temp); + + /* Success. */ + return 0; } +strong_alias (__feupdateenv, __old_feupdateenv) +symbol_version (__old_feupdateenv, feupdateenv, GLIBC_2.1); +default_symbol_version (__feupdateenv, feupdateenv, GLIBC_2.1.3); diff --git a/sysdeps/mips/fgetexcptflg.c b/sysdeps/mips/fgetexcptflg.c index f3d52bc555..8c586b5200 100644 --- a/sysdeps/mips/fgetexcptflg.c +++ b/sysdeps/mips/fgetexcptflg.c @@ -1,5 +1,5 @@ /* Store current representation for exceptions. - Copyright (C) 1998 Free Software Foundation, Inc. + Copyright (C) 1998, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Jaeger , 1998. @@ -21,8 +21,8 @@ #include #include -void -fegetexceptflag (fexcept_t *flagp, int excepts) +int +__fegetexceptflag (fexcept_t *flagp, int excepts) { fexcept_t temp; @@ -30,4 +30,10 @@ fegetexceptflag (fexcept_t *flagp, int excepts) _FPU_GETCW (temp); *flagp = temp & excepts & FE_ALL_EXCEPT; + + /* Success. */ + return 0; } +strong_alias (__fegetexceptflag, __old_fegetexceptflag) +symbol_version (__old_fegetexceptflag, fegetexceptflag, GLIBC_2.1); +default_symbol_version (__fegetexceptflag, fegetexceptflag, GLIBC_2.1.3); diff --git a/sysdeps/powerpc/fclrexcpt.c b/sysdeps/powerpc/fclrexcpt.c index 47254fd384..4a4adbb5c4 100644 --- a/sysdeps/powerpc/fclrexcpt.c +++ b/sysdeps/powerpc/fclrexcpt.c @@ -1,5 +1,5 @@ /* Clear given exceptions in current floating-point environment. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 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 @@ -20,8 +20,8 @@ #include #undef feclearexcept -void -feclearexcept (int excepts) +int +__feclearexcept (int excepts) { fenv_union_t u; @@ -29,9 +29,15 @@ feclearexcept (int excepts) u.fenv = fegetenv_register (); /* Clear the relevant bits. */ - u.l[1] = u.l[1] & ~((-((excepts) >> (31-FPSCR_VX) & 1) & FE_ALL_INVALID) - | ((excepts) & FPSCR_STICKY_BITS)); + u.l[1] = u.l[1] & ~((-(excepts >> (31 - FPSCR_VX) & 1) & FE_ALL_INVALID) + | (excepts & FPSCR_STICKY_BITS)); /* Put the new state in effect. */ fesetenv_register (u.fenv); + + /* Success. */ + return 0; } +strong_alias (__feclearexcept, __old_feclearexcept) +symbol_version (__old_feclearexcept, feclearexcept, GLIBC_2.1); +default_symbol_version (__feclearexcept, feclearexcept, GLIBC_2.1.3); diff --git a/sysdeps/powerpc/fegetenv.c b/sysdeps/powerpc/fegetenv.c deleted file mode 100644 index de778fa5a9..0000000000 --- a/sysdeps/powerpc/fegetenv.c +++ /dev/null @@ -1,26 +0,0 @@ -/* Store current floating-point environment. - Copyright (C) 1997 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 - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include - -void -fegetenv (fenv_t *envp) -{ - *envp = fegetenv_register (); -} diff --git a/sysdeps/powerpc/fegetround.c b/sysdeps/powerpc/fegetround.c deleted file mode 100644 index 3bb9fb49e0..0000000000 --- a/sysdeps/powerpc/fegetround.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Return current rounding direction. - Copyright (C) 1997 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 - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include - -#undef fegetround -int -fegetround (void) -{ - int result; - asm ("mcrfs 7,7 ; mfcr %0" : "=r"(result) : : "cr7"); \ - return result & 3; -} diff --git a/sysdeps/powerpc/feholdexcpt.c b/sysdeps/powerpc/feholdexcpt.c deleted file mode 100644 index a75adbf49e..0000000000 --- a/sysdeps/powerpc/feholdexcpt.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Store current floating-point environment and clear exceptions. - Copyright (C) 1997 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 - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include - -int -feholdexcept (fenv_t *envp) -{ - fenv_union_t u; - - /* Get the current state. */ - u.fenv = *envp = fegetenv_register (); - - /* Clear everything except for the rounding mode and non-IEEE arithmetic - flag. */ - u.l[1] = u.l[1] & 7; - - /* Put the new state in effect. */ - fesetenv_register (u.fenv); - - return 1; -} diff --git a/sysdeps/powerpc/fenv_const.c b/sysdeps/powerpc/fenv_const.c deleted file mode 100644 index 506bd43df0..0000000000 --- a/sysdeps/powerpc/fenv_const.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Constants for fenv_bits.h. - Copyright (C) 1997 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 - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -/* We want to specify the bit pattern of the __fe_*_env constants, so - pretend they're really `long long' instead of `double'. */ - -/* If the default argument is used we use this value. */ -const unsigned long long __fe_dfl_env __attribute__ ((aligned (8))) = -0xfff8000000000000ULL; - -/* Floating-point environment where none of the exceptions are masked. */ -const unsigned long long __fe_enabled_env __attribute__ ((aligned (8))) = -0xfff80000000000f8ULL; - -/* Floating-point environment with the NI bit set. */ -const unsigned long long __fe_nonieee_env __attribute__ ((aligned (8))) = -0xfff8000000000004ULL; diff --git a/sysdeps/powerpc/fenv_libc.h b/sysdeps/powerpc/fenv_libc.h deleted file mode 100644 index 343be16fcb..0000000000 --- a/sysdeps/powerpc/fenv_libc.h +++ /dev/null @@ -1,106 +0,0 @@ -/* Internal libc stuff for floating point environment routines. - Copyright (C) 1997 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 - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#ifndef _FENV_LIBC_H -#define _FENV_LIBC_H 1 - -#include - -/* The sticky bits in the FPSCR indicating exceptions have occurred. */ -#define FPSCR_STICKY_BITS ((FE_ALL_EXCEPT | FE_ALL_INVALID) & ~FE_INVALID) - -/* Equivalent to fegetenv, but returns a fenv_t instead of taking a - pointer. */ -#define fegetenv_register() \ - ({ fenv_t env; asm volatile ("mffs %0" : "=f" (env)); env; }) - -/* Equivalent to fesetenv, but takes a fenv_t instead of a pointer. */ -#define fesetenv_register(env) \ - ({ double d = (env); asm volatile ("mtfsf 0xff,%0" : : "f" (d)); }) - -/* This very handy macro: - - Sets the rounding mode to 'round to nearest'; - - Sets the processor into IEEE mode; and - - Prevents exceptions from being raised for inexact results. - These things happen to be exactly what you need for typical elementary - functions. */ -#define relax_fenv_state() asm ("mtfsfi 7,0") - -/* Set/clear a particular FPSCR bit (for instance, - reset_fpscr_bit(FPSCR_VE); - prevents INVALID exceptions from being raised). */ -#define set_fpscr_bit(x) asm volatile ("mtfsb1 %0" : : "i"(x)) -#define reset_fpscr_bit(x) asm volatile ("mtfsb0 %0" : : "i"(x)) - -typedef union -{ - fenv_t fenv; - unsigned int l[2]; -} fenv_union_t; - -/* Definitions of all the FPSCR bit numbers */ -enum { - FPSCR_FX = 0, /* exception summary */ - FPSCR_FEX, /* enabled exception summary */ - FPSCR_VX, /* invalid operation summary */ - FPSCR_OX, /* overflow */ - FPSCR_UX, /* underflow */ - FPSCR_ZX, /* zero divide */ - FPSCR_XX, /* inexact */ - FPSCR_VXSNAN, /* invalid operation for SNaN */ - FPSCR_VXISI, /* invalid operation for Inf-Inf */ - FPSCR_VXIDI, /* invalid operation for Inf/Inf */ - FPSCR_VXZDZ, /* invalid operation for 0/0 */ - FPSCR_VXIMZ, /* invalid operation for Inf*0 */ - FPSCR_VXVC, /* invalid operation for invalid compare */ - FPSCR_FR, /* fraction rounded [fraction was incremented by round] */ - FPSCR_FI, /* fraction inexact */ - FPSCR_FPRF_C, /* result class descriptor */ - FPSCR_FPRF_FL, /* result less than (usually, less than 0) */ - FPSCR_FPRF_FG, /* result greater than */ - FPSCR_FPRF_FE, /* result equal to */ - FPSCR_FPRF_FU, /* result unordered */ - FPSCR_20, /* reserved */ - FPSCR_VXSOFT, /* invalid operation set by software */ - FPSCR_VXSQRT, /* invalid operation for square root */ - FPSCR_VXCVI, /* invalid operation for invalid integer convert */ - FPSCR_VE, /* invalid operation exception enable */ - FPSCR_OE, /* overflow exception enable */ - FPSCR_UE, /* underflow exception enable */ - FPSCR_ZE, /* zero divide exception enable */ - FPSCR_XE, /* inexact exception enable */ - FPSCR_NI /* non-IEEE mode (typically, no denormalised numbers) */ - /* the remaining two least-significant bits keep the rounding mode */ -}; - -/* This operation (i) sets the appropriate FPSCR bits for its - parameter, (ii) converts SNaN to the corresponding NaN, and (iii) - otherwise passes its parameter through unchanged (in particular, -0 - and +0 stay as they were). The `obvious' way to do this is optimised - out by gcc. */ -#define f_wash(x) \ - ({ double d; asm volatile ("fmul %0,%1,%2" \ - : "=f"(d) \ - : "f" (x), "f"((float)1.0)); d; }) -#define f_washf(x) \ - ({ float f; asm volatile ("fmuls %0,%1,%2" \ - : "=f"(f) \ - : "f" (x), "f"((float)1.0)); f; }) - -#endif /* fenv_libc.h */ diff --git a/sysdeps/powerpc/fesetenv.c b/sysdeps/powerpc/fesetenv.c deleted file mode 100644 index 136a835d21..0000000000 --- a/sysdeps/powerpc/fesetenv.c +++ /dev/null @@ -1,26 +0,0 @@ -/* Install given floating-point environment. - Copyright (C) 1997 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 - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include - -void -fesetenv (const fenv_t *envp) -{ - fesetenv_register (*envp); -} diff --git a/sysdeps/powerpc/fesetround.c b/sysdeps/powerpc/fesetround.c deleted file mode 100644 index 875c89768a..0000000000 --- a/sysdeps/powerpc/fesetround.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Set current rounding direction. - Copyright (C) 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include - -int -fesetround (int round) -{ - fenv_union_t u; - - if ((unsigned int) round > 3) - return 0; - - /* Get the current state. */ - u.fenv = fegetenv_register (); - - /* Set the relevant bits. */ - u.l[1] = (u.l[1] & ~3) | (round & 3); - - /* Put the new state in effect. */ - fesetenv_register (u.fenv); - - return 1; -} diff --git a/sysdeps/powerpc/feupdateenv.c b/sysdeps/powerpc/feupdateenv.c deleted file mode 100644 index 14fa6bbe4e..0000000000 --- a/sysdeps/powerpc/feupdateenv.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Install given floating-point environment and raise exceptions. - Copyright (C) 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include - -void -feupdateenv (const fenv_t *envp) -{ - fenv_union_t old, new; - - /* Save the currently set exceptions. */ - new.fenv = *envp; - old.fenv = fegetenv_register (); - - /* Copy the set exceptions from `old' to `new'. */ - new.l[1] = (new.l[1] & 0xE00000FF) | (old.l[1] & 0x1FFFFF00); - - /* Atomically enable and raise (if appropriate) exceptions set in `new'. */ - fesetenv_register (new.fenv); -} diff --git a/sysdeps/powerpc/fgetexcptflg.c b/sysdeps/powerpc/fgetexcptflg.c deleted file mode 100644 index adbdfe22b9..0000000000 --- a/sysdeps/powerpc/fgetexcptflg.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Store current representation for exceptions. - Copyright (C) 1997 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 - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include - -void -fegetexceptflag (fexcept_t *flagp, int excepts) -{ - fenv_union_t u; - - /* Get the current state. */ - u.fenv = fegetenv_register (); - - /* Return (all of) it. */ - *flagp = u.l[1]; -} diff --git a/sysdeps/powerpc/fpu/feholdexcpt.c b/sysdeps/powerpc/fpu/feholdexcpt.c new file mode 100644 index 0000000000..a75adbf49e --- /dev/null +++ b/sysdeps/powerpc/fpu/feholdexcpt.c @@ -0,0 +1,38 @@ +/* Store current floating-point environment and clear exceptions. + Copyright (C) 1997 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 + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include + +int +feholdexcept (fenv_t *envp) +{ + fenv_union_t u; + + /* Get the current state. */ + u.fenv = *envp = fegetenv_register (); + + /* Clear everything except for the rounding mode and non-IEEE arithmetic + flag. */ + u.l[1] = u.l[1] & 7; + + /* Put the new state in effect. */ + fesetenv_register (u.fenv); + + return 1; +} diff --git a/sysdeps/powerpc/fpu/fenv_const.c b/sysdeps/powerpc/fpu/fenv_const.c new file mode 100644 index 0000000000..506bd43df0 --- /dev/null +++ b/sysdeps/powerpc/fpu/fenv_const.c @@ -0,0 +1,33 @@ +/* Constants for fenv_bits.h. + Copyright (C) 1997 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 + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* We want to specify the bit pattern of the __fe_*_env constants, so + pretend they're really `long long' instead of `double'. */ + +/* If the default argument is used we use this value. */ +const unsigned long long __fe_dfl_env __attribute__ ((aligned (8))) = +0xfff8000000000000ULL; + +/* Floating-point environment where none of the exceptions are masked. */ +const unsigned long long __fe_enabled_env __attribute__ ((aligned (8))) = +0xfff80000000000f8ULL; + +/* Floating-point environment with the NI bit set. */ +const unsigned long long __fe_nonieee_env __attribute__ ((aligned (8))) = +0xfff8000000000004ULL; diff --git a/sysdeps/powerpc/fpu/fenv_libc.h b/sysdeps/powerpc/fpu/fenv_libc.h new file mode 100644 index 0000000000..343be16fcb --- /dev/null +++ b/sysdeps/powerpc/fpu/fenv_libc.h @@ -0,0 +1,106 @@ +/* Internal libc stuff for floating point environment routines. + Copyright (C) 1997 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 + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _FENV_LIBC_H +#define _FENV_LIBC_H 1 + +#include + +/* The sticky bits in the FPSCR indicating exceptions have occurred. */ +#define FPSCR_STICKY_BITS ((FE_ALL_EXCEPT | FE_ALL_INVALID) & ~FE_INVALID) + +/* Equivalent to fegetenv, but returns a fenv_t instead of taking a + pointer. */ +#define fegetenv_register() \ + ({ fenv_t env; asm volatile ("mffs %0" : "=f" (env)); env; }) + +/* Equivalent to fesetenv, but takes a fenv_t instead of a pointer. */ +#define fesetenv_register(env) \ + ({ double d = (env); asm volatile ("mtfsf 0xff,%0" : : "f" (d)); }) + +/* This very handy macro: + - Sets the rounding mode to 'round to nearest'; + - Sets the processor into IEEE mode; and + - Prevents exceptions from being raised for inexact results. + These things happen to be exactly what you need for typical elementary + functions. */ +#define relax_fenv_state() asm ("mtfsfi 7,0") + +/* Set/clear a particular FPSCR bit (for instance, + reset_fpscr_bit(FPSCR_VE); + prevents INVALID exceptions from being raised). */ +#define set_fpscr_bit(x) asm volatile ("mtfsb1 %0" : : "i"(x)) +#define reset_fpscr_bit(x) asm volatile ("mtfsb0 %0" : : "i"(x)) + +typedef union +{ + fenv_t fenv; + unsigned int l[2]; +} fenv_union_t; + +/* Definitions of all the FPSCR bit numbers */ +enum { + FPSCR_FX = 0, /* exception summary */ + FPSCR_FEX, /* enabled exception summary */ + FPSCR_VX, /* invalid operation summary */ + FPSCR_OX, /* overflow */ + FPSCR_UX, /* underflow */ + FPSCR_ZX, /* zero divide */ + FPSCR_XX, /* inexact */ + FPSCR_VXSNAN, /* invalid operation for SNaN */ + FPSCR_VXISI, /* invalid operation for Inf-Inf */ + FPSCR_VXIDI, /* invalid operation for Inf/Inf */ + FPSCR_VXZDZ, /* invalid operation for 0/0 */ + FPSCR_VXIMZ, /* invalid operation for Inf*0 */ + FPSCR_VXVC, /* invalid operation for invalid compare */ + FPSCR_FR, /* fraction rounded [fraction was incremented by round] */ + FPSCR_FI, /* fraction inexact */ + FPSCR_FPRF_C, /* result class descriptor */ + FPSCR_FPRF_FL, /* result less than (usually, less than 0) */ + FPSCR_FPRF_FG, /* result greater than */ + FPSCR_FPRF_FE, /* result equal to */ + FPSCR_FPRF_FU, /* result unordered */ + FPSCR_20, /* reserved */ + FPSCR_VXSOFT, /* invalid operation set by software */ + FPSCR_VXSQRT, /* invalid operation for square root */ + FPSCR_VXCVI, /* invalid operation for invalid integer convert */ + FPSCR_VE, /* invalid operation exception enable */ + FPSCR_OE, /* overflow exception enable */ + FPSCR_UE, /* underflow exception enable */ + FPSCR_ZE, /* zero divide exception enable */ + FPSCR_XE, /* inexact exception enable */ + FPSCR_NI /* non-IEEE mode (typically, no denormalised numbers) */ + /* the remaining two least-significant bits keep the rounding mode */ +}; + +/* This operation (i) sets the appropriate FPSCR bits for its + parameter, (ii) converts SNaN to the corresponding NaN, and (iii) + otherwise passes its parameter through unchanged (in particular, -0 + and +0 stay as they were). The `obvious' way to do this is optimised + out by gcc. */ +#define f_wash(x) \ + ({ double d; asm volatile ("fmul %0,%1,%2" \ + : "=f"(d) \ + : "f" (x), "f"((float)1.0)); d; }) +#define f_washf(x) \ + ({ float f; asm volatile ("fmuls %0,%1,%2" \ + : "=f"(f) \ + : "f" (x), "f"((float)1.0)); f; }) + +#endif /* fenv_libc.h */ diff --git a/sysdeps/powerpc/fpu/fgetexcptflg.c b/sysdeps/powerpc/fpu/fgetexcptflg.c new file mode 100644 index 0000000000..280203a173 --- /dev/null +++ b/sysdeps/powerpc/fpu/fgetexcptflg.c @@ -0,0 +1,38 @@ +/* Store current representation for exceptions. + Copyright (C) 1997, 1999 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 + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include + +int +__fegetexceptflag (fexcept_t *flagp, int excepts) +{ + fenv_union_t u; + + /* Get the current state. */ + u.fenv = fegetenv_register (); + + /* Return (all of) it. */ + *flagp = u.l[1]; + + /* Success. */ + return 0; +} +strong_alias (__fegetexceptflag, __old_fegetexceptflag) +symbol_version (__old_fegetexceptflag, fegetexceptflag, GLIBC_2.1); +default_symbol_version (__fegetexceptflag, fegetexceptflag, GLIBC_2.1.3); diff --git a/sysdeps/powerpc/fpu/fraiseexcpt.c b/sysdeps/powerpc/fpu/fraiseexcpt.c new file mode 100644 index 0000000000..b72f7cb797 --- /dev/null +++ b/sysdeps/powerpc/fpu/fraiseexcpt.c @@ -0,0 +1,59 @@ +/* Raise given exceptions. + Copyright (C) 1997, 1999 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 + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include + +#undef feraiseexcept +int +__feraiseexcept (int excepts) +{ + fenv_union_t u; + + /* Raise exceptions represented by EXCEPTS. It is the responsibility of + the OS to ensure that if multiple exceptions occur they are fed back + to this process in the proper way; this can happen in hardware, + anyway (in particular, inexact with overflow or underflow). */ + + /* Get the current state. */ + u.fenv = fegetenv_register (); + + /* Add the exceptions */ + u.l[1] = (u.l[1] + | (excepts & FPSCR_STICKY_BITS) + /* Turn FE_INVALID into FE_INVALID_SOFTWARE. */ + | (excepts >> ((31 - FPSCR_VX) - (31 - FPSCR_VXSOFT)) + & FE_INVALID_SOFTWARE)); + + /* Store the new status word (along with the rest of the environment), + triggering any appropriate exceptions. */ + fesetenv_register (u.fenv); + + if ((excepts & FE_INVALID) + /* For some reason, some PowerPC chips (the 601, in particular) + don't have FE_INVALID_SOFTWARE implemented. Detect this + case and raise FE_INVALID_SNAN instead. */ + && !fetestexcept (FE_INVALID)) + set_fpscr_bit (FPSCR_VXSNAN); + + /* Success. */ + return 0; +} +strong_alias (__feraiseexcept, __old_feraiseexcept) +symbol_version (__old_feraiseexcept, feraiseexcept, GLIBC_2.1); +default_symbol_version (__feraiseexcept, feraiseexcept, GLIBC_2.1.3); diff --git a/sysdeps/powerpc/fpu/fsetexcptflg.c b/sysdeps/powerpc/fpu/fsetexcptflg.c new file mode 100644 index 0000000000..9ce59ac320 --- /dev/null +++ b/sysdeps/powerpc/fpu/fsetexcptflg.c @@ -0,0 +1,54 @@ +/* Set floating-point environment exception handling. + Copyright (C) 1997, 1999 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 + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include + +int +__fesetexceptflag (const fexcept_t *flagp, int excepts) +{ + fenv_union_t u; + fexcept_t flag; + + /* Get the current state. */ + u.fenv = fegetenv_register (); + + /* Ignore exceptions not listed in 'excepts'. */ + flag = *flagp & excepts; + + /* Replace the exception status */ + u.l[1] = ((u.l[1] & ~(FPSCR_STICKY_BITS & excepts)) + | (flag & FPSCR_STICKY_BITS) + | (flag >> ((31 - FPSCR_VX) - (31 - FPSCR_VXSOFT)) + & FE_INVALID_SOFTWARE)); + + /* Store the new status word (along with the rest of the environment). + This may cause floating-point exceptions if the restored state + requests it. */ + fesetenv_register (u.fenv); + + /* Deal with FE_INVALID_SOFTWARE not being implemented on some chips. */ + if (flag & FE_INVALID) + feraiseexcept(FE_INVALID); + + /* Success. */ + return 0; +} +strong_alias (__fesetexceptflag, __old_fesetexceptflag) +symbol_version (__old_fesetexceptflag, fesetexceptflag, GLIBC_2.1); +default_symbol_version (__fesetexceptflag, fesetexceptflag, GLIBC_2.1.3); diff --git a/sysdeps/powerpc/fraiseexcpt.c b/sysdeps/powerpc/fraiseexcpt.c deleted file mode 100644 index 39e3fbd6bf..0000000000 --- a/sysdeps/powerpc/fraiseexcpt.c +++ /dev/null @@ -1,53 +0,0 @@ -/* Raise given exceptions. - Copyright (C) 1997 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 - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include - -#undef feraiseexcept -void -feraiseexcept (int excepts) -{ - fenv_union_t u; - - /* Raise exceptions represented by EXCEPTS. It is the responsibility of - the OS to ensure that if multiple exceptions occur they are fed back - to this process in the proper way; this can happen in hardware, - anyway (in particular, inexact with overflow or underflow). */ - - /* Get the current state. */ - u.fenv = fegetenv_register (); - - /* Add the exceptions */ - u.l[1] = (u.l[1] - | (excepts & FPSCR_STICKY_BITS) - /* Turn FE_INVALID into FE_INVALID_SOFTWARE. */ - | (excepts >> ((31 - FPSCR_VX) - (31 - FPSCR_VXSOFT)) - & FE_INVALID_SOFTWARE)); - - /* Store the new status word (along with the rest of the environment), - triggering any appropriate exceptions. */ - fesetenv_register (u.fenv); - - if ((excepts & FE_INVALID) - /* For some reason, some PowerPC chips (the 601, in particular) - don't have FE_INVALID_SOFTWARE implemented. Detect this - case and raise FE_INVALID_SNAN instead. */ - && !fetestexcept (FE_INVALID)) - set_fpscr_bit (FPSCR_VXSNAN); -} diff --git a/sysdeps/powerpc/fsetexcptflg.c b/sysdeps/powerpc/fsetexcptflg.c deleted file mode 100644 index 347035e9d2..0000000000 --- a/sysdeps/powerpc/fsetexcptflg.c +++ /dev/null @@ -1,48 +0,0 @@ -/* Set floating-point environment exception handling. - Copyright (C) 1997 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 - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include - -void -fesetexceptflag (const fexcept_t *flagp, int excepts) -{ - fenv_union_t u; - fexcept_t flag; - - /* Get the current state. */ - u.fenv = fegetenv_register (); - - /* Ignore exceptions not listed in 'excepts'. */ - flag = *flagp & excepts; - - /* Replace the exception status */ - u.l[1] = ((u.l[1] & ~(FPSCR_STICKY_BITS & excepts)) - | (flag & FPSCR_STICKY_BITS) - | (flag >> ((31 - FPSCR_VX) - (31 - FPSCR_VXSOFT)) - & FE_INVALID_SOFTWARE)); - - /* Store the new status word (along with the rest of the environment). - This may cause floating-point exceptions if the restored state - requests it. */ - fesetenv_register (u.fenv); - - /* Deal with FE_INVALID_SOFTWARE not being implemented on some chips. */ - if (flag & FE_INVALID) - feraiseexcept(FE_INVALID); -} diff --git a/sysdeps/powerpc/ftestexcept.c b/sysdeps/powerpc/ftestexcept.c deleted file mode 100644 index 6cb8dd5e28..0000000000 --- a/sysdeps/powerpc/ftestexcept.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Test exception in current environment. - Copyright (C) 1997 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 - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include - -int -fetestexcept (int excepts) -{ - fenv_union_t u; - - /* Get the current state. */ - u.fenv = fegetenv_register (); - - /* The FE_INVALID bit is dealt with correctly by the hardware, so we can - just: */ - return u.l[1] & excepts; -} diff --git a/sysdeps/sparc/fpu/fclrexcpt.c b/sysdeps/sparc/fpu/fclrexcpt.c index 8dc68e84e9..89673962e2 100644 --- a/sysdeps/sparc/fpu/fclrexcpt.c +++ b/sysdeps/sparc/fpu/fclrexcpt.c @@ -1,5 +1,5 @@ /* Clear given exceptions in current floating-point environment. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 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 @@ -19,8 +19,8 @@ #include -void -feclearexcept (int excepts) +int +__feclearexcept (int excepts) { fenv_t tmp; @@ -29,4 +29,10 @@ feclearexcept (int excepts) tmp &= ~(excepts & FE_ALL_EXCEPT); __fenv_ldfsr (tmp); + + /* Success. */ + return 0; } +strong_alias (__feclearexcept, __old_feclearexcept) +symbol_version (__old_feclearexcept, feclearexcept, GLIBC_2.1); +default_symbol_version (__feclearexcept, feclearexcept, GLIBC_2.1.3); diff --git a/sysdeps/sparc/fpu/fegetenv.c b/sysdeps/sparc/fpu/fegetenv.c index a796ccb731..f526cdd9c5 100644 --- a/sysdeps/sparc/fpu/fegetenv.c +++ b/sysdeps/sparc/fpu/fegetenv.c @@ -1,5 +1,5 @@ /* Store current floating-point environment. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 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 @@ -19,8 +19,14 @@ #include -void -fegetenv (fenv_t *envp) +int +__fegetenv (fenv_t *envp) { __fenv_stfsr (*envp); + + /* Success. */ + return 0; } +strong_alias (__fegetenv, __old_fegetenv) +symbol_version (__old_fegetenv, fegetenv, GLIBC_2.1) +default_symbol_version (__fegetenv, fegetenv, GLIBC_2.1.3) diff --git a/sysdeps/sparc/fpu/fesetenv.c b/sysdeps/sparc/fpu/fesetenv.c index 44c5b2629c..85c695a505 100644 --- a/sysdeps/sparc/fpu/fesetenv.c +++ b/sysdeps/sparc/fpu/fesetenv.c @@ -1,5 +1,5 @@ /* Install given floating-point environment. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 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 @@ -19,8 +19,8 @@ #include -void -fesetenv (const fenv_t *envp) +int +__fesetenv (const fenv_t *envp) { fenv_t dummy; @@ -40,4 +40,10 @@ fesetenv (const fenv_t *envp) } __fenv_ldfsr (*envp); + + /* Success. */ + return 0; } +strong_alias (__fesetenv, __old_fesetenv) +symbol_version (__old_fesetenv, fesetenv, GLIBC_2.1); +default_symbol_version (__fesetenv, fesetenv, GLIBC_2.1.3); diff --git a/sysdeps/sparc/fpu/feupdateenv.c b/sysdeps/sparc/fpu/feupdateenv.c index 0fba9975f8..6fce23e0eb 100644 --- a/sysdeps/sparc/fpu/feupdateenv.c +++ b/sysdeps/sparc/fpu/feupdateenv.c @@ -1,5 +1,5 @@ /* Install given floating-point environment and raise exceptions. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 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 @@ -19,8 +19,8 @@ #include -void -feupdateenv (const fenv_t *envp) +int +__feupdateenv (const fenv_t *envp) { fexcept_t tmp; @@ -35,4 +35,10 @@ feupdateenv (const fenv_t *envp) defined format of the values in objects of type fexcept_t is the same as the ones specified using the FE_* constants. */ feraiseexcept ((int) tmp); + + /* Success. */ + return 0; } +strong_alias (__feupdateenv, __old_feupdateenv) +symbol_version (__old_feupdateenv, feupdateenv, GLIBC_2.1); +default_symbol_version (__feupdateenv, feupdateenv, GLIBC_2.1.3); diff --git a/sysdeps/sparc/fpu/fgetexcptflg.c b/sysdeps/sparc/fpu/fgetexcptflg.c index 977c93e2ca..2674d3ac84 100644 --- a/sysdeps/sparc/fpu/fgetexcptflg.c +++ b/sysdeps/sparc/fpu/fgetexcptflg.c @@ -1,5 +1,5 @@ /* Store current representation for exceptions. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 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 @@ -19,8 +19,8 @@ #include -void -fegetexceptflag (fexcept_t *flagp, int excepts) +int +__fegetexceptflag (fexcept_t *flagp, int excepts) { fexcept_t tmp; @@ -28,4 +28,10 @@ fegetexceptflag (fexcept_t *flagp, int excepts) __fenv_stfsr (tmp); *flagp = tmp & excepts & FE_ALL_EXCEPT; + + /* Success. */ + return 0; } +strong_alias (__fegetexceptflag, __old_fegetexceptflag) +symbol_version (__old_fegetexceptflag, fegetexceptflag, GLIBC_2.1); +default_symbol_version (__fegetexceptflag, fegetexceptflag, GLIBC_2.1.3); diff --git a/sysdeps/sparc/fpu/fraiseexcpt.c b/sysdeps/sparc/fpu/fraiseexcpt.c index 28db8b360a..4b0b848ff7 100644 --- a/sysdeps/sparc/fpu/fraiseexcpt.c +++ b/sysdeps/sparc/fpu/fraiseexcpt.c @@ -1,5 +1,5 @@ /* Raise given exceptions. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 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 @@ -20,8 +20,8 @@ #include #include -void -feraiseexcept (int excepts) +int +__feraiseexcept (int excepts) { static volatile double sink; static const struct { @@ -37,32 +37,28 @@ feraiseexcept (int excepts) /* First: invalid exception. */ if ((FE_INVALID & excepts) != 0) - { - /* One example of a invalid operation is 0/0. */ - sink = c.zero / c.zero; - } + /* One example of a invalid operation is 0/0. */ + sink = c.zero / c.zero; /* Next: division by zero. */ if ((FE_DIVBYZERO & excepts) != 0) - { - sink = c.one / c.zero; - } + sink = c.one / c.zero; /* Next: overflow. */ if ((FE_OVERFLOW & excepts) != 0) - { - sink = c.max * c.max; - } + sink = c.max * c.max; /* Next: underflow. */ if ((FE_UNDERFLOW & excepts) != 0) - { - sink = c.min / c.sixteen; - } + sink = c.min / c.sixteen; /* Last: inexact. */ if ((FE_INEXACT & excepts) != 0) - { - sink = c.one / c.pi; - } + sink = c.one / c.pi; + + /* Success. */ + return 0; } +strong_alias (__feraiseexcept, __old_feraiseexcept) +symbol_version (__old_feraiseexcept, feraiseexcept, GLIBC_2.1); +default_symbol_version (__feraiseexcept, feraiseexcept, GLIBC_2.1.3); diff --git a/sysdeps/sparc/fpu/fsetexcptflg.c b/sysdeps/sparc/fpu/fsetexcptflg.c index 1029cde03d..8d8a33b5e6 100644 --- a/sysdeps/sparc/fpu/fsetexcptflg.c +++ b/sysdeps/sparc/fpu/fsetexcptflg.c @@ -1,5 +1,5 @@ /* Set floating-point environment exception handling. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 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 @@ -20,8 +20,8 @@ #include #include -void -fesetexceptflag (const fexcept_t *flagp, int excepts) +int +__fesetexceptflag (const fexcept_t *flagp, int excepts) { fenv_t tmp; @@ -31,4 +31,10 @@ fesetexceptflag (const fexcept_t *flagp, int excepts) tmp |= *flagp & excepts & FE_ALL_EXCEPT; __fenv_ldfsr (tmp); + + /* Success. */ + return 0; } +strong_alias (__fesetexceptflag, __old_fesetexceptflag) +symbol_version (__old_fesetexceptflag, fesetexceptflag, GLIBC_2.1); +default_symbol_version (__fesetexceptflag, fesetexceptflag, GLIBC_2.1.3); diff --git a/sysdeps/sparc/sparc32/dl-machine.h b/sysdeps/sparc/sparc32/dl-machine.h index e6debe05ac..8750791fe0 100644 --- a/sysdeps/sparc/sparc32/dl-machine.h +++ b/sysdeps/sparc/sparc32/dl-machine.h @@ -56,7 +56,9 @@ elf_machine_matches_host (Elf32_Half e_machine) weak_extern (_dl_hwcap_mask); hwcap = WEAKADDR(_dl_hwcap); - return hwcap && (*hwcap & _dl_hwcap_mask & HWCAP_SPARC_V9); + /* XXX The following is wrong! Dave Miller rejected to implement it + correctly. If this causes problems shoot *him*! */ + return hwcap == NULL || (*hwcap & _dl_hwcap_mask & HWCAP_SPARC_V9); } else return 0; diff --git a/sysdeps/sparc/sparc64/fpu/bits/huge_val.h b/sysdeps/sparc/sparc64/fpu/bits/huge_val.h index 788527477c..cd93257cbd 100644 --- a/sysdeps/sparc/sparc64/fpu/bits/huge_val.h +++ b/sysdeps/sparc/sparc64/fpu/bits/huge_val.h @@ -54,9 +54,9 @@ static __huge_val_t __huge_val = { __HUGE_VAL_bytes }; #endif /* GCC. */ -/* ISO C 9X extensions: (float) HUGE_VALF and (long double) HUGE_VALL. */ +/* ISO C99 extensions: (float) HUGE_VALF and (long double) HUGE_VALL. */ -#ifdef __USE_ISOC9X +#ifdef __USE_ISOC99 # if __GNUC_PREREQ(2,95) @@ -119,4 +119,4 @@ static __huge_vall_t __huge_vall = { __HUGE_VALL_bytes }; # endif /* GCC 2.95. */ -#endif /* __USE_ISOC9X. */ +#endif /* __USE_ISOC99. */ diff --git a/sysdeps/unix/sysv/linux/sparc/bits/sigaction.h b/sysdeps/unix/sysv/linux/sparc/bits/sigaction.h index 0797a5cbf4..d00990569f 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/sigaction.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/sigaction.h @@ -1,5 +1,5 @@ /* The proper definitions for Linux/SPARC sigaction. - Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998, 1999 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 @@ -24,8 +24,21 @@ /* Structure describing the action to be taken when a signal arrives. */ struct sigaction { - /* Signal handler. */ + /* Signal handler. */ +#ifdef __USE_POSIX199309 + union + { + /* Used if SA_SIGINFO is not set. */ + __sighandler_t sa_handler; + /* Used if SA_SIGINFO is set. */ + void (*sa_sigaction) (int, siginfo_t *, void *); + } + __sigaction_handler; +# define sa_handler __sigaction_handler.sa_handler +# define sa_sigaction __sigaction_handler.sa_sigaction +#else __sighandler_t sa_handler; +#endif /* Additional set of signals to be blocked. */ __sigset_t sa_mask; diff --git a/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h b/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h index 03ec8ae791..58295ff5b1 100644 --- a/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h @@ -85,7 +85,7 @@ typedef struct ucontext { mcontext_t uc_mcontext; } ucontext_t; -#else /* __WORDSIZE == 32 */ +#endif /* __WORDISIZE == 64 */ /* * Location of the users' stored registers relative to R0. @@ -117,11 +117,24 @@ typedef struct ucontext { * treats arrays and structures as parameters. * * Note that NGREG is really (sizeof (struct regs) / sizeof (greg_t)), - * but that the ABI defines it absolutely to be 19. + * but that the ABI defines it absolutely to be 21 (resp. 19). */ -#define NGREG 19 +#if __WORDSIZE == 64 + +#define REG_ASI (19) +#define REG_FPRS (20) + +#define NGREG 21 +typedef long greg_t; + +#else /* __WORDSIZE == 32 */ + +#define NGREG 19 typedef int greg_t; + +#endif /* __WORDSIZE == 32 */ + typedef greg_t gregset_t[NGREG]; /* @@ -182,6 +195,24 @@ struct fq #define V9_FPU_FSR_TYPE unsigned long long #define V9_FPU_FPRS_TYPE unsigned +#if __WORDSIZE == 64 + +typedef struct fpu + { + union { /* FPU floating point regs */ + unsigned fpu_regs[32]; /* 32 singles */ + double fpu_dregs[16]; /* 32 doubles */ + long double fpu_qregs[16]; /* 16 quads */ + } fpu_fr; + struct fq *fpu_q; /* ptr to array of FQ entries */ + unsigned long fpu_fsr; /* FPU status register */ + unsigned char fpu_qcnt; /* # of entries in saved FQ */ + unsigned char fpu_q_entrysize; /* # of bytes per FQ entry */ + unsigned char fpu_en; /* flag signifying fpu in use */ + } fpregset_t; + +#else /* __WORDSIZE == 32 */ + typedef struct fpu { union { /* FPU floating point regs */ -- cgit 1.4.1