diff --git a/libm/fake_long_double.c b/libm/fake_long_double.c
index fab32fe..2a3e420 100644
--- a/libm/fake_long_double.c
+++ b/libm/fake_long_double.c
@@ -20,6 +20,8 @@
 extern int __isinf(double); /* isinf.c */
 int (isinf)(double a1) { return __isinf(a1); }
 
+int (isnanf)(float a1) { return __isnanf(a1); }
+
 /*
  * The BSD "long double" functions are broken when sizeof(long double) == sizeof(double).
  * Android works around those cases by replacing the broken functions with our own trivial stubs
@@ -34,20 +36,32 @@
 int __signbitl(long double a1) { return __signbit(a1); }
 
 long double acoshl(long double a1) { return acosh(a1); }
+long double acosl(long double a1) { return acos(a1); }
 long double asinhl(long double a1) { return asinh(a1); }
+long double asinl(long double a1) { return asin(a1); }
+long double atan2l(long double a1, long double a2) { return atan2(a1, a2); }
 long double atanhl(long double a1) { return atanh(a1); }
+long double atanl(long double a1) { return atan(a1); }
 long double cbrtl(long double a1) { return cbrt(a1); }
+long double ceill(long double a1) { return ceil(a1); }
 long double copysignl(long double a1, long double a2) { return copysign(a1, a2); }
 long double coshl(long double a1) { return cosh(a1); }
 long double cosl(long double a1) { return cos(a1); }
 long double erfcl(long double a1) { return erfc(a1); }
 long double erfl(long double a1) { return erf(a1); }
+long double exp2l(long double a1) { return exp2(a1); }
+long double expl(long double a1) { return exp(a1); }
 long double expm1l(long double a1) { return expm1(a1); }
 long double fabsl(long double a1) { return fabs(a1); }
+long double floorl(long double a1) { return floor(a1); }
+long double fmal(long double a1, long double a2, long double a3) { return fma(a1, a2, a3); }
 long double fmaxl(long double a1, long double a2) { return fmax(a1, a2); }
 long double fmodl(long double a1, long double a2) { return fmod(a1, a2); }
 long double fminl(long double a1, long double a2) { return fmin(a1, a2); }
+long double frexpl(long double a1, int* a2) { return frexp(a1, a2); }
+long double hypotl(long double a1, long double a2) { return hypot(a1, a2); }
 int ilogbl(long double a1) { return ilogb(a1); }
+long double ldexpl(long double a1, int a2) { return ldexp(a1, a2); }
 long double lgammal(long double a1) { return lgamma(a1); }
 long long llrintl(long double a1) { return llrint(a1); }
 long double log10l(long double a1) { return log10(a1); }
@@ -59,7 +73,11 @@
 long long llroundl(long double a1) { return llround(a1); }
 long lroundl(long double a1) { return lround(a1); }
 long double modfl(long double a1, long double* a2) { return modf(a1, (double*) a2); }
+long double nanl(const char* a1) { return nan(a1); }
+long double nextafterl(long double a1, long double a2) { return nextafter(a1, a2); }
 long double powl(long double a1, long double a2) { return pow(a1, a2); }
+long double remainderl(long double a1, long double a2) { return remainder(a1, a2); }
+long double remquol(long double a1, long double a2, int* a3) { return remquo(a1, a2, a3); }
 long double rintl(long double a1) { return rint(a1); }
 long double roundl(long double a1) { return round(a1); }
 long double scalbnl(long double a1, int a2) { return scalbn(a1, a2); }
@@ -70,3 +88,4 @@
 long double tanhl(long double a1) { return tanh(a1); }
 long double tanl(long double a1) { return tan(a1); }
 long double tgammal(long double a1) { return tgamma(a1); }
+long double truncl(long double a1) { return trunc(a1); }
diff --git a/libm/freebsd-compat.h b/libm/freebsd-compat.h
index ca5b42c..4b14fae 100644
--- a/libm/freebsd-compat.h
+++ b/libm/freebsd-compat.h
@@ -18,8 +18,7 @@
 #define _BIONIC_LIBM_FREEBSD_COMPAT_H_included
 
 #define __weak_reference(sym,alias) \
-    __asm__(".weak " #alias); \
-    __asm__(".equ "  #alias ", " #sym)
+    /* We don't use __weak_reference; see "fake_long_double.c". */
 
 #define __strong_reference(sym,aliassym) \
     extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym)))
