diff options
author | Joseph Myers <joseph@codesourcery.com> | 2017-10-09 22:04:18 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2017-10-09 22:04:18 +0000 |
commit | a8dce6197a646fcf870dd2e87069eba3c99099e1 (patch) | |
tree | 07c054c4700a120114b5e3edbb9d09d5bc8f499d | |
parent | bedac136717a1c26fa579aca82124ce3c22254bf (diff) | |
download | glibc-a8dce6197a646fcf870dd2e87069eba3c99099e1.tar glibc-a8dce6197a646fcf870dd2e87069eba3c99099e1.tar.gz glibc-a8dce6197a646fcf870dd2e87069eba3c99099e1.tar.bz2 glibc-a8dce6197a646fcf870dd2e87069eba3c99099e1.zip |
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-<type>.h. Rather than
providing an unused default in math-type-macros.h, that header is made
to give an error if math-type-macros-<type>.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 <libm-alias-double.h>.
(lgamma_r): Define using libm_alias_double_r.
* math/w_lgammaf_r_compat.c: Include <libm-alias-float.h>.
(lgammaf_r): Define using libm_alias_float_r.
* math/w_lgammal_r_compat.c: Include <libm-alias-ldouble.h>.
(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.
-rw-r--r-- | ChangeLog | 26 | ||||
-rw-r--r-- | math/w_lgamma_r_compat.c | 7 | ||||
-rw-r--r-- | math/w_lgamma_r_template.c | 6 | ||||
-rw-r--r-- | math/w_lgammaf_r_compat.c | 3 | ||||
-rw-r--r-- | math/w_lgammal_r_compat.c | 3 | ||||
-rw-r--r-- | sysdeps/generic/math-type-macros-double.h | 4 | ||||
-rw-r--r-- | sysdeps/generic/math-type-macros-float.h | 4 | ||||
-rw-r--r-- | sysdeps/generic/math-type-macros-float128.h | 4 | ||||
-rw-r--r-- | sysdeps/generic/math-type-macros-ldouble.h | 4 | ||||
-rw-r--r-- | sysdeps/generic/math-type-macros.h | 20 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-opt/w_lgamma_r_compat.c | 5 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-opt/w_lgammal_r_compat.c | 7 |
12 files changed, 59 insertions, 34 deletions
@@ -1,3 +1,29 @@ +2017-10-09 Joseph Myers <joseph@codesourcery.com> + + * 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 <libm-alias-double.h>. + (lgamma_r): Define using libm_alias_double_r. + * math/w_lgammaf_r_compat.c: Include <libm-alias-float.h>. + (lgammaf_r): Define using libm_alias_float_r. + * math/w_lgammal_r_compat.c: Include <libm-alias-ldouble.h>. + (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. + 2017-10-09 Adhemerval Zanella <adhemerval.zanella@linaro.org> * lib/glob.c (__glob_pattern_type): Remove now-spurious diff --git a/math/w_lgamma_r_compat.c b/math/w_lgamma_r_compat.c index f88a5df6a5..5b3ceaa2ea 100644 --- a/math/w_lgamma_r_compat.c +++ b/math/w_lgamma_r_compat.c @@ -17,6 +17,7 @@ #include <math.h> #include <math_private.h> #include <math-svid-compat.h> +#include <libm-alias-double.h> #if LIBM_SVID_COMPAT @@ -33,9 +34,5 @@ __lgamma_r(double x, int *signgamp) return y; } -weak_alias (__lgamma_r, lgamma_r) -# ifdef NO_LONG_DOUBLE -strong_alias (__lgamma_r, __lgammal_r) -weak_alias (__lgamma_r, lgammal_r) -# endif +libm_alias_double_r (__lgamma, lgamma, _r) #endif diff --git a/math/w_lgamma_r_template.c b/math/w_lgamma_r_template.c index 5610db167c..57c285b1ef 100644 --- a/math/w_lgamma_r_template.c +++ b/math/w_lgamma_r_template.c @@ -34,12 +34,6 @@ #define M_CALL_FUNC_R_S(x) M_CALL_FUNC_R_X (x) #define M_CALL_FUNC_R(x) M_CALL_FUNC_R_S (M_SUF (x)) -#define declare_mgen_alias_r_x(from, to) weak_alias (from ## _r, to ## _r) -#define declare_mgen_alias_r_s(from, to) \ - declare_mgen_alias_r_x (from, to) -#define declare_mgen_alias_r(from, to) \ - declare_mgen_alias_r_s (M_SUF (from), M_SUF (to)) - FLOAT M_DECL_FUNC_R (__lgamma) (FLOAT x, int *signgamp) { diff --git a/math/w_lgammaf_r_compat.c b/math/w_lgammaf_r_compat.c index 86003de59a..c7751f13f5 100644 --- a/math/w_lgammaf_r_compat.c +++ b/math/w_lgammaf_r_compat.c @@ -20,6 +20,7 @@ #include <math.h> #include <math_private.h> #include <math-svid-compat.h> +#include <libm-alias-float.h> #if LIBM_SVID_COMPAT @@ -36,5 +37,5 @@ __lgammaf_r(float x, int *signgamp) return y; } -weak_alias (__lgammaf_r, lgammaf_r) +libm_alias_float_r (__lgamma, lgamma, _r) #endif diff --git a/math/w_lgammal_r_compat.c b/math/w_lgammal_r_compat.c index 781bfa45e7..09a8070b46 100644 --- a/math/w_lgammal_r_compat.c +++ b/math/w_lgammal_r_compat.c @@ -21,6 +21,7 @@ #include <math.h> #include <math_private.h> #include <math-svid-compat.h> +#include <libm-alias-ldouble.h> #if LIBM_SVID_COMPAT @@ -37,5 +38,5 @@ __lgammal_r(long double x, int *signgamp) return y; } -weak_alias (__lgammal_r, lgammal_r) +libm_alias_ldouble_r (__lgamma, lgamma, _r) #endif 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 <math-type-macros.h> 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 <math-type-macros.h> 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 <math-type-macros.h> 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 <math-type-macros.h> 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 */ diff --git a/sysdeps/ieee754/ldbl-opt/w_lgamma_r_compat.c b/sysdeps/ieee754/ldbl-opt/w_lgamma_r_compat.c deleted file mode 100644 index 673954cd1a..0000000000 --- a/sysdeps/ieee754/ldbl-opt/w_lgamma_r_compat.c +++ /dev/null @@ -1,5 +0,0 @@ -#include <math_ldbl_opt.h> -#include <math/w_lgamma_r_compat.c> -#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) -compat_symbol (libm, __lgamma_r, lgammal_r, GLIBC_2_0); -#endif diff --git a/sysdeps/ieee754/ldbl-opt/w_lgammal_r_compat.c b/sysdeps/ieee754/ldbl-opt/w_lgammal_r_compat.c deleted file mode 100644 index 431aa5d15c..0000000000 --- a/sysdeps/ieee754/ldbl-opt/w_lgammal_r_compat.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math_ldbl_opt.h> -#undef weak_alias -#define weak_alias(n,a) -#include <math/w_lgammal_r_compat.c> -#if LIBM_SVID_COMPAT -long_double_symbol (libm, __lgammal_r, lgammal_r); -#endif |