Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F162626372
D57850.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
18 KB
Referenced Files
None
Subscribers
None
D57850.diff
View Options
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 <math.h>
-
-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 <float.h>
#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 <math.h>
+#include <float.h>
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 <math.h>
+#include <float.h>
#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 <math.h>
+#include <float.h>
#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 <math.h>
+#include <float.h>
#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 <math.h>
+#include <float.h>
#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 <math.h>
+#include <float.h>
#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 <float.h>
#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 <float.h>
#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 <float.h>
#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 <float.h>
#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 <fenv.h>
#include <math.h>
+#include <float.h>
#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 <math.h>
+#include <float.h>
#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
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Jul 16, 5:44 AM (25 m, 56 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35123991
Default Alt Text
D57850.diff (18 KB)
Attached To
Mode
D57850: powerpc64le: define missing msun functions
Attached
Detach File
Event Timeline
Log In to Comment