Switch libm to libcrt.builtins

After switching libm from libgcc to libcrt.builtins, some of the symbols
are no longer getting included in libm, causing the compiler to complain
about missing symbols from the version script. Explicitly export them in
libc (since libm depends on libc).

Bug: 122993571
Test: m checkbuild
Test: bionic-unit-tests
Change-Id: Ie91765874d20df605f557b1a8c4236619553c549
diff --git a/libc/Android.bp b/libc/Android.bp
index 262d951..669ffc0 100644
--- a/libc/Android.bp
+++ b/libc/Android.bp
@@ -85,6 +85,9 @@
             no_libcrt: true,
         },
     },
+    // lld complains about duplicate symbols in libcrt and libgcc. Suppress the
+    // warning since this is intended right now.
+    ldflags: ["-Wl,-z,muldefs"],
 }
 
 // ========================================================
diff --git a/libc/arch-arm/bionic/libcrt_compat.c b/libc/arch-arm/bionic/libcrt_compat.c
index 22a3387..ce77a5d 100644
--- a/libc/arch-arm/bionic/libcrt_compat.c
+++ b/libc/arch-arm/bionic/libcrt_compat.c
@@ -31,8 +31,12 @@
 extern char __aeabi_cdcmpeq;
 extern char __aeabi_cdcmple;
 extern char __aeabi_cdrcmple;
+extern char __aeabi_cfcmpeq;
+extern char __aeabi_cfcmple;
+extern char __aeabi_cfrcmple;
 extern char __aeabi_d2f;
 extern char __aeabi_d2iz;
+extern char __aeabi_d2uiz;
 extern char __aeabi_dadd;
 extern char __aeabi_dcmpeq;
 extern char __aeabi_dcmpge;
@@ -48,6 +52,11 @@
 extern char __aeabi_f2iz;
 extern char __aeabi_f2uiz;
 extern char __aeabi_fadd;
+extern char __aeabi_fcmpeq;
+extern char __aeabi_fcmpge;
+extern char __aeabi_fcmpgt;
+extern char __aeabi_fcmple;
+extern char __aeabi_fcmplt;
 extern char __aeabi_fcmpun;
 extern char __aeabi_fdiv;
 extern char __aeabi_fmul;
@@ -74,12 +83,15 @@
 extern char __aeabi_unwind_cpp_pr0;
 extern char __aeabi_unwind_cpp_pr1;
 extern char __cmpdf2;
+extern char __cmpsf2;
 extern char __divdf3;
 extern char __divsf3;
 extern char __eqdf2;
+extern char __eqsf2;
 extern char __extendsfdf2;
 extern char __fixdfsi;
 extern char __fixsfsi;
+extern char __fixunsdfsi;
 extern char __floatdidf;
 extern char __floatdisf;
 extern char __floatsidf;
@@ -89,15 +101,20 @@
 extern char __floatunsidf;
 extern char __floatunsisf;
 extern char __gedf2;
+extern char __gesf2;
 extern char __gtdf2;
+extern char __gtsf2;
 extern char __gnu_ldivmod_helper;
 extern char __gnu_uldivmod_helper;
 extern char __ledf2;
+extern char __lesf2;
 extern char __ltdf2;
+extern char __ltsf2;
 extern char __muldf3;
 extern char __muldi3;
 extern char __mulsf3;
 extern char __nedf2;
+extern char __nesf2;
 extern char __popcount_tab;
 extern char __popcountsi2;
 extern char __subdf3;
@@ -113,8 +130,12 @@
     &__aeabi_cdcmpeq,
     &__aeabi_cdcmple,
     &__aeabi_cdrcmple,
+    &__aeabi_cfcmpeq,
+    &__aeabi_cfcmple,
+    &__aeabi_cfrcmple,
     &__aeabi_d2f,
     &__aeabi_d2iz,
+    &__aeabi_d2uiz,
     &__aeabi_dadd,
     &__aeabi_dcmpeq,
     &__aeabi_dcmpge,
@@ -130,6 +151,11 @@
     &__aeabi_f2iz,
     &__aeabi_f2uiz,
     &__aeabi_fadd,
+    &__aeabi_fcmpeq,
+    &__aeabi_fcmpge,
+    &__aeabi_fcmpgt,
+    &__aeabi_fcmple,
+    &__aeabi_fcmplt,
     &__aeabi_fcmpun,
     &__aeabi_fdiv,
     &__aeabi_fmul,
@@ -156,12 +182,15 @@
     &__aeabi_unwind_cpp_pr0,
     &__aeabi_unwind_cpp_pr1,
     &__cmpdf2,
+    &__cmpsf2,
     &__divdf3,
     &__divsf3,
     &__eqdf2,
+    &__eqsf2,
     &__extendsfdf2,
     &__fixdfsi,
     &__fixsfsi,
+    &__fixunsdfsi,
     &__floatdidf,
     &__floatdisf,
     &__floatsidf,
@@ -171,15 +200,20 @@
     &__floatunsidf,
     &__floatunsisf,
     &__gedf2,
+    &__gesf2,
     &__gtdf2,
+    &__gtsf2,
     &__gnu_ldivmod_helper,
     &__gnu_uldivmod_helper,
     &__ledf2,
+    &__lesf2,
     &__ltdf2,
+    &__ltsf2,
     &__muldf3,
     &__muldi3,
     &__mulsf3,
     &__nedf2,
+    &__nesf2,
     &__popcount_tab,
     &__popcountsi2,
     &__subdf3,
diff --git a/libc/libc.map.txt b/libc/libc.map.txt
index 62aea27..7d30c26 100644
--- a/libc/libc.map.txt
+++ b/libc/libc.map.txt
@@ -1500,8 +1500,12 @@
     __aeabi_cdcmpeq; # arm
     __aeabi_cdcmple; # arm
     __aeabi_cdrcmple; # arm
+    __aeabi_cfcmpeq; # arm
+    __aeabi_cfcmple; # arm
+    __aeabi_cfrcmple; # arm
     __aeabi_d2f; # arm
     __aeabi_d2iz; # arm
+    __aeabi_d2uiz; # arm
     __aeabi_dadd; # arm
     __aeabi_dcmpeq; # arm
     __aeabi_dcmpge; # arm
@@ -1517,6 +1521,11 @@
     __aeabi_f2iz; # arm
     __aeabi_f2uiz; # arm
     __aeabi_fadd; # arm
+    __aeabi_fcmpeq; # arm
+    __aeabi_fcmpge; # arm
+    __aeabi_fcmpgt; # arm
+    __aeabi_fcmple; # arm
+    __aeabi_fcmplt; # arm
     __aeabi_fcmpun; # arm
     __aeabi_fdiv; # arm
     __aeabi_fmul; # arm
@@ -1563,15 +1572,18 @@
     __bionic_brk; # arm x86 mips
     __bionic_libcrt_compat_symbols; # arm x86
     __cmpdf2; # arm
+    __cmpsf2; # arm
     __divdf3; # arm
     __divdi3; # arm x86 mips
     __divsf3; # arm
     __divsi3; # arm
     __dso_handle; # arm
     __eqdf2; # arm
+    __eqsf2; # arm
     __extendsfdf2; # arm
     __fixdfsi; # arm
     __fixsfsi; # arm
+    __fixunsdfsi; # arm
     __fixunssfsi; # arm
     __floatdidf; # arm
     __floatdisf; # arm
@@ -1584,6 +1596,7 @@
     __futex_wait; # arm x86 mips
     __futex_wake; # arm x86 mips
     __gedf2; # arm
+    __gesf2; # arm
     __get_thread; # arm x86 mips
     __get_tls; # arm x86 mips
     __getdents64; # arm x86 mips
@@ -1608,13 +1621,17 @@
     __gnu_Unwind_Save_WMMXC; # arm
     __gnu_Unwind_Save_WMMXD; # arm
     __gtdf2; # arm
+    __gtsf2; # arm
     __ledf2; # arm
+    __lesf2; # arm
     __lshrdi3; # arm
     __ltdf2; # arm
+    __ltsf2; # arm
     __muldf3; # arm
     __muldi3; # arm
     __mulsf3; # arm
     __nedf2; # arm
+    __nesf2; # arm
     __open; # arm x86 mips
     __page_shift; # arm x86 mips
     __page_size; # arm x86 mips
diff --git a/libm/Android.bp b/libm/Android.bp
index ec319e2..079220b 100644
--- a/libm/Android.bp
+++ b/libm/Android.bp
@@ -509,7 +509,6 @@
     stl: "none",
 
     // TODO(ivanlozano): Remove after b/118321713
-    no_libcrt: true,
     xom: false,
 
     stubs: {
diff --git a/libm/libm.map.txt b/libm/libm.map.txt
index 1f9a3f9..00ea7ee 100644
--- a/libm/libm.map.txt
+++ b/libm/libm.map.txt
@@ -301,58 +301,19 @@
     ___Unwind_RaiseException; # arm
     ___Unwind_Resume; # arm
     ___Unwind_Resume_or_Rethrow; # arm
-    __adddf3; # arm
-    __aeabi_cdcmpeq; # arm
-    __aeabi_cdcmple; # arm
-    __aeabi_cdrcmple; # arm
-    __aeabi_cfcmpeq; # arm
-    __aeabi_cfcmple; # arm
-    __aeabi_cfrcmple; # arm
     __aeabi_d2lz; # arm
-    __aeabi_d2uiz; # arm
     __aeabi_d2ulz; # arm
-    __aeabi_dadd; # arm
-    __aeabi_dcmpeq; # arm
-    __aeabi_dcmpge; # arm
-    __aeabi_dcmpgt; # arm
-    __aeabi_dcmple; # arm
-    __aeabi_dcmplt; # arm
-    __aeabi_ddiv; # arm
-    __aeabi_dmul; # arm
-    __aeabi_drsub; # arm
-    __aeabi_dsub; # arm
-    __aeabi_f2d; # arm
     __aeabi_f2lz; # arm
     __aeabi_f2ulz; # arm
-    __aeabi_fcmpeq; # arm
-    __aeabi_fcmpge; # arm
-    __aeabi_fcmpgt; # arm
-    __aeabi_fcmple; # arm
-    __aeabi_fcmplt; # arm
-    __aeabi_i2d; # arm
     __aeabi_l2d; # arm
-    __aeabi_ui2d; # arm
-    __aeabi_ul2d; # arm
     __aeabi_unwind_cpp_pr0; # arm
     __aeabi_unwind_cpp_pr1; # arm
     __aeabi_unwind_cpp_pr2; # arm
-    __cmpdf2; # arm
-    __cmpsf2; # arm
-    __divdf3; # arm
-    __eqdf2; # arm
-    __eqsf2; # arm
-    __extendsfdf2; # arm
     __fixdfdi; # arm mips
     __fixsfdi; # arm mips
     __fixunsdfdi; # arm mips
-    __fixunsdfsi; # arm
     __fixunssfdi; # arm mips
     __floatdidf; # arm
-    __floatsidf; # arm
-    __floatundidf; # arm
-    __floatunsidf; # arm
-    __gedf2; # arm
-    __gesf2; # arm
     __gnu_Unwind_Backtrace; # arm
     __gnu_unwind_execute; # arm
     __gnu_Unwind_ForcedUnwind; # arm
@@ -370,17 +331,7 @@
     __gnu_Unwind_Save_VFP_D_16_to_31; # arm
     __gnu_Unwind_Save_WMMXC; # arm
     __gnu_Unwind_Save_WMMXD; # arm
-    __gtdf2; # arm
-    __gtsf2; # arm
-    __ledf2; # arm
-    __lesf2; # arm
-    __ltdf2; # arm
-    __ltsf2; # arm
-    __muldf3; # arm
-    __nedf2; # arm
-    __nesf2; # arm
     __restore_core_regs; # arm
-    __subdf3; # arm
     _Unwind_Backtrace; # arm
     _Unwind_Complete; # arm
     _Unwind_DeleteException; # arm