diff --git a/lib/msun/Makefile b/lib/msun/Makefile --- a/lib/msun/Makefile +++ b/lib/msun/Makefile @@ -27,6 +27,7 @@ .elif ${LDBL_PREC} == 113 .PATH: ${.CURDIR}/ld128 CFLAGS+= -I${.CURDIR}/ld128 -I${SRCTOP}/contrib/arm-optimized-routines/math +SYM_MAPS+= ${.CURDIR}/Symbol_f128.map .endif CFLAGS+= -I${.CURDIR}/${ARCH_SUBDIR} diff --git a/lib/msun/powerpc/Symbol_f128.map b/lib/msun/Symbol_f128.map rename from lib/msun/powerpc/Symbol_f128.map rename to lib/msun/Symbol_f128.map --- a/lib/msun/powerpc/Symbol_f128.map +++ b/lib/msun/Symbol_f128.map @@ -2,35 +2,60 @@ */ FBSD_1.9 { acosf128; + acoshf128; asinf128; - atanf128; + asinhf128; atan2f128; + atanf128; + atanhf128; + cbrtf128; ceilf128; + copysignf128; cosf128; coshf128; - expf128; + erfcf128; + erff128; exp2f128; + expf128; + expm1f128; + fabsf128; + fdimf128; floorf128; fmaf128; fmaxf128; fminf128; fmodf128; + frexpf128; + hypotf128; + ilogbf128; ldexpf128; + lgammaf128; + llrintf128; llroundf128; - logf128; log10f128; + log1pf128; log2f128; + logbf128; + logf128; + lrintf128; lroundf128; modff128; + nanf128; nearbyintf128; + nextafterf128; powf128; + remainderf128; + remquof128; rintf128; roundf128; + scalblnf128; + scalbnf128; sincosf128; sinf128; sinhf128; sqrtf128; tanf128; tanhf128; + tgammaf128; truncf128; }; diff --git a/lib/msun/ld128/b_tgammal.c b/lib/msun/ld128/b_tgammal.c --- a/lib/msun/ld128/b_tgammal.c +++ b/lib/msun/ld128/b_tgammal.c @@ -10,3 +10,5 @@ */ #define tgamma128 tgammal #include "tgamma128.c" + +__weak_reference(tgammal, tgammaf128); diff --git a/lib/msun/ld128/e_powl.c b/lib/msun/ld128/e_powl.c --- a/lib/msun/ld128/e_powl.c +++ b/lib/msun/ld128/e_powl.c @@ -438,3 +438,5 @@ } return s * z; } + +__weak_reference(powl, powf128); diff --git a/lib/msun/ld128/s_erfl.c b/lib/msun/ld128/s_erfl.c --- a/lib/msun/ld128/s_erfl.c +++ b/lib/msun/ld128/s_erfl.c @@ -323,3 +323,6 @@ if(x>0) return tiny*tiny; else return two-tiny; } } + +__weak_reference(erfl, erff128); +__weak_reference(erfcl, erfcf128); diff --git a/lib/msun/ld128/s_exp2l.c b/lib/msun/ld128/s_exp2l.c --- a/lib/msun/ld128/s_exp2l.c +++ b/lib/msun/ld128/s_exp2l.c @@ -424,3 +424,5 @@ return (r * twopkp10000 * twom10000); } } + +__weak_reference(exp2l, exp2f128); diff --git a/lib/msun/ld128/s_expl.c b/lib/msun/ld128/s_expl.c --- a/lib/msun/ld128/s_expl.c +++ b/lib/msun/ld128/s_expl.c @@ -317,3 +317,6 @@ t = SUM2P(tbl[n2].hi - twomk, tbl[n2].lo + t * (q + r1)); RETURNI(t * twopk); } + +__weak_reference(expl, expf128); +__weak_reference(expm1l, expm1f128); diff --git a/lib/msun/ld128/s_logl.c b/lib/msun/ld128/s_logl.c --- a/lib/msun/ld128/s_logl.c +++ b/lib/msun/ld128/s_logl.c @@ -729,3 +729,8 @@ } #endif /* STRUCT_RETURN */ + +__weak_reference(logl, logf128); +__weak_reference(log10l, log10f128); +__weak_reference(log1pl, log1pf128); +__weak_reference(log2l, log2f128); diff --git a/lib/msun/ld128/s_nanl.c b/lib/msun/ld128/s_nanl.c --- a/lib/msun/ld128/s_nanl.c +++ b/lib/msun/ld128/s_nanl.c @@ -44,3 +44,5 @@ u.ieee.bits.manh |= 1ULL << 47; /* make it a quiet NaN */ return (u.ieee.e); } + +__weak_reference(nanl, nanf128); diff --git a/lib/msun/powerpc/Makefile.inc b/lib/msun/powerpc/Makefile.inc --- a/lib/msun/powerpc/Makefile.inc +++ b/lib/msun/powerpc/Makefile.inc @@ -1,8 +1,5 @@ .if ${MACHINE_ARCH} == "powerpc64le" LDBL_PREC = 113 -ARCH_SRCS = ld128_compat.c -CFLAGS.ld128_compat.c+= -fno-builtin -SYM_MAPS+= ${.CURDIR}/${ARCH_SUBDIR}/Symbol_f128.map .else LDBL_PREC = 53 .endif diff --git a/lib/msun/powerpc/ld128_compat.c b/lib/msun/powerpc/ld128_compat.c deleted file mode 100644 --- a/lib/msun/powerpc/ld128_compat.c +++ /dev/null @@ -1,43 +0,0 @@ -/* - * On powerpc64le, long double is IEEE binary128, which the compiler treats as - * _Float128. clang lowers long double libm calls to the f128-suffixed entry - * points (sinf128, powf128, ...) rather than the *l names. Provide those entry - * points as thin forwarders to the existing long double implementations. - * - * This file is compiled with -fno-builtin so the calls below are not themselves - * rewritten back to the f128 names, which would recurse infinitely. - */ -#include - -long double acosf128(long double x) { return acosl(x); } -long double asinf128(long double x) { return asinl(x); } -long double atanf128(long double x) { return atanl(x); } -long double atan2f128(long double y, long double x) { return atan2l(y, x); } -long double ceilf128(long double x) { return ceill(x); } -long double cosf128(long double x) { return cosl(x); } -long double coshf128(long double x) { return coshl(x); } -long double expf128(long double x) { return expl(x); } -long double exp2f128(long double x) { return exp2l(x); } -long double floorf128(long double x) { return floorl(x); } -long double fmaf128(long double x, long double y, long double z) { return fmal(x, y, z); } -long double fmaxf128(long double x, long double y) { return fmaxl(x, y); } -long double fminf128(long double x, long double y) { return fminl(x, y); } -long double fmodf128(long double x, long double y) { return fmodl(x, y); } -long double ldexpf128(long double x, int n) { return ldexpl(x, n); } -long long llroundf128(long double x) { return llroundl(x); } -long double logf128(long double x) { return logl(x); } -long double log10f128(long double x) { return log10l(x); } -long double log2f128(long double x) { return log2l(x); } -long lroundf128(long double x) { return lroundl(x); } -long double modff128(long double x, long double *iptr) { return modfl(x, iptr); } -long double nearbyintf128(long double x) { return nearbyintl(x); } -long double powf128(long double x, long double y) { return powl(x, y); } -long double rintf128(long double x) { return rintl(x); } -long double roundf128(long double x) { return roundl(x); } -void sincosf128(long double x, long double *s, long double *c) { sincosl(x, s, c); } -long double sinf128(long double x) { return sinl(x); } -long double sinhf128(long double x) { return sinhl(x); } -long double sqrtf128(long double x) { return sqrtl(x); } -long double tanf128(long double x) { return tanl(x); } -long double tanhf128(long double x) { return tanhl(x); } -long double truncf128(long double x) { return truncl(x); } diff --git a/lib/msun/src/e_acoshl.c b/lib/msun/src/e_acoshl.c --- a/lib/msun/src/e_acoshl.c +++ b/lib/msun/src/e_acoshl.c @@ -83,3 +83,7 @@ RETURNI(log1pl(t+sqrtl(2.0*t+t*t))); } } + +#if LDBL_MANT_DIG == 113 +__weak_reference(acoshl, acoshf128); +#endif diff --git a/lib/msun/src/e_acosl.c b/lib/msun/src/e_acosl.c --- a/lib/msun/src/e_acosl.c +++ b/lib/msun/src/e_acosl.c @@ -81,3 +81,7 @@ return 2.0*(df+w); } } + +#if LDBL_MANT_DIG == 113 +__weak_reference(acosl, acosf128); +#endif diff --git a/lib/msun/src/e_asinl.c b/lib/msun/src/e_asinl.c --- a/lib/msun/src/e_asinl.c +++ b/lib/msun/src/e_asinl.c @@ -71,3 +71,7 @@ } if(expsign>0) return t; else return -t; } + +#if LDBL_MANT_DIG == 113 +__weak_reference(asinl, asinf128); +#endif diff --git a/lib/msun/src/e_atan2l.c b/lib/msun/src/e_atan2l.c --- a/lib/msun/src/e_atan2l.c +++ b/lib/msun/src/e_atan2l.c @@ -114,3 +114,7 @@ return (z-pi_lo)-pi;/* atan(-,-) */ } } + +#if LDBL_MANT_DIG == 113 +__weak_reference(atan2l, atan2f128); +#endif diff --git a/lib/msun/src/e_atanhl.c b/lib/msun/src/e_atanhl.c --- a/lib/msun/src/e_atanhl.c +++ b/lib/msun/src/e_atanhl.c @@ -68,3 +68,7 @@ t = 0.5*log1pl((x+x)/(one-x)); RETURNI((hx & 0x8000) == 0 ? t : -t); } + +#if LDBL_MANT_DIG == 113 +__weak_reference(atanhl, atanhf128); +#endif diff --git a/lib/msun/src/e_coshl.c b/lib/msun/src/e_coshl.c --- a/lib/msun/src/e_coshl.c +++ b/lib/msun/src/e_coshl.c @@ -127,3 +127,7 @@ /* |x| > o_threshold, cosh(x) overflow */ RETURNI(huge*huge); } + +#if LDBL_MANT_DIG == 113 +__weak_reference(coshl, coshf128); +#endif diff --git a/lib/msun/src/e_fmodl.c b/lib/msun/src/e_fmodl.c --- a/lib/msun/src/e_fmodl.c +++ b/lib/msun/src/e_fmodl.c @@ -143,3 +143,7 @@ x = ux.e * one; /* create necessary signal */ return x; /* exact output */ } + +#if LDBL_MANT_DIG == 113 +__weak_reference(fmodl, fmodf128); +#endif diff --git a/lib/msun/src/e_hypotl.c b/lib/msun/src/e_hypotl.c --- a/lib/msun/src/e_hypotl.c +++ b/lib/msun/src/e_hypotl.c @@ -118,3 +118,7 @@ return t1*w; } else return w; } + +#if LDBL_MANT_DIG == 113 +__weak_reference(hypotl, hypotf128); +#endif diff --git a/lib/msun/src/e_lgammal.c b/lib/msun/src/e_lgammal.c --- a/lib/msun/src/e_lgammal.c +++ b/lib/msun/src/e_lgammal.c @@ -10,6 +10,7 @@ */ #include "math.h" +#include #include "math_private.h" extern int signgam; @@ -19,3 +20,7 @@ { return lgammal_r(x,&signgam); } + +#if LDBL_MANT_DIG == 113 +__weak_reference(lgammal, lgammaf128); +#endif diff --git a/lib/msun/src/e_remainderl.c b/lib/msun/src/e_remainderl.c --- a/lib/msun/src/e_remainderl.c +++ b/lib/msun/src/e_remainderl.c @@ -27,6 +27,7 @@ */ #include +#include long double remainderl(long double x, long double y) @@ -35,3 +36,7 @@ return (remquol(x, y, &quo)); } + +#if LDBL_MANT_DIG == 113 +__weak_reference(remainderl, remainderf128); +#endif diff --git a/lib/msun/src/e_sinhl.c b/lib/msun/src/e_sinhl.c --- a/lib/msun/src/e_sinhl.c +++ b/lib/msun/src/e_sinhl.c @@ -129,3 +129,7 @@ /* |x| > o_threshold, sinh(x) overflow */ return x*shuge; } + +#if LDBL_MANT_DIG == 113 +__weak_reference(sinhl, sinhf128); +#endif diff --git a/lib/msun/src/e_sqrtl.c b/lib/msun/src/e_sqrtl.c --- a/lib/msun/src/e_sqrtl.c +++ b/lib/msun/src/e_sqrtl.c @@ -156,3 +156,7 @@ u.bits.exp--; return (u.e); } + +#if LDBL_MANT_DIG == 113 +__weak_reference(sqrtl, sqrtf128); +#endif diff --git a/lib/msun/src/s_asinhl.c b/lib/msun/src/s_asinhl.c --- a/lib/msun/src/s_asinhl.c +++ b/lib/msun/src/s_asinhl.c @@ -85,3 +85,7 @@ } RETURNI((hx & 0x8000) == 0 ? w : -w); } + +#if LDBL_MANT_DIG == 113 +__weak_reference(asinhl, asinhf128); +#endif diff --git a/lib/msun/src/s_atanl.c b/lib/msun/src/s_atanl.c --- a/lib/msun/src/s_atanl.c +++ b/lib/msun/src/s_atanl.c @@ -79,3 +79,7 @@ return (expsign<0)? -z:z; } } + +#if LDBL_MANT_DIG == 113 +__weak_reference(atanl, atanf128); +#endif diff --git a/lib/msun/src/s_cbrtl.c b/lib/msun/src/s_cbrtl.c --- a/lib/msun/src/s_cbrtl.c +++ b/lib/msun/src/s_cbrtl.c @@ -138,3 +138,7 @@ t *= v.e; RETURNI(t); } + +#if LDBL_MANT_DIG == 113 +__weak_reference(cbrtl, cbrtf128); +#endif diff --git a/lib/msun/src/s_ceill.c b/lib/msun/src/s_ceill.c --- a/lib/msun/src/s_ceill.c +++ b/lib/msun/src/s_ceill.c @@ -94,3 +94,7 @@ } return (u.e); } + +#if LDBL_MANT_DIG == 113 +__weak_reference(ceill, ceilf128); +#endif diff --git a/lib/msun/src/s_copysignl.c b/lib/msun/src/s_copysignl.c --- a/lib/msun/src/s_copysignl.c +++ b/lib/msun/src/s_copysignl.c @@ -27,6 +27,7 @@ */ #include +#include #include "fpmath.h" @@ -40,3 +41,7 @@ ux.bits.sign = uy.bits.sign; return (ux.e); } + +#if LDBL_MANT_DIG == 113 +__weak_reference(copysignl, copysignf128); +#endif diff --git a/lib/msun/src/s_cosl.c b/lib/msun/src/s_cosl.c --- a/lib/msun/src/s_cosl.c +++ b/lib/msun/src/s_cosl.c @@ -97,3 +97,7 @@ RETURNI(hi); } + +#if LDBL_MANT_DIG == 113 +__weak_reference(cosl, cosf128); +#endif diff --git a/lib/msun/src/s_fabsl.c b/lib/msun/src/s_fabsl.c --- a/lib/msun/src/s_fabsl.c +++ b/lib/msun/src/s_fabsl.c @@ -29,6 +29,7 @@ */ #include +#include #include "fpmath.h" @@ -41,3 +42,7 @@ u.bits.sign = 0; return (u.e); } + +#if LDBL_MANT_DIG == 113 +__weak_reference(fabsl, fabsf128); +#endif diff --git a/lib/msun/src/s_fdim.c b/lib/msun/src/s_fdim.c --- a/lib/msun/src/s_fdim.c +++ b/lib/msun/src/s_fdim.c @@ -27,6 +27,7 @@ */ #include +#include #define DECL(type, fn) \ type \ @@ -43,3 +44,7 @@ DECL(double, fdim) DECL(float, fdimf) DECL(long double, fdiml) + +#if LDBL_MANT_DIG == 113 +__weak_reference(fdiml, fdimf128); +#endif diff --git a/lib/msun/src/s_floorl.c b/lib/msun/src/s_floorl.c --- a/lib/msun/src/s_floorl.c +++ b/lib/msun/src/s_floorl.c @@ -94,3 +94,7 @@ } return (u.e); } + +#if LDBL_MANT_DIG == 113 +__weak_reference(floorl, floorf128); +#endif diff --git a/lib/msun/src/s_fmal.c b/lib/msun/src/s_fmal.c --- a/lib/msun/src/s_fmal.c +++ b/lib/msun/src/s_fmal.c @@ -269,3 +269,7 @@ else return (add_and_denormalize(r.hi, adj, spread)); } + +#if LDBL_MANT_DIG == 113 +__weak_reference(fmal, fmaf128); +#endif diff --git a/lib/msun/src/s_fmaxl.c b/lib/msun/src/s_fmaxl.c --- a/lib/msun/src/s_fmaxl.c +++ b/lib/msun/src/s_fmaxl.c @@ -27,6 +27,7 @@ */ #include +#include #include "fpmath.h" @@ -52,3 +53,7 @@ return (x > y ? x : y); } + +#if LDBL_MANT_DIG == 113 +__weak_reference(fmaxl, fmaxf128); +#endif diff --git a/lib/msun/src/s_fminl.c b/lib/msun/src/s_fminl.c --- a/lib/msun/src/s_fminl.c +++ b/lib/msun/src/s_fminl.c @@ -27,6 +27,7 @@ */ #include +#include #include "fpmath.h" @@ -52,3 +53,7 @@ return (x < y ? x : y); } + +#if LDBL_MANT_DIG == 113 +__weak_reference(fminl, fminf128); +#endif diff --git a/lib/msun/src/s_frexpl.c b/lib/msun/src/s_frexpl.c --- a/lib/msun/src/s_frexpl.c +++ b/lib/msun/src/s_frexpl.c @@ -60,3 +60,7 @@ } return (u.e); } + +#if LDBL_MANT_DIG == 113 +__weak_reference(frexpl, frexpf128); +#endif diff --git a/lib/msun/src/s_ilogbl.c b/lib/msun/src/s_ilogbl.c --- a/lib/msun/src/s_ilogbl.c +++ b/lib/msun/src/s_ilogbl.c @@ -47,3 +47,7 @@ else return (INT_MAX); } + +#if LDBL_MANT_DIG == 113 +__weak_reference(ilogbl, ilogbf128); +#endif diff --git a/lib/msun/src/s_llrintl.c b/lib/msun/src/s_llrintl.c --- a/lib/msun/src/s_llrintl.c +++ b/lib/msun/src/s_llrintl.c @@ -3,4 +3,9 @@ #define dtype long long #define fn llrintl +#include #include "s_lrint.c" + +#if LDBL_MANT_DIG == 113 +__weak_reference(llrintl, llrintf128); +#endif diff --git a/lib/msun/src/s_llroundl.c b/lib/msun/src/s_llroundl.c --- a/lib/msun/src/s_llroundl.c +++ b/lib/msun/src/s_llroundl.c @@ -5,4 +5,9 @@ #define DTYPE_MAX LLONG_MAX #define fn llroundl +#include #include "s_lround.c" + +#if LDBL_MANT_DIG == 113 +__weak_reference(llroundl, llroundf128); +#endif diff --git a/lib/msun/src/s_logbl.c b/lib/msun/src/s_logbl.c --- a/lib/msun/src/s_logbl.c +++ b/lib/msun/src/s_logbl.c @@ -48,3 +48,7 @@ else /* +/- inf or nan */ return (x * x); } + +#if LDBL_MANT_DIG == 113 +__weak_reference(logbl, logbf128); +#endif diff --git a/lib/msun/src/s_lrintl.c b/lib/msun/src/s_lrintl.c --- a/lib/msun/src/s_lrintl.c +++ b/lib/msun/src/s_lrintl.c @@ -3,4 +3,9 @@ #define dtype long #define fn lrintl +#include #include "s_lrint.c" + +#if LDBL_MANT_DIG == 113 +__weak_reference(lrintl, lrintf128); +#endif diff --git a/lib/msun/src/s_lroundl.c b/lib/msun/src/s_lroundl.c --- a/lib/msun/src/s_lroundl.c +++ b/lib/msun/src/s_lroundl.c @@ -5,4 +5,9 @@ #define DTYPE_MAX LONG_MAX #define fn lroundl +#include #include "s_lround.c" + +#if LDBL_MANT_DIG == 113 +__weak_reference(lroundl, lroundf128); +#endif diff --git a/lib/msun/src/s_modfl.c b/lib/msun/src/s_modfl.c --- a/lib/msun/src/s_modfl.c +++ b/lib/msun/src/s_modfl.c @@ -99,3 +99,7 @@ } } } + +#if LDBL_MANT_DIG == 113 +__weak_reference(modfl, modff128); +#endif diff --git a/lib/msun/src/s_nearbyint.c b/lib/msun/src/s_nearbyint.c --- a/lib/msun/src/s_nearbyint.c +++ b/lib/msun/src/s_nearbyint.c @@ -28,6 +28,7 @@ #include #include +#include #pragma STDC FENV_ACCESS ON @@ -61,3 +62,7 @@ DECL(double, nearbyint, rint) DECL(float, nearbyintf, rintf) DECL(long double, nearbyintl, rintl) + +#if LDBL_MANT_DIG == 113 +__weak_reference(nearbyintl, nearbyintf128); +#endif diff --git a/lib/msun/src/s_nextafterl.c b/lib/msun/src/s_nextafterl.c --- a/lib/msun/src/s_nextafterl.c +++ b/lib/msun/src/s_nextafterl.c @@ -72,3 +72,7 @@ } __strong_reference(nextafterl, nexttowardl); + +#if LDBL_MANT_DIG == 113 +__weak_reference(nextafterl, nextafterf128); +#endif diff --git a/lib/msun/src/s_remquol.c b/lib/msun/src/s_remquol.c --- a/lib/msun/src/s_remquol.c +++ b/lib/msun/src/s_remquol.c @@ -167,3 +167,7 @@ *quo = (sxy ? -q : q); return x; } + +#if LDBL_MANT_DIG == 113 +__weak_reference(remquol, remquof128); +#endif diff --git a/lib/msun/src/s_rintl.c b/lib/msun/src/s_rintl.c --- a/lib/msun/src/s_rintl.c +++ b/lib/msun/src/s_rintl.c @@ -87,3 +87,7 @@ return (x); } + +#if LDBL_MANT_DIG == 113 +__weak_reference(rintl, rintf128); +#endif diff --git a/lib/msun/src/s_roundl.c b/lib/msun/src/s_roundl.c --- a/lib/msun/src/s_roundl.c +++ b/lib/msun/src/s_roundl.c @@ -59,3 +59,7 @@ RETURNI(-t); } } + +#if LDBL_MANT_DIG == 113 +__weak_reference(roundl, roundf128); +#endif diff --git a/lib/msun/src/s_scalbln.c b/lib/msun/src/s_scalbln.c --- a/lib/msun/src/s_scalbln.c +++ b/lib/msun/src/s_scalbln.c @@ -27,6 +27,7 @@ */ #include +#include #define NMAX 65536 #define NMIN -65536 @@ -51,3 +52,7 @@ return (scalbnl(x, (n > NMAX) ? NMAX : (n < NMIN) ? NMIN : (int)n)); } + +#if LDBL_MANT_DIG == 113 +__weak_reference(scalblnl, scalblnf128); +#endif diff --git a/lib/msun/src/s_scalbnl.c b/lib/msun/src/s_scalbnl.c --- a/lib/msun/src/s_scalbnl.c +++ b/lib/msun/src/s_scalbnl.c @@ -47,3 +47,8 @@ __strong_reference(scalbnl, ldexpl); #endif + +#if LDBL_MANT_DIG == 113 +__weak_reference(scalbnl, scalbnf128); +__weak_reference(ldexpl, ldexpf128); +#endif diff --git a/lib/msun/src/s_sincosl.c b/lib/msun/src/s_sincosl.c --- a/lib/msun/src/s_sincosl.c +++ b/lib/msun/src/s_sincosl.c @@ -99,3 +99,7 @@ RETURNV(); } + +#if LDBL_MANT_DIG == 113 +__weak_reference(sincosl, sincosf128); +#endif diff --git a/lib/msun/src/s_sinl.c b/lib/msun/src/s_sinl.c --- a/lib/msun/src/s_sinl.c +++ b/lib/msun/src/s_sinl.c @@ -90,3 +90,7 @@ RETURNI(hi); } + +#if LDBL_MANT_DIG == 113 +__weak_reference(sinl, sinf128); +#endif diff --git a/lib/msun/src/s_tanhl.c b/lib/msun/src/s_tanhl.c --- a/lib/msun/src/s_tanhl.c +++ b/lib/msun/src/s_tanhl.c @@ -168,3 +168,7 @@ if (jx<0) s = -1; RETURNI(s*z); } + +#if LDBL_MANT_DIG == 113 +__weak_reference(tanhl, tanhf128); +#endif diff --git a/lib/msun/src/s_tanl.c b/lib/msun/src/s_tanl.c --- a/lib/msun/src/s_tanl.c +++ b/lib/msun/src/s_tanl.c @@ -92,3 +92,7 @@ RETURNI(hi); } + +#if LDBL_MANT_DIG == 113 +__weak_reference(tanl, tanf128); +#endif diff --git a/lib/msun/src/s_truncl.c b/lib/msun/src/s_truncl.c --- a/lib/msun/src/s_truncl.c +++ b/lib/msun/src/s_truncl.c @@ -61,3 +61,7 @@ } return (u.e); } + +#if LDBL_MANT_DIG == 113 +__weak_reference(truncl, truncf128); +#endif