alias l to their normal double counterparts.
Works around problems with libgcc blindly calling __finitel on e.g. ppc32
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
# Not implemented [yet?]: nexttowardl.o
LD_MOBJ := \
- __finitel.o \
- __fpclassifyl.o \
- __isinfl.o \
- __isnanl.o \
- __signbitl.o \
acoshl.o \
acosl.o \
asinhl.o \
}
#endif /* __i386__ && __OPTIMIZE__ */
-#if defined __NO_LONG_DOUBLE_MATH
-# define int_WRAPPER_C99(func) /* not needed */
-# else
-# define int_WRAPPER_C99(func) \
-int func##l(long double x) \
-{ \
- return func((double) x); \
-} \
-libm_hidden_def(func##l)
-#endif
/* Implement the following, as defined by SuSv3 */
#if 0
return (long double) significand((double) x);
}
#endif
-
-#ifdef __DO_C99_MATH__
-
-#ifdef L___fpclassifyl
-int_WRAPPER1(__fpclassify)
-libm_hidden_def(__fpclassifyl)
-#endif
-
-#ifdef L___finitel
-int_WRAPPER1(__finite)
-libm_hidden_def(__finitel)
-#endif
-
-#ifdef L___signbitl
-int_WRAPPER1(__signbit)
-libm_hidden_def(__signbitl)
-#endif
-
-#ifdef L___isnanl
-int_WRAPPER1(__isnan)
-libm_hidden_def(__isnanl)
-#endif
-
-#ifdef L___isinfl
-int_WRAPPER1(__isinf)
-libm_hidden_def(__isinfl)
-#endif
-
-#endif
#define math_force_eval(x) do { __typeof(x) __x = (x); __asm __volatile ("" : : "m" (__x)); } while (0)
#endif
+/* If we do not have long double support, then alias to the double variant. */
+#if defined __NO_LONG_DOUBLE_MATH
+# define int_WRAPPER_C99(func) \
+weak_alias(func,func##l)
+# else
+# define int_WRAPPER_C99(func) \
+int func##l(long double x) \
+{ \
+ return func((double) x); \
+} \
+libm_hidden_def(func##l)
+#endif
+
#endif /* _MATH_PRIVATE_H_ */
return (hx | 0x800fffff) != 0xffffffff;
}
libm_hidden_def(__finite)
+#if defined __DO_C99_MATH__
+int_WRAPPER_C99(__finite)
+#endif
return retval;
}
libm_hidden_def(__fpclassify)
+#if defined __DO_C99_MATH__
+int_WRAPPER_C99(__fpclassify)
+#endif
return ~(lx >> 31) & (hx >> 30);
}
libm_hidden_def(__isinf)
+#if defined __DO_C99_MATH__
+int_WRAPPER_C99(__isinf)
+#endif
return (int)(((u_int32_t)hx)>>31);
}
libm_hidden_def(__isnan)
+#if defined __DO_C99_MATH__
+int_WRAPPER_C99(__isnan)
+#endif
return hx & 0x80000000;
}
libm_hidden_def(__signbit)
+#if defined __DO_C99_MATH__
+int_WRAPPER_C99(__signbit)
+#endif