diff options
author | Wilco Dijkstra <Wilco.Dijkstra@arm.com> | 2019-07-16 12:17:22 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2020-01-03 10:02:04 -0300 |
commit | 220622dde5704c95a100c2792a280f18f3deba73 (patch) | |
tree | fbf0df37c2671a9bc21a200bd2f587fc5e4cbe2b /sysdeps/ieee754/ldbl-128ibm | |
parent | cf4dfd461725b6dbe6f27fbd16913f2c6c5cf7c5 (diff) | |
download | glibc-220622dde5704c95a100c2792a280f18f3deba73.tar glibc-220622dde5704c95a100c2792a280f18f3deba73.tar.gz glibc-220622dde5704c95a100c2792a280f18f3deba73.tar.bz2 glibc-220622dde5704c95a100c2792a280f18f3deba73.zip |
Add libm_alias_finite for _finite symbols
This patch adds a new macro, libm_alias_finite, to define all _finite
symbol. It sets all _finite symbol as compat symbol based on its first
version (obtained from the definition at built generated first-versions.h).
The <fn>f128_finite symbols were introduced in GLIBC 2.26 and so need
special treatment in code that is shared between long double and float128.
It is done by adding a list, similar to internal symbol redifinition,
on sysdeps/ieee754/float128/float128_private.h.
Alpha also needs some tricky changes to ensure we still emit 2 compat
symbols for sqrt(f).
Passes buildmanyglibc.
Co-authored-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
Diffstat (limited to 'sysdeps/ieee754/ldbl-128ibm')
22 files changed, 47 insertions, 26 deletions
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c b/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c index f85fe678ba..e2f045ac23 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c @@ -26,6 +26,7 @@ #include <math.h> #include <math_private.h> +#include <libm-alias-finite.h> static const long double one = 1.0L, @@ -59,4 +60,4 @@ __ieee754_acoshl(long double x) return __log1pl(t+sqrtl(2.0*t+t*t)); } } -strong_alias (__ieee754_acoshl, __acoshl_finite) +libm_alias_finite (__ieee754_acoshl, __acoshl) diff --git a/sysdeps/ieee754/ldbl-128ibm/e_acosl.c b/sysdeps/ieee754/ldbl-128ibm/e_acosl.c index 36fe75e215..46a480e8ce 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_acosl.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_acosl.c @@ -56,6 +56,7 @@ #include <math.h> #include <math_private.h> +#include <libm-alias-finite.h> static const long double one = 1.0L, @@ -313,4 +314,4 @@ __ieee754_acosl (long double x) return 2.0 * w; } } -strong_alias (__ieee754_acosl, __acosl_finite) +libm_alias_finite (__ieee754_acosl, __acosl) diff --git a/sysdeps/ieee754/ldbl-128ibm/e_asinl.c b/sysdeps/ieee754/ldbl-128ibm/e_asinl.c index 0e54332cd5..8cf60f0c2d 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_asinl.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_asinl.c @@ -64,6 +64,7 @@ #include <math-barriers.h> #include <math_private.h> #include <math-underflow.h> +#include <libm-alias-finite.h> static const long double one = 1.0L, @@ -248,4 +249,4 @@ __ieee754_asinl (long double x) else return -t; } -strong_alias (__ieee754_asinl, __asinl_finite) +libm_alias_finite (__ieee754_asinl, __asinl) diff --git a/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c b/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c index b625323df3..8c451ed207 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c @@ -42,6 +42,7 @@ #include <math.h> #include <math_private.h> +#include <libm-alias-finite.h> static const long double tiny = 1.0e-300L, @@ -119,4 +120,4 @@ __ieee754_atan2l(long double y, long double x) return (z-pi_lo)-pi;/* atan(-,-) */ } } -strong_alias (__ieee754_atan2l, __atan2l_finite) +libm_alias_finite (__ieee754_atan2l, __atan2l) diff --git a/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c b/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c index 25c286b8ff..d38d7b5432 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c @@ -32,6 +32,7 @@ #include <math.h> #include <math_private.h> #include <math-underflow.h> +#include <libm-alias-finite.h> static const long double one = 1.0L, huge = 1e300L; @@ -69,4 +70,4 @@ __ieee754_atanhl(long double x) t = 0.5*__log1pl((x+x)/(one-x)); if(hx>=0) return t; else return -t; } -strong_alias (__ieee754_atanhl, __atanhl_finite) +libm_alias_finite (__ieee754_atanhl, __atanhl) diff --git a/sysdeps/ieee754/ldbl-128ibm/e_coshl.c b/sysdeps/ieee754/ldbl-128ibm/e_coshl.c index 327b2ab960..bdbaad73ea 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_coshl.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_coshl.c @@ -33,6 +33,7 @@ #include <math.h> #include <math_private.h> +#include <libm-alias-finite.h> static const long double one = 1.0L, half=0.5L, huge = 1.0e300L; @@ -78,4 +79,4 @@ __ieee754_coshl (long double x) /* |x| > overflowthresold, cosh(x) overflow */ return huge*huge; } -strong_alias (__ieee754_coshl, __coshl_finite) +libm_alias_finite (__ieee754_coshl, __coshl) diff --git a/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c b/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c index 0009b416d8..bd86a40802 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c @@ -18,6 +18,7 @@ #include <math.h> #include <math_private.h> #include <float.h> +#include <libm-alias-finite.h> static const long double log10_high = 0x2.4d763776aaap+0L; static const long double log10_low = 0x2.b05ba95b58ae0b4c28a38a3fb4p-48L; @@ -45,4 +46,4 @@ __ieee754_exp10l (long double arg) exp_low = arg_high * log10_low + arg_low * M_LN10l; return __ieee754_expl (exp_high) * __ieee754_expl (exp_low); } -strong_alias (__ieee754_exp10l, __exp10l_finite) +libm_alias_finite (__ieee754_exp10l, __exp10l) diff --git a/sysdeps/ieee754/ldbl-128ibm/e_expl.c b/sysdeps/ieee754/ldbl-128ibm/e_expl.c index 3385887e09..0e68daae05 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_expl.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_expl.c @@ -66,7 +66,7 @@ #include <inttypes.h> #include <math_private.h> #include <fenv_private.h> - +#include <libm-alias-finite.h> #include "t_expl.h" @@ -257,4 +257,4 @@ __ieee754_expl (long double x) return result; return result * scale_u.ld; } -strong_alias (__ieee754_expl, __expl_finite) +libm_alias_finite (__ieee754_expl, __expl) diff --git a/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c b/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c index fae7dbe888..a8b178dbd0 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c @@ -21,6 +21,7 @@ #include <math.h> #include <math_private.h> #include <ieee754.h> +#include <libm-alias-finite.h> static const long double one = 1.0, Zero[] = {0.0, -0.0,}; @@ -146,4 +147,4 @@ __ieee754_fmodl (long double x, long double y) } return x; /* exact output */ } -strong_alias (__ieee754_fmodl, __fmodl_finite) +libm_alias_finite (__ieee754_fmodl, __fmodl) diff --git a/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c b/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c index 642e4ff951..77a6fa68d3 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c @@ -23,6 +23,7 @@ #include <fenv_private.h> #include <math-underflow.h> #include <float.h> +#include <libm-alias-finite.h> /* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's approximation to gamma function. */ @@ -217,4 +218,4 @@ __ieee754_gammal_r (long double x, int *signgamp) else return ret; } -strong_alias (__ieee754_gammal_r, __gammal_r_finite) +libm_alias_finite (__ieee754_gammal_r, __gammal_r) diff --git a/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c b/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c index 842f77b7ed..8767905cd5 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c @@ -45,6 +45,7 @@ #include <math.h> #include <math_private.h> #include <math-underflow.h> +#include <libm-alias-finite.h> long double __ieee754_hypotl(long double x, long double y) @@ -136,4 +137,4 @@ __ieee754_hypotl(long double x, long double y) else return w; } -strong_alias (__ieee754_hypotl, __hypotl_finite) +libm_alias_finite (__ieee754_hypotl, __hypotl) diff --git a/sysdeps/ieee754/ldbl-128ibm/e_j0l.c b/sysdeps/ieee754/ldbl-128ibm/e_j0l.c index d430c29247..a12ef1b845 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_j0l.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_j0l.c @@ -21,6 +21,7 @@ #include <math.h> #include <math_private.h> #include <float.h> +#include <libm-alias-finite.h> /* 1 / sqrt(pi) */ static const long double ONEOSQPI = 5.6418958354775628694807945156077258584405E-1L; @@ -716,7 +717,7 @@ __ieee754_j0l (long double x) z = ONEOSQPI * (p * cc - q * ss) / sqrtl (xx); return z; } -strong_alias (__ieee754_j0l, __j0l_finite) +libm_alias_finite (__ieee754_j0l, __j0l) /* Y0(x) = 2/pi * log(x) * J0(x) + R(x^2) @@ -861,4 +862,4 @@ long double z = ONEOSQPI * (p * ss + q * cc) / sqrtl (x); return z; } -strong_alias (__ieee754_y0l, __y0l_finite) +libm_alias_finite (__ieee754_y0l, __y0l) diff --git a/sysdeps/ieee754/ldbl-128ibm/e_j1l.c b/sysdeps/ieee754/ldbl-128ibm/e_j1l.c index ec6b1cec96..f85ba94466 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_j1l.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_j1l.c @@ -24,6 +24,7 @@ #include <fenv_private.h> #include <math-underflow.h> #include <float.h> +#include <libm-alias-finite.h> /* 1 / sqrt(pi) */ static const long double ONEOSQPI = 5.6418958354775628694807945156077258584405E-1L; @@ -733,7 +734,7 @@ __ieee754_j1l (long double x) z = -z; return z; } -strong_alias (__ieee754_j1l, __j1l_finite) +libm_alias_finite (__ieee754_j1l, __j1l) /* Y1(x) = 2/pi * (log(x) * J1(x) - 1/x) + x R(x^2) @@ -883,4 +884,4 @@ __ieee754_y1l (long double x) z = ONEOSQPI * (p * ss + q * cc) / sqrtl (xx); return z; } -strong_alias (__ieee754_y1l, __y1l_finite) +libm_alias_finite (__ieee754_y1l, __y1l) diff --git a/sysdeps/ieee754/ldbl-128ibm/e_jnl.c b/sysdeps/ieee754/ldbl-128ibm/e_jnl.c index 3fe4c0e5c6..1ea48ff6d8 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_jnl.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_jnl.c @@ -62,6 +62,7 @@ #include <math_private.h> #include <fenv_private.h> #include <math-underflow.h> +#include <libm-alias-finite.h> static const long double invsqrtpi = 5.6418958354775628694807945156077258584405E-1L, @@ -308,7 +309,7 @@ __ieee754_jnl (int n, long double x) math_check_force_underflow (ret); return ret; } -strong_alias (__ieee754_jnl, __jnl_finite) +libm_alias_finite (__ieee754_jnl, __jnl) long double __ieee754_ynl (int n, long double x) @@ -424,4 +425,4 @@ __ieee754_ynl (int n, long double x) ret = copysignl (LDBL_MAX, ret) * LDBL_MAX; return ret; } -strong_alias (__ieee754_ynl, __ynl_finite) +libm_alias_finite (__ieee754_ynl, __ynl) diff --git a/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c b/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c index 9dc130cfa9..adf25b01f4 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c @@ -21,6 +21,7 @@ #include <math.h> #include <math_private.h> #include <float.h> +#include <libm-alias-finite.h> static const long double PIL = 3.1415926535897932384626433832795028841972E0L; static const long double MAXLGM = 0x5.d53649e2d469dbc1f01e99fd66p+1012L; @@ -989,4 +990,4 @@ __ieee754_lgammal_r (long double x, int *signgamp) q += neval (p, RASY, NRASY) / x; return (q); } -strong_alias (__ieee754_lgammal_r, __lgammal_r_finite) +libm_alias_finite (__ieee754_lgammal_r, __lgammal_r) diff --git a/sysdeps/ieee754/ldbl-128ibm/e_log10l.c b/sysdeps/ieee754/ldbl-128ibm/e_log10l.c index 7efaacd0ed..bcf71f91e5 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_log10l.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_log10l.c @@ -62,6 +62,7 @@ #include <math.h> #include <math_private.h> +#include <libm-alias-finite.h> /* Coefficients for ln(1+x) = x - x**2/2 + x**3 P(x)/Q(x) * 1/sqrt(2) <= x < sqrt(2) @@ -258,4 +259,4 @@ done: z += e * L102A; return (z); } -strong_alias (__ieee754_log10l, __log10l_finite) +libm_alias_finite (__ieee754_log10l, __log10l) diff --git a/sysdeps/ieee754/ldbl-128ibm/e_log2l.c b/sysdeps/ieee754/ldbl-128ibm/e_log2l.c index 57b4b68052..4b3ac26c6e 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_log2l.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_log2l.c @@ -61,6 +61,7 @@ #include <math.h> #include <math_private.h> +#include <libm-alias-finite.h> /* Coefficients for ln(1+x) = x - x**2/2 + x**3 P(x)/Q(x) * 1/sqrt(2) <= x < sqrt(2) @@ -251,4 +252,4 @@ done: z += e; return (z); } -strong_alias (__ieee754_log2l, __log2l_finite) +libm_alias_finite (__ieee754_log2l, __log2l) diff --git a/sysdeps/ieee754/ldbl-128ibm/e_logl.c b/sysdeps/ieee754/ldbl-128ibm/e_logl.c index 65e17cb73c..c7f0af4759 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_logl.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_logl.c @@ -60,6 +60,7 @@ #include <math.h> #include <math_private.h> +#include <libm-alias-finite.h> /* log(1+x) = x - .5 x^2 + x^3 l(x) -.0078125 <= x <= +.0078125 @@ -297,4 +298,4 @@ __ieee754_logl(long double x) y += e * ln2a; return y; } -strong_alias (__ieee754_logl, __logl_finite) +libm_alias_finite (__ieee754_logl, __logl) diff --git a/sysdeps/ieee754/ldbl-128ibm/e_powl.c b/sysdeps/ieee754/ldbl-128ibm/e_powl.c index df09c87662..74142a58e1 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_powl.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_powl.c @@ -67,6 +67,7 @@ #include <math.h> #include <math_private.h> #include <math-underflow.h> +#include <libm-alias-finite.h> static const long double bp[] = { 1.0L, @@ -413,4 +414,4 @@ __ieee754_powl (long double x, long double y) math_check_force_underflow (z); return z; } -strong_alias (__ieee754_powl, __powl_finite) +libm_alias_finite (__ieee754_powl, __powl) diff --git a/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c b/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c index efa83bdab7..8a99c7984d 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c @@ -23,6 +23,7 @@ #include <math.h> #include <math_private.h> +#include <libm-alias-finite.h> static const long double zero = 0.0L; @@ -78,4 +79,4 @@ __ieee754_remainderl(long double x, long double p) x = -x; return x; } -strong_alias (__ieee754_remainderl, __remainderl_finite) +libm_alias_finite (__ieee754_remainderl, __remainderl) diff --git a/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c b/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c index f869fb068c..f30d701011 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c @@ -32,6 +32,7 @@ #include <math.h> #include <math_private.h> #include <math-underflow.h> +#include <libm-alias-finite.h> static const long double one = 1.0, shuge = 1.0e307; @@ -77,4 +78,4 @@ __ieee754_sinhl(long double x) /* |x| > overflowthresold, sinh(x) overflow */ return x*shuge; } -strong_alias (__ieee754_sinhl, __sinhl_finite) +libm_alias_finite (__ieee754_sinhl, __sinhl) diff --git a/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c b/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c index 6b05d7beae..7bb7f3fdb8 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c @@ -33,6 +33,7 @@ /*********************************************************************/ #include <math_private.h> +#include <libm-alias-finite.h> typedef union {int64_t i[2]; long double x; double d[2]; } mynumber; @@ -99,4 +100,4 @@ long double __ieee754_sqrtl(long double x) return tm256*__ieee754_sqrtl(x*t512); } } -strong_alias (__ieee754_sqrtl, __sqrtl_finite) +libm_alias_finite (__ieee754_sqrtl, __sqrtl) |