about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2017-10-09 22:04:18 +0000
committerJoseph Myers <joseph@codesourcery.com>2017-10-09 22:04:18 +0000
commita8dce6197a646fcf870dd2e87069eba3c99099e1 (patch)
tree07c054c4700a120114b5e3edbb9d09d5bc8f499d
parentbedac136717a1c26fa579aca82124ce3c22254bf (diff)
downloadglibc-a8dce6197a646fcf870dd2e87069eba3c99099e1.tar.gz
glibc-a8dce6197a646fcf870dd2e87069eba3c99099e1.tar.xz
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--ChangeLog26
-rw-r--r--math/w_lgamma_r_compat.c7
-rw-r--r--math/w_lgamma_r_template.c6
-rw-r--r--math/w_lgammaf_r_compat.c3
-rw-r--r--math/w_lgammal_r_compat.c3
-rw-r--r--sysdeps/generic/math-type-macros-double.h4
-rw-r--r--sysdeps/generic/math-type-macros-float.h4
-rw-r--r--sysdeps/generic/math-type-macros-float128.h4
-rw-r--r--sysdeps/generic/math-type-macros-ldouble.h4
-rw-r--r--sysdeps/generic/math-type-macros.h20
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_lgamma_r_compat.c5
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_lgammal_r_compat.c7
12 files changed, 59 insertions, 34 deletions
diff --git a/ChangeLog b/ChangeLog
index b8695b2d03..8f53a08422 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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