diff --git a/ap/build/uClibc/libm/ldouble_wrappers.c b/ap/build/uClibc/libm/ldouble_wrappers.c
new file mode 100644
index 0000000..118a78f
--- /dev/null
+++ b/ap/build/uClibc/libm/ldouble_wrappers.c
@@ -0,0 +1,400 @@
+/* vi: set sw=4 ts=4: */
+/*
+ * Wrapper functions implementing all the long double math functions
+ * defined by SuSv3 by actually calling the double version of
+ * each function and then casting the result back to a long double
+ * to return to the user.
+ *
+ * Copyright (C) 2005 by Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#include <features.h>
+/* Prevent math.h from defining colliding inlines */
+#undef __USE_EXTERN_INLINES
+#include "math.h"
+#include <complex.h>
+
+#define WRAPPER1(func) \
+long double func##l(long double x) \
+{ \
+	return (long double) func((double) x); \
+}
+#define WRAPPER2(func) \
+long double func##l(long double x, long double y) \
+{ \
+	return (long double) func((double) x, (double) y); \
+}
+#define int_WRAPPER1(func) \
+int func##l(long double x) \
+{ \
+	return func((double) x); \
+}
+#define long_WRAPPER1(func) \
+long func##l(long double x) \
+{ \
+	return func((double) x); \
+}
+#define long_long_WRAPPER1(func) \
+long long func##l(long double x) \
+{ \
+	return func((double) x); \
+}
+
+/* Implement the following, as defined by SuSv3 */
+#if 0
+long double acoshl(long double);
+long double acosl(long double);
+long double asinhl(long double);
+long double asinl(long double);
+long double atan2l(long double, long double);
+long double atanhl(long double);
+long double atanl(long double);
+long double cargl(long double complex);
+long double cbrtl(long double);
+long double ceill(long double);
+long double copysignl(long double, long double);
+long double coshl(long double);
+long double cosl(long double);
+long double erfcl(long double);
+long double erfl(long double);
+long double exp2l(long double);
+long double expl(long double);
+long double expm1l(long double);
+long double fabsl(long double);
+long double fdiml(long double, long double);
+long double floorl(long double);
+long double fmal(long double, long double, long double);
+long double fmaxl(long double, long double);
+long double fminl(long double, long double);
+long double fmodl(long double, long double);
+long double frexpl(long double value, int *);
+long double hypotl(long double, long double);
+int         ilogbl(long double);
+long double ldexpl(long double, int);
+long double lgammal(long double);
+long long   llrintl(long double);
+long long   llroundl(long double);
+long double log10l(long double);
+long double log1pl(long double);
+long double log2l(long double);
+long double logbl(long double);
+long double logl(long double);
+long        lrintl(long double);
+long        lroundl(long double);
+long double modfl(long double, long double *);
+long double nearbyintl(long double);
+long double nextafterl(long double, long double);
+long double nexttowardl(long double, long double);
+long double powl(long double, long double);
+long double remainderl(long double, long double);
+long double remquol(long double, long double, int *);
+long double rintl(long double);
+long double roundl(long double);
+long double scalblnl(long double, long);
+long double scalbnl(long double, int);
+long double sinhl(long double);
+long double sinl(long double);
+long double sqrtl(long double);
+long double tanhl(long double);
+long double tanl(long double);
+long double tgammal(long double);
+long double truncl(long double);
+#endif
+
+#ifdef L_acoshl
+WRAPPER1(acosh)
+#endif
+
+#ifdef L_acosl
+WRAPPER1(acos)
+#endif
+
+#ifdef L_asinhl
+WRAPPER1(asinh)
+#endif
+
+#ifdef L_asinl
+WRAPPER1(asin)
+#endif
+
+#ifdef L_atan2l
+WRAPPER2(atan2)
+#endif
+
+#ifdef L_atanhl
+WRAPPER1(atanh)
+#endif
+
+#ifdef L_atanl
+WRAPPER1(atan)
+#endif
+
+#ifdef L_cargl
+long double cargl (long double complex x)
+{
+	return (long double) carg( (double complex)x );
+}
+#endif
+
+#ifdef L_cbrtl
+WRAPPER1(cbrt)
+#endif
+
+#ifdef L_ceill
+WRAPPER1(ceil)
+#endif
+
+#ifdef L_copysignl
+WRAPPER2(copysign)
+#endif
+
+#ifdef L_coshl
+WRAPPER1(cosh)
+#endif
+
+#ifdef L_cosl
+WRAPPER1(cos)
+#endif
+
+#ifdef L_erfcl
+WRAPPER1(erfc)
+#endif
+
+#ifdef L_erfl
+WRAPPER1(erf)
+#endif
+
+#ifdef L_exp2l
+WRAPPER1(exp2)
+#endif
+
+#ifdef L_expl
+WRAPPER1(exp)
+#endif
+
+#ifdef L_expm1l
+WRAPPER1(expm1)
+#endif
+
+#ifdef L_fabsl
+WRAPPER1(fabs)
+#endif
+
+#ifdef L_fdiml
+WRAPPER2(fdim)
+#endif
+
+#ifdef L_floorl
+WRAPPER1(floor)
+#endif
+
+#ifdef L_fmal
+long double fmal (long double x, long double y, long double z)
+{
+	return (long double) fma( (double)x, (double)y, (double)z );
+}
+#endif
+
+#ifdef L_fmaxl
+WRAPPER2(fmax)
+#endif
+
+#ifdef L_fminl
+WRAPPER2(fmin)
+#endif
+
+#ifdef L_fmodl
+WRAPPER2(fmod)
+#endif
+
+#ifdef L_frexpl
+long double frexpl (long double x, int *ex)
+{
+	return (long double) frexp( (double)x, ex );
+}
+#endif
+
+#ifdef L_gammal
+WRAPPER1(gamma)
+#endif
+
+#ifdef L_hypotl
+WRAPPER2(hypot)
+#endif
+
+#ifdef L_ilogbl
+int_WRAPPER1(ilogb)
+#endif
+
+#ifdef L_ldexpl
+long double ldexpl (long double x, int ex)
+{
+	return (long double) ldexp( (double)x, ex );
+}
+#endif
+
+#ifdef L_lgammal
+WRAPPER1(lgamma)
+#endif
+
+#ifdef L_llrintl
+long_long_WRAPPER1(llrint)
+#endif
+
+#ifdef L_llroundl
+long_long_WRAPPER1(llround)
+#endif
+
+#ifdef L_log10l
+WRAPPER1(log10)
+#endif
+
+#ifdef L_log1pl
+WRAPPER1(log1p)
+#endif
+
+#ifdef L_log2l
+WRAPPER1(log2)
+#endif
+
+#ifdef L_logbl
+WRAPPER1(logb)
+#endif
+
+#ifdef L_logl
+WRAPPER1(log)
+#endif
+
+#ifdef L_lrintl
+long_WRAPPER1(lrint)
+#endif
+
+#ifdef L_lroundl
+long_WRAPPER1(lround)
+#endif
+
+#ifdef L_modfl
+long double modfl (long double x, long double *iptr)
+{
+	double y, result;
+	result = modf ( x, &y );
+	*iptr = (long double)y;
+	return (long double) result;
+}
+#endif
+
+#ifdef L_nearbyintl
+WRAPPER1(nearbyint)
+#endif
+
+#ifdef L_nextafterl
+WRAPPER2(nextafter)
+#endif
+
+/* Disabled in Makefile.in */
+#if 0 /* def L_nexttowardl */
+WRAPPER2(nexttoward)
+libm_hidden_def(nexttowardl)
+#endif
+
+#ifdef L_powl
+WRAPPER2(pow)
+#endif
+
+#ifdef L_remainderl
+WRAPPER2(remainder)
+#endif
+
+#ifdef L_remquol
+long double remquol (long double x, long double y, int *quo)
+{
+	return (long double) remquo( (double)x, (double)y, quo );
+}
+#endif
+
+#ifdef L_rintl
+WRAPPER1(rint)
+#endif
+
+#ifdef L_roundl
+WRAPPER1(round)
+#endif
+
+#ifdef L_scalblnl
+long double scalblnl (long double x, long ex)
+{
+	return (long double) scalbln( (double)x, ex );
+}
+#endif
+
+#ifdef L_scalbnl
+long double scalbnl (long double x, int ex)
+{
+	return (long double) scalbn( (double)x, ex );
+}
+#endif
+
+/* scalb is an obsolete function */
+
+#ifdef L_sinhl
+WRAPPER1(sinh)
+#endif
+
+#ifdef L_sinl
+WRAPPER1(sin)
+#endif
+
+#ifdef L_sqrtl
+WRAPPER1(sqrt)
+#endif
+
+#ifdef L_tanhl
+WRAPPER1(tanh)
+#endif
+
+#ifdef L_tanl
+WRAPPER1(tan)
+#endif
+
+#ifdef L_tgammal
+WRAPPER1(tgamma)
+#endif
+
+#ifdef L_truncl
+WRAPPER1(trunc)
+#endif
+
+#ifdef L_significandl
+WRAPPER1(significand)
+#endif
+
+#if defined __DO_C99_MATH__ && !defined __NO_LONG_DOUBLE_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
