diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2015-10-09 11:33:30 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2015-10-09 11:42:10 -0700 |
commit | 4b71ce6c1a50c14c758f1dd7a2943f2ab9760e85 (patch) | |
tree | f5b4c1583cd758301d678976a78071f829f5b6a9 /sysdeps/x86_64/fpu/s_llrintf.S | |
parent | 0fcc93bce950c8d0c440eee3f968fbeec22db784 (diff) | |
download | glibc-4b71ce6c1a50c14c758f1dd7a2943f2ab9760e85.tar glibc-4b71ce6c1a50c14c758f1dd7a2943f2ab9760e85.tar.gz glibc-4b71ce6c1a50c14c758f1dd7a2943f2ab9760e85.tar.bz2 glibc-4b71ce6c1a50c14c758f1dd7a2943f2ab9760e85.zip |
Update lrint/lrintf/lrintl for x32
The x86_64 versions of lrint/lrintf/ lrintl are aliases for the long
long versions which isn't correct for x32, where exceptions must respect
overflow for 32-bit long. Separate versions of the long functions for
x32 that convert to 32-bit long and raise the right exceptions for that
conversion, while keeping the aliases in the non-x32 case.
Tested on x86_64 and x32. There are no code changes in libm.so on
x86_64.
* sysdeps/x86_64/fpu/s_llrint.S (__lrint): Add alias only if
__ILP32__ isn't defined.
(lrint): Likewise.
* sysdeps/x86_64/fpu/s_llrintf.S (__lrintf): Likewise.
(lrintf): Likewise.
* sysdeps/x86_64/fpu/s_llrintl.S (__lrintl): Likewise.
(lrintl): Likewise.
* sysdeps/x86_64/x32/fpu/s_lrint.S: New file.
* sysdeps/x86_64/x32/fpu/s_lrintf.S: Likewise.
* sysdeps/x86_64/x32/fpu/s_lrintl.S: Likewise.
Diffstat (limited to 'sysdeps/x86_64/fpu/s_llrintf.S')
-rw-r--r-- | sysdeps/x86_64/fpu/s_llrintf.S | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sysdeps/x86_64/fpu/s_llrintf.S b/sysdeps/x86_64/fpu/s_llrintf.S index 6825511a57..a2e763c9ea 100644 --- a/sysdeps/x86_64/fpu/s_llrintf.S +++ b/sysdeps/x86_64/fpu/s_llrintf.S @@ -26,5 +26,7 @@ ENTRY(__llrintf) ret END(__llrintf) weak_alias (__llrintf, llrintf) +#ifndef __ILP32__ strong_alias (__llrintf, __lrintf) weak_alias (__llrintf, lrintf) +#endif |