Fix __eabi_atexit() implementation, as well as a bug in the BSD-originated __cxa_finalize() implementation
This patch uses "#if ANDROID" instead of "#if 1" in the __cxa_finalize() fix
diff --git a/libc/stdlib/atexit.c b/libc/stdlib/atexit.c
index 5bf82ba..4ba2177 100644
--- a/libc/stdlib/atexit.c
+++ b/libc/stdlib/atexit.c
@@ -147,10 +147,19 @@
 				p->fns[n].fn_ptr.cxa_func = NULL;
 				mprotect(p, pgsize, PROT_READ);
 			}
+#if ANDROID
+                        /* it looks like we should always call the function
+                         * with an argument, even if dso is not NULL. Otherwise
+                         * static destructors will not be called properly on
+                         * the ARM.
+                         */
+                        (*fn.fn_ptr.cxa_func)(fn.fn_arg);
+#else /* !ANDROID */
 			if (dso != NULL)
 				(*fn.fn_ptr.cxa_func)(fn.fn_arg);
 			else
 				(*fn.fn_ptr.std_func)();
+#endif /* !ANDROID */
 		}
 	}