diff --git a/Android.mk b/Android.mk
new file mode 100644
index 0000000..95a8a40
--- /dev/null
+++ b/Android.mk
@@ -0,0 +1,81 @@
+#
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+LIBCXXABI_SRC_FILES := \
+	src/abort_message.cpp \
+	src/cxa_aux_runtime.cpp \
+	src/cxa_default_handlers.cpp \
+	src/cxa_demangle.cpp \
+	src/cxa_exception.cpp \
+	src/cxa_exception_storage.cpp \
+	src/cxa_guard.cpp \
+	src/cxa_handlers.cpp \
+	src/cxa_new_delete.cpp \
+	src/cxa_personality.cpp \
+	src/cxa_unexpected.cpp \
+	src/cxa_vector.cpp \
+	src/cxa_virtual.cpp \
+	src/exception.cpp \
+	src/fallback_malloc.ipp \
+	src/private_typeinfo.cpp \
+	src/stdexcept.cpp \
+	src/typeinfo.cpp \
+	src/Unwind/libunwind.cpp \
+	src/Unwind/Unwind-sjlj.c \
+	src/Unwind/UnwindLevel1-gcc-ext.c \
+	src/Unwind/UnwindLevel1.c \
+	src/Unwind/UnwindRegistersSave.S \
+
+ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),x86 x86_64))
+LIBCXXABI_SRC_FILES += src/Unwind/UnwindRegistersRestore.S
+endif
+
+LIBCXXABI_CFLAGS := \
+	-I$(LOCAL_PATH)/include/ \
+
+LIBCXXABI_RTTI_FLAG := -frtti
+LIBCXXABI_CPPFLAGS := \
+	-Iexternal/libcxx/include/ \
+	-std=c++11 \
+	-stdlib=libc++ \
+	-fexceptions \
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := libcxxabi
+LOCAL_CLANG := true
+LOCAL_SRC_FILES := $(LIBCXXABI_SRC_FILES)
+LOCAL_CFLAGS := $(LIBCXXABI_CFLAGS)
+LOCAL_CPPFLAGS := $(LIBCXXABI_CPPFLAGS)
+LOCAL_RTTI_FLAG := $(LIBCXXABI_RTTI_FLAG)
+
+ifneq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),arm arm64))
+LOCAL_SHARED_LIBRARIES := libdl
+endif
+
+LOCAL_SYSTEM_SHARED_LIBRARIES := libc
+include $(BUILD_SHARED_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := libcxxabi
+LOCAL_CLANG := true
+LOCAL_SRC_FILES := $(LIBCXXABI_SRC_FILES)
+LOCAL_CFLAGS := $(LIBCXXABI_CFLAGS)
+LOCAL_CPPFLAGS := $(LIBCXXABI_CPPFLAGS)
+LOCAL_LDFLAGS := -lpthread
+LOCAL_RTTI_FLAG := $(LIBCXXABI_RTTI_FLAG)
+include $(BUILD_HOST_SHARED_LIBRARY)
diff --git a/include/unwind.h b/include/unwind.h
index c5acd93..50e2d4b 100644
--- a/include/unwind.h
+++ b/include/unwind.h
@@ -83,7 +83,7 @@
 //
 // The following are the base functions documented by the C++ ABI
 //
-#if __arm__
+#if _LIBUNWIND_BUILD_SJLJ_APIS
 extern _Unwind_Reason_Code
     _Unwind_SjLj_RaiseException(struct _Unwind_Exception *exception_object);
 extern void _Unwind_SjLj_Resume(struct _Unwind_Exception *exception_object);
diff --git a/src/Unwind/AddressSpace.hpp b/src/Unwind/AddressSpace.hpp
index fafee04..ff8c8b0 100644
--- a/src/Unwind/AddressSpace.hpp
+++ b/src/Unwind/AddressSpace.hpp
@@ -298,7 +298,7 @@
 inline bool LocalAddressSpace::findFunctionName(pint_t addr, char *buf,
                                                 size_t bufLen,
                                                 unw_word_t *offset) {
-  dl_info dyldInfo;
+  Dl_info dyldInfo;
   if (dladdr((void *)addr, &dyldInfo)) {
     if (dyldInfo.dli_sname != NULL) {
       strlcpy(buf, dyldInfo.dli_sname, bufLen);
diff --git a/src/Unwind/UnwindCursor.hpp b/src/Unwind/UnwindCursor.hpp
index 235922f..035e471 100644
--- a/src/Unwind/UnwindCursor.hpp
+++ b/src/Unwind/UnwindCursor.hpp
@@ -151,10 +151,12 @@
   _LIBUNWIND_LOG_NON_ZERO(::pthread_rwlock_unlock(&_lock));
 }
 
+#if __APPLE__
 template <typename A>
 void DwarfFDECache<A>::dyldUnloadHook(const struct mach_header *mh, intptr_t ) {
   removeAllIn((pint_t) mh);
 }
+#endif
 
 template <typename A>
 void DwarfFDECache<A>::iterateCacheEntries(void (*func)(
@@ -363,6 +365,7 @@
 
 class _LIBUNWIND_HIDDEN AbstractUnwindCursor {
 public:
+  virtual             ~AbstractUnwindCursor() {}
   virtual bool        validReg(int) = 0;
   virtual unw_word_t  getReg(int) = 0;
   virtual void        setReg(int, unw_word_t) = 0;
diff --git a/src/Unwind/config.h b/src/Unwind/config.h
index 7d7e6bf..5aaadaf 100644
--- a/src/Unwind/config.h
+++ b/src/Unwind/config.h
@@ -43,7 +43,7 @@
   #define _LIBUNWIND_SUPPORT_FRAME_APIS   (__i386__ || __x86_64__)
   #define _LIBUNWIND_EXPORT               __attribute__((visibility("default")))
   #define _LIBUNWIND_HIDDEN               __attribute__((visibility("hidden")))
-  #define _LIBUNWIND_LOG(msg, ...) fprintf(stderr, "libuwind: " msg, __VA_ARGS__)
+  #define _LIBUNWIND_LOG(msg, ...) fprintf(stderr, "libunwind: " msg, __VA_ARGS__)
   #define _LIBUNWIND_ABORT(msg) __assert_rtn(__func__, __FILE__, __LINE__, msg)
 
   #if FOR_DYLD
@@ -56,6 +56,18 @@
     #define _LIBUNWIND_SUPPORT_DWARF_INDEX    0
   #endif
 
+#elif defined(__BIONIC__)
+  #define _LIBUNWIND_BUILD_ZERO_COST_APIS (__i386__ || __x86_64__ || __arm64__ || __arm__)
+  #define _LIBUNWIND_BUILD_SJLJ_APIS      0
+  #define _LIBUNWIND_SUPPORT_FRAME_APIS   (__i386__ || __x86_64__)
+  #define _LIBUNWIND_EXPORT               __attribute__((visibility("default")))
+  #define _LIBUNWIND_HIDDEN               __attribute__((visibility("hidden")))
+  #define _LIBUNWIND_LOG(msg, ...)        fprintf(stderr, "libunwind: " msg, __VA_ARGS__)
+  #define _LIBUNWIND_ABORT(msg)           __assert2(__FILE__, __LINE__, __func__, msg)
+
+  #define _LIBUNWIND_SUPPORT_COMPACT_UNWIND 1
+  #define _LIBUNWIND_SUPPORT_DWARF_UNWIND   1
+  #define _LIBUNWIND_SUPPORT_DWARF_INDEX    0
 #else
   // #define _LIBUNWIND_BUILD_ZERO_COST_APIS
   // #define _LIBUNWIND_BUILD_SJLJ_APIS
diff --git a/src/cxa_exception.cpp b/src/cxa_exception.cpp
index 744dddd..787d8a8 100644
--- a/src/cxa_exception.cpp
+++ b/src/cxa_exception.cpp
@@ -232,7 +232,7 @@
     globals->uncaughtExceptions += 1;   // Not atomically, since globals are thread-local
 
     exception_header->unwindHeader.exception_cleanup = exception_cleanup_func;
-#if __arm__
+#if _LIBUNWIND_BUILD_SJLJ_APIS
     _Unwind_SjLj_RaiseException(&exception_header->unwindHeader);
 #else
     _Unwind_RaiseException(&exception_header->unwindHeader);
@@ -465,7 +465,7 @@
         //   nothing
         globals->caughtExceptions = 0;
     }
-#if __arm__
+#if _LIBUNWIND_BUILD_SJLJ_APIS
     _Unwind_SjLj_RaiseException(&exception_header->unwindHeader);
 #else
     _Unwind_RaiseException(&exception_header->unwindHeader);
@@ -594,7 +594,7 @@
         setDependentExceptionClass(&dep_exception_header->unwindHeader);
         __cxa_get_globals()->uncaughtExceptions += 1;
         dep_exception_header->unwindHeader.exception_cleanup = dependent_exception_cleanup;
-#if __arm__
+#if _LIBUNWIND_BUILD_SJLJ_APIS
         _Unwind_SjLj_RaiseException(&dep_exception_header->unwindHeader);
 #else
         _Unwind_RaiseException(&dep_exception_header->unwindHeader);
diff --git a/src/cxa_personality.cpp b/src/cxa_personality.cpp
index 81104b8..32a3127 100644
--- a/src/cxa_personality.cpp
+++ b/src/cxa_personality.cpp
@@ -838,7 +838,7 @@
 */
 
 _Unwind_Reason_Code
-#if __arm__
+#if _LIBUNWIND_BUILD_SJLJ_APIS
 __gxx_personality_sj0
 #else
 __gxx_personality_v0
