diff options
author | Joseph Myers <joseph@codesourcery.com> | 2015-10-13 00:52:54 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2015-10-13 00:52:54 +0000 |
commit | e8dab9477f33ab7a67405f4e147cbaa1a4bb443b (patch) | |
tree | f9a6edfe0acaaa15b4c8a42daad0ef31510e5994 /ChangeLog | |
parent | 5b1766a0cde255eff9868a9eeb49f66a89842cb8 (diff) | |
download | glibc-e8dab9477f33ab7a67405f4e147cbaa1a4bb443b.tar.gz glibc-e8dab9477f33ab7a67405f4e147cbaa1a4bb443b.tar.xz glibc-e8dab9477f33ab7a67405f4e147cbaa1a4bb443b.zip |
Fix powerpc32 llrint, llrintf bad exceptions (bug 16422).
The versions of llrint and llrintf for older powerpc32 processors convert the results of __rint / __rintf to long long int, resulting in spurious exceptions from such casts in certain cases. This patch makes glibc work around the problems with the libgcc conversions when the compiler used to build glibc doesn't use the fctidz instruction for them. Tested for powerpc. [BZ #16422] * sysdeps/powerpc/powerpc32/fpu/configure.ac (libc_cv_ppc_fctidz): New configure test. * sysdeps/powerpc/powerpc32/fpu/configure: Regenerated. * config.h.in [_LIBC] (HAVE_PPC_FCTIDZ): New macro. * sysdeps/powerpc/powerpc32/fpu/s_llrint.c: Include <limits.h>, <math_private.h> and <stdint.h>. (__llrint): Avoid conversions to long long int where those might raise spurious exceptions. * sysdeps/powerpc/powerpc32/fpu/s_llrintf.c: Include <math_private.h> and <stdint.h>. (__llrintf): Avoid conversions to long long int where those might raise spurious exceptions.
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index 00e1cc5827..fe606d6134 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2015-10-13 Joseph Myers <joseph@codesourcery.com> + + [BZ #16422] + * sysdeps/powerpc/powerpc32/fpu/configure.ac (libc_cv_ppc_fctidz): + New configure test. + * sysdeps/powerpc/powerpc32/fpu/configure: Regenerated. + * config.h.in [_LIBC] (HAVE_PPC_FCTIDZ): New macro. + * sysdeps/powerpc/powerpc32/fpu/s_llrint.c: Include <limits.h>, + <math_private.h> and <stdint.h>. + (__llrint): Avoid conversions to long long int where those might + raise spurious exceptions. + * sysdeps/powerpc/powerpc32/fpu/s_llrintf.c: Include + <math_private.h> and <stdint.h>. + (__llrintf): Avoid conversions to long long int where those might + raise spurious exceptions. + 2015-10-12 Andreas Schwab <schwab@suse.de> [BZ #18969] |