Split __kernel_standard* functions (fixes bug 17724).
authorJoseph Myers <joseph@codesourcery.com>
Mon, 22 Dec 2014 18:45:50 +0000 (18:45 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Mon, 22 Dec 2014 18:45:50 +0000 (18:45 +0000)
commitf56f91245a0a5aa0facaa14b5608cfb761df7c38
tree22f4e47bc078aa8e74c5943bcb75422fed2518a4
parent9d1fc928a4c3ab15b46945b0abdf7054a75cc010
Split __kernel_standard* functions (fixes bug 17724).

Bug 17724 reports references to fesetround being brought in by
ldbl-128ibm rintl via references to __rintl from __kernel_standard_l.
Because all three __kernel_standard* functions are in the same file,
this gets brought in even though only the long double version
__kernel_standard_l needs __rintl, and the C90 functions use only
__kernel_standard.

This patch fixes this by splitting the three versions into separate
files; it's fine for long double functions to refer to fe* functions
directly, unless they get called by C90 double functions.

Tested for x86_64 (testsuite; the reordering of code means disassembly
of shared libraries can't usefully be compared).  Tested for powerpc
that the relevant issue disappears from the linknamespace test
output.

[BZ #17724]
* sysdeps/ieee754/k_standard.c: Don't include <float.h>.
(__kernel_standard_f): Remove.  Moved to k_standardf.c.
(__kernel_standard_l): Remove.  Moved to k_standardl.c with
(char *) casts added.
* sysdeps/ieee754/k_standardf.c: New file.
* sysdeps/ieee754/k_standardl.c: Likewise.
* math/Makefile (libm-support): Remove k_standard.
(libm-calls): Add k_standard.
ChangeLog
NEWS
math/Makefile
sysdeps/ieee754/k_standard.c
sysdeps/ieee754/k_standardf.c [new file with mode: 0644]
sysdeps/ieee754/k_standardl.c [new file with mode: 0644]