From a8dce6197a646fcf870dd2e87069eba3c99099e1 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Mon, 9 Oct 2017 22:04:18 +0000 Subject: Use generic macros for lgamma_r function aliases. Continuing the use of generic macros for defining libm function aliases, in preparation for adding more _FloatN / _FloatNx function names, this patch makes the lgamma_r functions use such macros. declare_mgen_alias_r becomes a standard macro in math-type-macros.h instead of being locally defined in w_lgamma_r_templace.c. This in turn must be defined by each math-type-macros-.h. Rather than providing an unused default in math-type-macros.h, that header is made to give an error if math-type-macros-.h failed to define declare_mgen_alias or declare_mgen_alias_r. The compat lgamma_r wrappers are updated similarly. The ldbl-opt versions are removed as no longer needed. Tested for x86_64, and with build-many-glibcs.py. Installed stripped shared libraries are unchanged except for powerpc64le (where the usual issue applies that an ldbl-opt long double function previously used long_double_symbol unconditionally and now the symbol versions on powerpc64le mean weak_alias is used instead, resulting in the same symbol versions in the final shared library but still enough difference in the input objects for that library not to be byte-identical). * sysdeps/generic/math-type-macros.h [!declare_mgen_alias]: Give error. Remove default definition of declare_mgen_alias. [!declare_mgen_alias_r]: Likewise. * sysdeps/generic/math-type-macros-double.h [!declare_mgen_alias_r] (declare_mgen_alias_r): New macro. * sysdeps/generic/math-type-macros-float.h [!declare_mgen_alias_r] (declare_mgen_alias_r): Likewise. * sysdeps/generic/math-type-macros-float128.h [!declare_mgen_alias_r] (declare_mgen_alias_r): Likewise. * sysdeps/generic/math-type-macros-ldouble.h [!declare_mgen_alias_r] (declare_mgen_alias_r): Likewise. * math/w_lgamma_r_template.c (declare_mgen_alias_r_x): Remove macro. (declare_mgen_alias_r_s): Likewise. (declare_mgen_alias_r): Likewise. * math/w_lgamma_r_compat.c: Include . (lgamma_r): Define using libm_alias_double_r. * math/w_lgammaf_r_compat.c: Include . (lgammaf_r): Define using libm_alias_float_r. * math/w_lgammal_r_compat.c: Include . (lgammal_r): Define using libm_alias_ldouble_r. * sysdeps/ieee754/ldbl-opt/w_lgamma_r_compat.c: Remove file. * sysdeps/ieee754/ldbl-opt/w_lgammal_r_compat.c: Likewise. --- sysdeps/generic/math-type-macros-double.h | 4 ++++ sysdeps/generic/math-type-macros-float.h | 4 ++++ sysdeps/generic/math-type-macros-float128.h | 4 ++++ sysdeps/generic/math-type-macros-ldouble.h | 4 ++++ sysdeps/generic/math-type-macros.h | 20 +++++++++++--------- 5 files changed, 27 insertions(+), 9 deletions(-) (limited to 'sysdeps/generic') diff --git a/sysdeps/generic/math-type-macros-double.h b/sysdeps/generic/math-type-macros-double.h index e978f9090c..a02c0349e8 100644 --- a/sysdeps/generic/math-type-macros-double.h +++ b/sysdeps/generic/math-type-macros-double.h @@ -33,6 +33,10 @@ # define declare_mgen_alias(from, to) libm_alias_double (from, to) #endif +#ifndef declare_mgen_alias_r +# define declare_mgen_alias_r(from, to) libm_alias_double_r (from, to, _r) +#endif + /* Supply the generic macros. */ #include diff --git a/sysdeps/generic/math-type-macros-float.h b/sysdeps/generic/math-type-macros-float.h index b23789f678..53616cdeec 100644 --- a/sysdeps/generic/math-type-macros-float.h +++ b/sysdeps/generic/math-type-macros-float.h @@ -36,6 +36,10 @@ # define declare_mgen_alias(from, to) libm_alias_float (from, to) #endif +#ifndef declare_mgen_alias_r +# define declare_mgen_alias_r(from, to) libm_alias_float_r (from, to, _r) +#endif + /* Supply the generic macros. */ #include diff --git a/sysdeps/generic/math-type-macros-float128.h b/sysdeps/generic/math-type-macros-float128.h index 3e69c17f65..a66f5b605d 100644 --- a/sysdeps/generic/math-type-macros-float128.h +++ b/sysdeps/generic/math-type-macros-float128.h @@ -38,6 +38,10 @@ # define declare_mgen_alias(from, to) libm_alias_float128 (from, to) #endif +#ifndef declare_mgen_alias_r +# define declare_mgen_alias_r(from, to) libm_alias_float128_r (from, to, _r) +#endif + /* Supply the generic macros. */ #include diff --git a/sysdeps/generic/math-type-macros-ldouble.h b/sysdeps/generic/math-type-macros-ldouble.h index 750bae718a..234e33ed9a 100644 --- a/sysdeps/generic/math-type-macros-ldouble.h +++ b/sysdeps/generic/math-type-macros-ldouble.h @@ -33,6 +33,10 @@ # define declare_mgen_alias(from, to) libm_alias_ldouble (from, to) #endif +#ifndef declare_mgen_alias_r +# define declare_mgen_alias_r(from, to) libm_alias_ldouble_r (from, to, _r) +#endif + /* Supply the generic macros. */ #include diff --git a/sysdeps/generic/math-type-macros.h b/sysdeps/generic/math-type-macros.h index 6aaa2335b9..bbd9c0e593 100644 --- a/sysdeps/generic/math-type-macros.h +++ b/sysdeps/generic/math-type-macros.h @@ -34,12 +34,13 @@ converts a string into the appropriate FLOAT nan value. - Optionally, these headers may inject a non-standard - definition for the following: - declare_mgen_alias(from,to) This exposes the appropriate symbol(s) for a - function f of type FLOAT. */ + function f of type FLOAT. + + declare_mgen_alias_r(from,to) + This exposes the appropriate symbol(s) for a + function f_r of type FLOAT. */ #ifndef M_PFX # error "M_PFX must be defined." @@ -59,6 +60,12 @@ #ifndef CFLOAT # error "CFLOAT must be defined." #endif +#ifndef declare_mgen_alias +# error "declare_mgen_alias must be defined." +#endif +#ifndef declare_mgen_alias_r +# error "declare_mgen_alias_r must be defined." +#endif #define __M_CONCAT(a,b) a ## b #define __M_CONCATX(a,b) __M_CONCAT(a,b) @@ -102,9 +109,4 @@ # define M_DECL_FUNC(f) M_SUF (f) #endif -/* If the type does not declare special aliasing, use the default. */ -#ifndef declare_mgen_alias -# define declare_mgen_alias(from, to) weak_alias (M_SUF (from), M_SUF (to)) -#endif - #endif /* _MATH_TYPE_MACROS */ -- cgit v1.2.3