From patchwork Tue Nov 28 01:19:43 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joseph Myers X-Patchwork-Id: 24568 Received: (qmail 78073 invoked by alias); 28 Nov 2017 01:19:53 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 78063 invoked by uid 89); 28 Nov 2017 01:19:52 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.3 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_SHORT, KB_WAM_FROM_NAME_SINGLEWORD, RCVD_IN_DNSWL_NONE, SPF_PASS, URIBL_RED autolearn=ham version=3.3.2 spammy= X-HELO: relay1.mentorg.com Date: Tue, 28 Nov 2017 01:19:43 +0000 From: Joseph Myers To: Subject: Use libm_alias_float for alpha [committed] Message-ID: User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 X-ClientProxiedBy: svr-ies-mbx-01.mgc.mentorg.com (139.181.222.1) To SVR-IES-MBX-04.mgc.mentorg.com (139.181.222.4) Continuing the preparation for additional _FloatN / _FloatNx function aliases, this patch makes alpha libm function implementations use libm_alias_float macros to define function aliases. In the case of the ABI compatibility for complex functions, libm_alias_float_other is used, with the cfloat_versions macro adjusted to take a function name argument without the trailing 'f' to facilitate this, and cfloat_versions dealing with calling libm_alias_float_other (except for clog10f, which doesn't use that macro because of the complexity associated with __clog10f also being exported). Tested with build-many-glibcs.py for alpha-linux-gnu that installed stripped shared libraries are unchanged by the patch. Committed. 2017-11-28 Joseph Myers * sysdeps/alpha/fpu/cfloat-compat.h: Include . (cfloat_versions): Take function argument without trailing 'f'. Call libm_alias_float_other. * sysdeps/alpha/fpu/cabsf.c: Update call to cfloat_versions. * sysdeps/alpha/fpu/cargf.c: Likewise. * sysdeps/alpha/fpu/cimagf.c: Likewise. * sysdeps/alpha/fpu/conjf.c: Likewise. * sysdeps/alpha/fpu/crealf.c: Likewise. * sysdeps/alpha/fpu/s_cacosf.c: Likewise. * sysdeps/alpha/fpu/s_cacoshf.c: Likewise. * sysdeps/alpha/fpu/s_casinf.c: Likewise. * sysdeps/alpha/fpu/s_casinhf.c: Likewise. * sysdeps/alpha/fpu/s_catanf.c: Likewise. * sysdeps/alpha/fpu/s_catanhf.c: Likewise. * sysdeps/alpha/fpu/s_ccosf.c: Likewise. * sysdeps/alpha/fpu/s_ccoshf.c: Likewise. * sysdeps/alpha/fpu/s_cexpf.c: Likewise. * sysdeps/alpha/fpu/s_clogf.c: Likewise. * sysdeps/alpha/fpu/s_cpowf.c: Likewise. * sysdeps/alpha/fpu/s_cprojf.c: Likewise. * sysdeps/alpha/fpu/s_csinf.c: Likewise. * sysdeps/alpha/fpu/s_csinhf.c: Likewise. * sysdeps/alpha/fpu/s_csqrtf.c: Likewise. * sysdeps/alpha/fpu/s_ctanf.c: Likewise. * sysdeps/alpha/fpu/s_ctanhf.c: Likewise. * sysdeps/alpha/fpu/s_clog10f.c: Include . (clog10f): Use libm_alias_float_other. * sysdeps/alpha/fpu/s_ceilf.c: Include . (ceilf): Define using libm_alias_float. * sysdeps/alpha/fpu/s_copysignf.c: Include . (copysignf): Define using libm_alias_float. * sysdeps/alpha/fpu/s_fabsf.c: Include . (fabsf): Define using libm_alias_float. * sysdeps/alpha/fpu/s_floorf.c: Include . (floorf): Define using libm_alias_float. * sysdeps/alpha/fpu/s_fmax.S: Include . (fmaxf): Define using libm_alias_float. * sysdeps/alpha/fpu/s_fmin.S: Include . (fminf): Define using libm_alias_float. * sysdeps/alpha/fpu/s_lrintf.c: Include . (lrintf): Define using libm_alias_float. (llrintf): Likewise. * sysdeps/alpha/fpu/s_lroundf.c: Include . (lroundf): Define using libm_alias_float. (llroundf): Likewise. * sysdeps/alpha/fpu/s_rintf.c: Include . (rintf): Define using libm_alias_float. * sysdeps/alpha/fpu/s_truncf.c: Include . (truncf): Define using libm_alias_float. diff --git a/sysdeps/alpha/fpu/cabsf.c b/sysdeps/alpha/fpu/cabsf.c index 2ffd6a3..85f69c5 100644 --- a/sysdeps/alpha/fpu/cabsf.c +++ b/sysdeps/alpha/fpu/cabsf.c @@ -38,4 +38,4 @@ __c2_cabsf (c2_cfloat_decl (z)) return __hypotf (c2_cfloat_real (z), c2_cfloat_imag (z)); } -cfloat_versions (cabsf); +cfloat_versions (cabs); diff --git a/sysdeps/alpha/fpu/cargf.c b/sysdeps/alpha/fpu/cargf.c index 6bff8a5..d6fc6b7 100644 --- a/sysdeps/alpha/fpu/cargf.c +++ b/sysdeps/alpha/fpu/cargf.c @@ -38,4 +38,4 @@ __c2_cargf (c2_cfloat_decl (x)) return __atan2f (c2_cfloat_imag (x), c2_cfloat_real (x)); } -cfloat_versions (cargf); +cfloat_versions (carg); diff --git a/sysdeps/alpha/fpu/cfloat-compat.h b/sysdeps/alpha/fpu/cfloat-compat.h index 484cdd0..17b374c 100644 --- a/sysdeps/alpha/fpu/cfloat-compat.h +++ b/sysdeps/alpha/fpu/cfloat-compat.h @@ -43,6 +43,7 @@ typedef union { double d; _Complex float cf; } c1_compat; /* Get the proper symbol versions defined for each function. */ #include +#include #if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_3_4) #define cfloat_versions_compat(func) \ @@ -52,7 +53,8 @@ typedef union { double d; _Complex float cf; } c1_compat; #endif #define cfloat_versions(func) \ - cfloat_versions_compat(func); \ - versioned_symbol (libm, __c2_##func, func, GLIBC_2_3_4); \ - extern typeof(__c2_##func) __##func attribute_hidden; \ - strong_alias (__c2_##func, __##func) + cfloat_versions_compat(func##f); \ + versioned_symbol (libm, __c2_##func##f, func##f, GLIBC_2_3_4); \ + extern typeof(__c2_##func##f) __##func##f attribute_hidden; \ + strong_alias (__c2_##func##f, __##func##f); \ + libm_alias_float_other (__##func, func) diff --git a/sysdeps/alpha/fpu/cimagf.c b/sysdeps/alpha/fpu/cimagf.c index 6318f12..0a88e24 100644 --- a/sysdeps/alpha/fpu/cimagf.c +++ b/sysdeps/alpha/fpu/cimagf.c @@ -37,4 +37,4 @@ __c2_cimagf (c2_cfloat_decl (z)) return c2_cfloat_imag (z); } -cfloat_versions (cimagf); +cfloat_versions (cimag); diff --git a/sysdeps/alpha/fpu/conjf.c b/sysdeps/alpha/fpu/conjf.c index 802898a..345df46 100644 --- a/sysdeps/alpha/fpu/conjf.c +++ b/sysdeps/alpha/fpu/conjf.c @@ -39,4 +39,4 @@ __c2_conjf (c2_cfloat_decl (z)) return c2_cfloat_return (r); } -cfloat_versions (conjf); +cfloat_versions (conj); diff --git a/sysdeps/alpha/fpu/crealf.c b/sysdeps/alpha/fpu/crealf.c index fdaaf2e..9300e13 100644 --- a/sysdeps/alpha/fpu/crealf.c +++ b/sysdeps/alpha/fpu/crealf.c @@ -37,4 +37,4 @@ __c2_crealf (c2_cfloat_decl (z)) return c2_cfloat_real (z); } -cfloat_versions (crealf); +cfloat_versions (creal); diff --git a/sysdeps/alpha/fpu/s_cacosf.c b/sysdeps/alpha/fpu/s_cacosf.c index e06b063..7d20f4a 100644 --- a/sysdeps/alpha/fpu/s_cacosf.c +++ b/sysdeps/alpha/fpu/s_cacosf.c @@ -54,4 +54,4 @@ __c2_cacosf (c2_cfloat_decl (x)) return c2_cfloat_return (r); } -cfloat_versions (cacosf); +cfloat_versions (cacos); diff --git a/sysdeps/alpha/fpu/s_cacoshf.c b/sysdeps/alpha/fpu/s_cacoshf.c index d67cffb..564c4a0 100644 --- a/sysdeps/alpha/fpu/s_cacoshf.c +++ b/sysdeps/alpha/fpu/s_cacoshf.c @@ -53,4 +53,4 @@ __c2_cacoshf (c2_cfloat_decl (x)) return c2_cfloat_return (r); } -cfloat_versions (cacoshf); +cfloat_versions (cacosh); diff --git a/sysdeps/alpha/fpu/s_casinf.c b/sysdeps/alpha/fpu/s_casinf.c index 1baa1d4..fb71a5a 100644 --- a/sysdeps/alpha/fpu/s_casinf.c +++ b/sysdeps/alpha/fpu/s_casinf.c @@ -51,4 +51,4 @@ __c2_casinf (c2_cfloat_decl (x)) return c2_cfloat_return (r); } -cfloat_versions (casinf); +cfloat_versions (casin); diff --git a/sysdeps/alpha/fpu/s_casinhf.c b/sysdeps/alpha/fpu/s_casinhf.c index 4cb3a2f..df87977 100644 --- a/sysdeps/alpha/fpu/s_casinhf.c +++ b/sysdeps/alpha/fpu/s_casinhf.c @@ -51,4 +51,4 @@ __c2_casinhf (c2_cfloat_decl (x)) return c2_cfloat_return (r); } -cfloat_versions (casinhf); +cfloat_versions (casinh); diff --git a/sysdeps/alpha/fpu/s_catanf.c b/sysdeps/alpha/fpu/s_catanf.c index 6d928e0..885d74d 100644 --- a/sysdeps/alpha/fpu/s_catanf.c +++ b/sysdeps/alpha/fpu/s_catanf.c @@ -51,4 +51,4 @@ __c2_catanf (c2_cfloat_decl (x)) return c2_cfloat_return (r); } -cfloat_versions (catanf); +cfloat_versions (catan); diff --git a/sysdeps/alpha/fpu/s_catanhf.c b/sysdeps/alpha/fpu/s_catanhf.c index d8942a0..57a2776 100644 --- a/sysdeps/alpha/fpu/s_catanhf.c +++ b/sysdeps/alpha/fpu/s_catanhf.c @@ -51,4 +51,4 @@ __c2_catanhf (c2_cfloat_decl (x)) return c2_cfloat_return (r); } -cfloat_versions (catanhf); +cfloat_versions (catanh); diff --git a/sysdeps/alpha/fpu/s_ccosf.c b/sysdeps/alpha/fpu/s_ccosf.c index abc7f10..7f9086b 100644 --- a/sysdeps/alpha/fpu/s_ccosf.c +++ b/sysdeps/alpha/fpu/s_ccosf.c @@ -51,4 +51,4 @@ __c2_ccosf (c2_cfloat_decl (x)) return c2_cfloat_return (r); } -cfloat_versions (ccosf); +cfloat_versions (ccos); diff --git a/sysdeps/alpha/fpu/s_ccoshf.c b/sysdeps/alpha/fpu/s_ccoshf.c index 65deabd..b0e90af 100644 --- a/sysdeps/alpha/fpu/s_ccoshf.c +++ b/sysdeps/alpha/fpu/s_ccoshf.c @@ -51,4 +51,4 @@ __c2_ccoshf (c2_cfloat_decl (x)) return c2_cfloat_return (r); } -cfloat_versions (ccoshf); +cfloat_versions (ccosh); diff --git a/sysdeps/alpha/fpu/s_ceilf.c b/sysdeps/alpha/fpu/s_ceilf.c index 8c76c65..5592428 100644 --- a/sysdeps/alpha/fpu/s_ceilf.c +++ b/sysdeps/alpha/fpu/s_ceilf.c @@ -17,6 +17,7 @@ . */ #include +#include /* Use the -inf rounding mode conversion instructions to implement ceil, via something akin to -floor(-x). This is much faster than @@ -50,4 +51,4 @@ __ceilf (float x) return x; } -weak_alias (__ceilf, ceilf) +libm_alias_float (__ceil, ceil) diff --git a/sysdeps/alpha/fpu/s_cexpf.c b/sysdeps/alpha/fpu/s_cexpf.c index 64daf68..c805422 100644 --- a/sysdeps/alpha/fpu/s_cexpf.c +++ b/sysdeps/alpha/fpu/s_cexpf.c @@ -51,4 +51,4 @@ __c2_cexpf (c2_cfloat_decl (x)) return c2_cfloat_return (r); } -cfloat_versions (cexpf); +cfloat_versions (cexp); diff --git a/sysdeps/alpha/fpu/s_clog10f.c b/sysdeps/alpha/fpu/s_clog10f.c index 0646a09..018c699 100644 --- a/sysdeps/alpha/fpu/s_clog10f.c +++ b/sysdeps/alpha/fpu/s_clog10f.c @@ -21,6 +21,7 @@ #include #include +#include #undef __clog10f #undef clog10f @@ -62,3 +63,4 @@ compat_symbol (libm, __c1_clog10f_2, __clog10f, GLIBC_2_1); versioned_symbol (libm, __c2_clog10f, clog10f, GLIBC_2_3_4); extern typeof(__c2_clog10f) __clog10f attribute_hidden; strong_alias (__c2_clog10f, __clog10f) +libm_alias_float_other (__c2_clog10, clog10) diff --git a/sysdeps/alpha/fpu/s_clogf.c b/sysdeps/alpha/fpu/s_clogf.c index 1a7e234..f8af705 100644 --- a/sysdeps/alpha/fpu/s_clogf.c +++ b/sysdeps/alpha/fpu/s_clogf.c @@ -51,4 +51,4 @@ __c2_clogf (c2_cfloat_decl (x)) return c2_cfloat_return (r); } -cfloat_versions (clogf); +cfloat_versions (clog); diff --git a/sysdeps/alpha/fpu/s_copysignf.c b/sysdeps/alpha/fpu/s_copysignf.c index 90b2012..488015f 100644 --- a/sysdeps/alpha/fpu/s_copysignf.c +++ b/sysdeps/alpha/fpu/s_copysignf.c @@ -17,6 +17,7 @@ . */ #include +#include float __copysignf (float x, float y) @@ -24,4 +25,4 @@ __copysignf (float x, float y) return __builtin_copysignf (x, y); } -weak_alias (__copysignf, copysignf) +libm_alias_float (__copysign, copysign) diff --git a/sysdeps/alpha/fpu/s_cpowf.c b/sysdeps/alpha/fpu/s_cpowf.c index dacf0e1..2db5337 100644 --- a/sysdeps/alpha/fpu/s_cpowf.c +++ b/sysdeps/alpha/fpu/s_cpowf.c @@ -51,4 +51,4 @@ __c2_cpowf (c2_cfloat_decl (x), c2_cfloat_decl (c)) return c2_cfloat_return (r); } -cfloat_versions (cpowf); +cfloat_versions (cpow); diff --git a/sysdeps/alpha/fpu/s_cprojf.c b/sysdeps/alpha/fpu/s_cprojf.c index 316cc1f..c8cf59b 100644 --- a/sysdeps/alpha/fpu/s_cprojf.c +++ b/sysdeps/alpha/fpu/s_cprojf.c @@ -51,4 +51,4 @@ __c2_cprojf (c2_cfloat_decl (x)) return c2_cfloat_return (r); } -cfloat_versions (cprojf); +cfloat_versions (cproj); diff --git a/sysdeps/alpha/fpu/s_csinf.c b/sysdeps/alpha/fpu/s_csinf.c index f884d29..9dbdacc 100644 --- a/sysdeps/alpha/fpu/s_csinf.c +++ b/sysdeps/alpha/fpu/s_csinf.c @@ -51,4 +51,4 @@ __c2_csinf (c2_cfloat_decl (x)) return c2_cfloat_return (r); } -cfloat_versions (csinf); +cfloat_versions (csin); diff --git a/sysdeps/alpha/fpu/s_csinhf.c b/sysdeps/alpha/fpu/s_csinhf.c index 071ff12..3e4ebae 100644 --- a/sysdeps/alpha/fpu/s_csinhf.c +++ b/sysdeps/alpha/fpu/s_csinhf.c @@ -51,4 +51,4 @@ __c2_csinhf (c2_cfloat_decl (x)) return c2_cfloat_return (r); } -cfloat_versions (csinhf); +cfloat_versions (csinh); diff --git a/sysdeps/alpha/fpu/s_csqrtf.c b/sysdeps/alpha/fpu/s_csqrtf.c index 0611f09..c5f9fc6 100644 --- a/sysdeps/alpha/fpu/s_csqrtf.c +++ b/sysdeps/alpha/fpu/s_csqrtf.c @@ -51,4 +51,4 @@ __c2_csqrtf (c2_cfloat_decl (x)) return c2_cfloat_return (r); } -cfloat_versions (csqrtf); +cfloat_versions (csqrt); diff --git a/sysdeps/alpha/fpu/s_ctanf.c b/sysdeps/alpha/fpu/s_ctanf.c index 7288db2..b47490a 100644 --- a/sysdeps/alpha/fpu/s_ctanf.c +++ b/sysdeps/alpha/fpu/s_ctanf.c @@ -51,4 +51,4 @@ __c2_ctanf (c2_cfloat_decl (x)) return c2_cfloat_return (r); } -cfloat_versions (ctanf); +cfloat_versions (ctan); diff --git a/sysdeps/alpha/fpu/s_ctanhf.c b/sysdeps/alpha/fpu/s_ctanhf.c index fc0a5f6..70ffc6e 100644 --- a/sysdeps/alpha/fpu/s_ctanhf.c +++ b/sysdeps/alpha/fpu/s_ctanhf.c @@ -51,4 +51,4 @@ __c2_ctanhf (c2_cfloat_decl (x)) return c2_cfloat_return (r); } -cfloat_versions (ctanhf); +cfloat_versions (ctanh); diff --git a/sysdeps/alpha/fpu/s_fabsf.c b/sysdeps/alpha/fpu/s_fabsf.c index 5b1105c..3af3c1e 100644 --- a/sysdeps/alpha/fpu/s_fabsf.c +++ b/sysdeps/alpha/fpu/s_fabsf.c @@ -17,6 +17,7 @@ . */ #include +#include float __fabsf (float x) @@ -24,4 +25,4 @@ __fabsf (float x) return __builtin_fabsf (x); } -weak_alias (__fabsf, fabsf) +libm_alias_float (__fabs, fabs) diff --git a/sysdeps/alpha/fpu/s_floorf.c b/sysdeps/alpha/fpu/s_floorf.c index 79cae27..e3055b2 100644 --- a/sysdeps/alpha/fpu/s_floorf.c +++ b/sysdeps/alpha/fpu/s_floorf.c @@ -17,6 +17,7 @@ . */ #include +#include /* Use the -inf rounding mode conversion instructions to implement @@ -51,4 +52,4 @@ __floorf (float x) return x; } -weak_alias (__floorf, floorf) +libm_alias_float (__floor, floor) diff --git a/sysdeps/alpha/fpu/s_fmax.S b/sysdeps/alpha/fpu/s_fmax.S index d6c2759..5da9e0d 100644 --- a/sysdeps/alpha/fpu/s_fmax.S +++ b/sysdeps/alpha/fpu/s_fmax.S @@ -18,6 +18,7 @@ #include #include +#include #include .set noat @@ -46,6 +47,6 @@ END (__fmax) /* Given the in-register format of single-precision, this works there too. */ strong_alias (__fmax, __fmaxf) -weak_alias (__fmaxf, fmaxf) +libm_alias_float (__fmax, fmax) libm_alias_double (__fmax, fmax) diff --git a/sysdeps/alpha/fpu/s_fmin.S b/sysdeps/alpha/fpu/s_fmin.S index 6da4a93..d752223 100644 --- a/sysdeps/alpha/fpu/s_fmin.S +++ b/sysdeps/alpha/fpu/s_fmin.S @@ -18,6 +18,7 @@ #include #include +#include #include .set noat @@ -46,6 +47,6 @@ END (__fmin) /* Given the in-register format of single-precision, this works there too. */ strong_alias (__fmin, __fminf) -weak_alias (__fminf, fminf) +libm_alias_float (__fmin, fmin) libm_alias_double (__fmin, fmin) diff --git a/sysdeps/alpha/fpu/s_lrintf.c b/sysdeps/alpha/fpu/s_lrintf.c index cfcf35c..c96cf28 100644 --- a/sysdeps/alpha/fpu/s_lrintf.c +++ b/sysdeps/alpha/fpu/s_lrintf.c @@ -18,6 +18,7 @@ #define __llrintf not___llrintf #define llrintf not_llrintf #include +#include #undef __llrintf #undef llrintf @@ -34,5 +35,5 @@ __lrintf (float x) } strong_alias (__lrintf, __llrintf) -weak_alias (__lrintf, lrintf) -weak_alias (__llrintf, llrintf) +libm_alias_float (__lrint, lrint) +libm_alias_float (__llrint, llrint) diff --git a/sysdeps/alpha/fpu/s_lroundf.c b/sysdeps/alpha/fpu/s_lroundf.c index 37df9442..695c41c 100644 --- a/sysdeps/alpha/fpu/s_lroundf.c +++ b/sysdeps/alpha/fpu/s_lroundf.c @@ -18,6 +18,7 @@ #define __llroundf not___llroundf #define llroundf not_llroundf #include +#include #undef __llroundf #undef llroundf @@ -33,5 +34,5 @@ __lroundf (float x) } strong_alias (__lroundf, __llroundf) -weak_alias (__lroundf, lroundf) -weak_alias (__llroundf, llroundf) +libm_alias_float (__lround, lround) +libm_alias_float (__llround, llround) diff --git a/sysdeps/alpha/fpu/s_rintf.c b/sysdeps/alpha/fpu/s_rintf.c index b6e8d2d..e99c486 100644 --- a/sysdeps/alpha/fpu/s_rintf.c +++ b/sysdeps/alpha/fpu/s_rintf.c @@ -17,6 +17,7 @@ . */ #include +#include float @@ -47,4 +48,4 @@ __rintf (float x) return x; } -weak_alias (__rintf, rintf) +libm_alias_float (__rint, rint) diff --git a/sysdeps/alpha/fpu/s_truncf.c b/sysdeps/alpha/fpu/s_truncf.c index ca47fdc..4f7528e 100644 --- a/sysdeps/alpha/fpu/s_truncf.c +++ b/sysdeps/alpha/fpu/s_truncf.c @@ -17,6 +17,7 @@ . */ #include +#include /* Use the chopped rounding mode conversion instructions to implement trunc. */ @@ -40,4 +41,4 @@ __truncf (float x) return copysignf (r, x); } -weak_alias (__truncf, truncf) +libm_alias_float (__trunc, trunc)