From f56f91245a0a5aa0facaa14b5608cfb761df7c38 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Mon, 22 Dec 2014 18:45:50 +0000 Subject: 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 . (__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. --- math/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'math') diff --git a/math/Makefile b/math/Makefile index 866bc0fe6f..276a207156 100644 --- a/math/Makefile +++ b/math/Makefile @@ -36,7 +36,7 @@ aux := setfpucw fpu_control extra-libs := libm extra-libs-others = $(extra-libs) -libm-support = k_standard s_lib_version s_matherr s_signgam \ +libm-support = s_lib_version s_matherr s_signgam \ fclrexcpt fgetexcptflg fraiseexcpt fsetexcptflg \ ftestexcept fegetround fesetround fegetenv feholdexcpt \ fesetenv feupdateenv t_exp fedisblxcpt feenablxcpt \ @@ -61,7 +61,7 @@ libm-calls = e_acos e_acosh e_asin e_atan2 e_atanh e_cosh e_exp e_fmod \ s_casinh s_cacosh s_catanh s_csqrt s_cpow s_cproj s_clog10 \ s_fma s_lrint s_llrint s_lround s_llround e_exp10 w_log2 \ s_isinf_ns s_issignaling $(calls:s_%=m_%) x2y2m1 k_casinh \ - gamma_product + gamma_product k_standard dbl-only-routines := branred doasin dosincos halfulp mpa mpatan2 \ mpatan mpexp mplog mpsqrt mptan sincos32 slowexp \ -- cgit v1.2.3