aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/generic
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 /sysdeps/generic
parentbedac136717a1c26fa579aca82124ce3c22254bf (diff)
downloadglibc-a8dce6197a646fcf870dd2e87069eba3c99099e1.zip
glibc-a8dce6197a646fcf870dd2e87069eba3c99099e1.tar.gz
glibc-a8dce6197a646fcf870dd2e87069eba3c99099e1.tar.bz2
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.
Diffstat (limited to 'sysdeps/generic')
-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
5 files changed, 27 insertions, 9 deletions
diff --git a/sysdeps/generic/math-type-macros-double.h b/sysdeps/generic/math-type-macros-double.h
index e978f90..a02c034 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 b23789f..53616cd 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 3e69c17..a66f5b6 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 750bae7..234e33e 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 6aaa233..bbd9c0e 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 */