merge in jb-release history after reset to master
diff --git a/libc/Android.mk b/libc/Android.mk
index 5e41741..885fb93 100644
--- a/libc/Android.mk
+++ b/libc/Android.mk
@@ -514,8 +514,9 @@
 
 # Needed to access private/__dso_handle.S from
 # crtbegin_xxx.S and crtend_xxx.S
+# and machine/asm.h
 #
-libc_crt_target_cflags += -I$(LOCAL_PATH)/private
+libc_crt_target_cflags += -I$(LOCAL_PATH)/private -I$(LOCAL_PATH)/arch-$(TARGET_ARCH)/include
 
 # Define the libc run-time (crt) support object files that must be built,
 # which are needed to build all other objects (shared/static libs and
diff --git a/libc/arch-arm/bionic/crtbegin_so.S b/libc/arch-arm/bionic/crtbegin_so.S
index 9275b1e..a54ed0d 100644
--- a/libc/arch-arm/bionic/crtbegin_so.S
+++ b/libc/arch-arm/bionic/crtbegin_so.S
@@ -26,6 +26,10 @@
  * SUCH DAMAGE.
  */
 
+#include <machine/asm.h>
+
+ENTRY(__on_dlclose)
+
 # Implement static C++ destructors when the shared
 # library is unloaded through dlclose().
 #
@@ -52,6 +56,8 @@
         .long -1
         .long __on_dlclose
 
+END(__on_dlclose)
+
 #ifdef CRT_LEGACY_WORKAROUND
 #include "__dso_handle.S"
 #else