diff --git a/build/core/clear-vars.mk b/build/core/clear-vars.mk
index e9ad319..08c3b19 100644
--- a/build/core/clear-vars.mk
+++ b/build/core/clear-vars.mk
@@ -20,3 +20,6 @@
 
 # Note: As a special exception, we don't want to clear LOCAL_PATH
 $(call clear-vars, $(filter-out LOCAL_PATH,$(modules-LOCALS:%=LOCAL_%)))
+
+# strip LOCAL_PATH
+LOCAL_PATH := $(strip $(LOCAL_PATH))
diff --git a/build/tools/build-stlport.sh b/build/tools/build-stlport.sh
index 908943a..f6dce8f 100755
--- a/build/tools/build-stlport.sh
+++ b/build/tools/build-stlport.sh
@@ -163,6 +163,12 @@
     local DSTDIR="$4"
     local DEFAULT_CFLAGS DEFAULT_CXXLAGS
     local SRC OBJ OBJECTS CFLAGS CXXFLAGS
+    local UNKNOWN_ARCH=$(find_ndk_unknown_archs | grep $ABI)
+
+    # Don't build gabi++ for unknown archs
+    if [ ! -z "$UNKNOWN_ARCH" ]; then
+        GABIXX_SOURCES=
+    fi
 
     mkdir -p "$BUILDDIR"
 
diff --git a/build/tools/builder-funcs.sh b/build/tools/builder-funcs.sh
index 6204088..b70868d 100644
--- a/build/tools/builder-funcs.sh
+++ b/build/tools/builder-funcs.sh
@@ -446,7 +446,8 @@
 # $4: Optional Makefile name
 builder_begin_android ()
 {
-    local ARCH ABI PLATFORM BUILDDIR DSTDIR SYSROOT CFLAGS
+    local ABI BUILDDIR LLVM_VERSION MAKEFILE
+    local ARCH UNKNOWN_ARCH PLATFORM SYSROOT FLAGS
     local CRTBEGIN_SO_O CRTEND_SO_O CRTBEGIN_EXE_SO CRTEND_SO_O
     local BINPREFIX GCC_TOOLCHAIN LLVM_TRIPLE
     if [ -z "$NDK_DIR" ]; then
@@ -455,14 +456,22 @@
         panic "Missing directory: $NDK_DIR/platforms"
     fi
     ABI=$1
+    BUILDDIR=$2
+    LLVM_VERSION=$3
+    MAKEFILE=$4
     ARCH=$(convert_abi_to_arch $ABI)
+    UNKNOWN_ARCH=$(find_ndk_unknown_archs | grep $ARCH)
     PLATFORM=${2##android-}
     SYSROOT=$NDK_DIR/platforms/android-$PLATFORM/arch-$ARCH
 
-    if [ -z "$3" ]; then
+    if [ ! -z "$UNKNOWN_ARCH" ]; then
+        LLVM_VERSION=$DEFAULT_LLVM_VERSION
+    fi
+
+    if [ -z "$LLVM_VERSION" ]; then
         BINPREFIX=$NDK_DIR/$(get_default_toolchain_binprefix_for_arch $ARCH)
     else
-        BINPREFIX=$NDK_DIR/$(get_llvm_toolchain_binprefix $3)
+        BINPREFIX=$NDK_DIR/$(get_llvm_toolchain_binprefix $LLVM_VERSION)
         GCC_TOOLCHAIN=`dirname $NDK_DIR/$(get_default_toolchain_binprefix_for_arch $ARCH)`
         GCC_TOOLCHAIN=`dirname $GCC_TOOLCHAIN`
     fi
@@ -481,9 +490,9 @@
         CRTEND_SO_O=$CRTEND_EXE_O
     fi
 
-    builder_begin "$2" "$4"
+    builder_begin "$BUILDDIR" "$MAKEFILE"
     builder_set_prefix "$ABI "
-    if [ -z "$3" ]; then
+    if [ -z "$LLVM_VERSION" ]; then
         builder_set_binprefix "$BINPREFIX"
     else
         builder_set_binprefix_llvm "$BINPREFIX"
@@ -500,9 +509,22 @@
             mips)
                 LLVM_TRIPLE=mipsel-none-linux-android
                 ;;
+            *)
+                LLVM_TRIPLE=le32-none-ndk
+                GCC_TOOLCHAIN=
+                CRTBEGIN_SO_O=
+                CRTEND_SO_O=
+                CRTBEGIN_EXE_O=
+                CRTEND_EXE_O=
+                FLAGS=-emit-llvm
+                ;;
         esac
-        builder_cflags "-target $LLVM_TRIPLE -gcc-toolchain $GCC_TOOLCHAIN"
-        builder_ldflags "-target $LLVM_TRIPLE -gcc-toolchain $GCC_TOOLCHAIN"
+        builder_cflags "-target $LLVM_TRIPLE $FLAGS"
+        builder_ldflags "-target $LLVM_TRIPLE $FLAGS"
+        if [ ! -z $GCC_TOOLCHAIN ]; then
+            builder_cflags "-gcc-toolchain $GCC_TOOLCHAIN"
+            builder_ldflags "-gcc-toolchain $GCC_TOOLCHAIN"
+        fi
     fi
 
     builder_cflags "--sysroot=$SYSROOT"
diff --git a/build/tools/dev-cleanup.sh b/build/tools/dev-cleanup.sh
index 2c123dc..ea52b83 100755
--- a/build/tools/dev-cleanup.sh
+++ b/build/tools/dev-cleanup.sh
@@ -35,7 +35,6 @@
 # Remove generated directories
 rm -rf $DIR/platforms
 rm -rf $DIR/toolchains/*/prebuilt
-rm -rf $DIR/toolchains/llvm*
 rm -rf $DIR/samples
 rm -rf $DIR/prebuilt
 
diff --git a/build/tools/prebuilt-common.sh b/build/tools/prebuilt-common.sh
index d6b6433..a83b92a 100644
--- a/build/tools/prebuilt-common.sh
+++ b/build/tools/prebuilt-common.sh
@@ -127,6 +127,19 @@
     fi
 }
 
+# Returns all words in text that do not match any of the pattern
+# $1: pattern
+# $2: text
+filter_out ()
+{
+    local PATTERN="$1"
+    local TEXT="$2"
+    for pat in $PATTERN; do
+        TEXT=$(echo $TEXT | sed -e 's/'$pat' //g' -e 's/'$pat'$//g')
+    done
+    echo $TEXT
+}
+
 # Assign a value to a variable
 # $1: Variable name
 # $2: Value
@@ -1091,13 +1104,40 @@
     fi
 }
 
+# Find all archs from $NDK_DIR/platforms/android-*
+# Return: the list of found arch names
+find_ndk_archs ()
+{
+    local RESULT FOUND_ARCHS
+    if [ ! -d $NDK_DIR/platforms ]; then
+        echo "ERROR: Cannot find directory '$NDK_DIR/platforms'!"
+        exit 1
+    fi
+    RESULT=$(ls $NDK_DIR/platforms/android-* | grep "arch-")
+    for arch in $RESULT; do
+        arch=$(basename $arch | sed -e 's/^arch-//')
+        FOUND_ARCHS="$FOUND_ARCHS $arch"
+    done
+    echo "$(sort_uniq $FOUND_ARCHS)"
+}
+
+# Find unknown archs from $NDK_DIR/platforms
+# Return: arch names not in ndk default archs
+find_ndk_unknown_archs()
+{
+  local FOUND_ARCHS=$(find_ndk_archs)
+  echo "$(filter_out "$DEFAULT_ARCHS" "$FOUND_ARCHS")"
+}
+
 # Convert an ABI name into an Architecture name
 # $1: ABI name
 # Result: Arch name
 convert_abi_to_arch ()
 {
     local RET
-    case $1 in
+    local ABI=$1
+    local FOUND_ARCH
+    case $ABI in
         armeabi|armeabi-v7a)
             RET=arm
             ;;
@@ -1108,8 +1148,13 @@
             RET=mips
             ;;
         *)
-            2> echo "ERROR: Unsupported ABI name: $1, use one of: armeabi, armeabi-v7a or x86 or mips"
-            exit 1
+            FOUND_ARCH=$(echo $(find_ndk_unknown_archs) | grep $ABI)
+            if [ ! -z $FOUND_ARCH ]; then
+                RET=$ABI
+            else
+                >&2 echo "ERROR: Unsupported ABI name: $ABI, use one of: armeabi, armeabi-v7a or x86 or mips"
+                exit 1
+            fi
             ;;
     esac
     echo "$RET"
@@ -1122,7 +1167,9 @@
 convert_arch_to_abi ()
 {
     local RET
-    case $1 in
+    local ARCH=$1
+    local FOUND_ARCH
+    case $ARCH in
         arm)
             RET=armeabi,armeabi-v7a
             ;;
@@ -1133,8 +1180,13 @@
             RET=mips
             ;;
         *)
-            >&2 echo "ERROR: Unsupported ARCH name: $1, use one of: arm, x86, mips"
-            exit 1
+            FOUND_ARCH=$(echo $(find_ndk_unknown_archs) | grep $ARCH)
+            if [ ! -z $FOUND_ARCH ]; then
+                RET=$ARCH
+            else
+                >&2 echo "ERROR: Unsupported ARCH name: $ARCH, use one of: arm, x86, mips"
+                exit 1
+            fi
             ;;
     esac
     echo "$RET"
diff --git a/docs/CHANGES.html b/docs/CHANGES.html
index 7e43198..2273f35 100644
--- a/docs/CHANGES.html
+++ b/docs/CHANGES.html
@@ -1,6 +1,294 @@
 <html><body><pre>Android NDK ChangeLog:
 
 -------------------------------------------------------------------------------
+android-ndk-r8e
+
+IMPORTANT CHANGES:
+
+- NDK now delivers additional 64-bit host toolchain set (package name suffix
+  *-x86_64.*)
+  1. The ndk-build script uses 64-bit toolchain if it's present and your OS
+     supports it.  If you install both 32-bit and 64-bit toolchain on 64-bit
+     OS, you may export NDK_HOST_32BIT=1 or add it to the command-line to
+     always use the 32-bit host toolchain.
+  2. For standalone: add to make-standalone-toolchain.sh "--system=linux-x86_64"
+     on Linux or "--system=darwin-x86_64" on MacOSX to generate 64-bit host
+     toolchain instead of the default 32-bit
+
+  See NDK-BUILD.html
+
+- Added Clang 3.2 compiler.  Since GCC 4.6 is still the default, you need to
+  explicitly enable it:
+  1. For ndk-build: Either export NDK_TOOLCHAIN_VERSION=clang3.2 (or
+     NDK_TOOLCHAIN_VERSION=clang which picks the most recent among the
+     clang compilers in the package) or add it in Application.mk.
+  2. For standalone: Add "--llvm-version=3.2" to make-standalone-toolchain.sh
+     and replace CC and CXX in your makefile with &lt;tool-path&gt;/bin/clang
+     and &lt;tool-path&gt;/bin/clang++.
+
+- Added static code analyzer for Linux/MacOSX hosts
+  1. For ndk-build, either export NDK_ANALYZE=1 or add it to the command-line.
+  2. For standalone, please refer to ndk-build for example to run scan-build
+     using /path/to/standalone/bin/&lt;arch&gt;/analyzer.
+
+  This feature is experimental now but welcome to try and report issues.
+
+- Added MCLinker for for Linux/MacOSX hosts.  Since ld.gold is the default
+  where available, you need to add -fuse-ld=mcld in LOCAL_LDFLAGS or
+  APP_LDFLAGS to explicitly enable it.
+
+  This feature is experimental now but welcome to try and report issues.
+  Please find project page: https://code.google.com/p/mclinker/
+
+- Enabled OpenMP for GCC 4.4.3/4.6/4.7:  Add the following flags
+     LOCAL_CFLAGS += -fopenmp
+     LOCAL_LDFLAGS += -fopenmp
+
+  Please find examples in tests/device/test-openmp
+
+- ndk-build now uses topological sort for module dependencies, ie.
+  it automatically sorts out the order of libraries specified in
+  LOCAL_STATIC_LIBRARIES, LOCAL_WHOLE_STATIC_LIBRARIES and
+  LOCAL_SHARED_LIBRARIES.
+
+  See http://b.android.com/39378
+  and an example in tests/build/topological-sort.
+
+
+IMPORTANT BUG FIXES:
+
+- Fixed build script to build all toolchains in -O2.  Toolchains
+  in previous releases were incorrectly built without optimization.
+
+- Fixed build script which unconditionally builds Clang/llvm for MacOSX
+  in 64-bit
+
+- Fixed GCC 4.6/4.7 ICE gen_thumb_movhi_clobber at config/arm/arm.md:5832
+  See http://b.android.com/52732
+
+- Fixed GCC/ARM 4.6/4.7 fails to link code using 64-bit atomic built-in
+  See http://b.android.com/41297
+
+- Fixed GCC 4.7 linker error reads like
+  .../arm-linux-androideabi/bin/ld: error: DIV usage mismatch between
+  out/target/product/generic/obj/STATIC_LIBRARIES/ds_intermediates/ds.a(ak.o)
+  and output
+
+  See http://sourceware.org/ml/binutils/2012-12/msg00202.html
+
+- Fixed GCC 4.7 ICE in build_data_member_initialization, at
+  cp/semantics.c:5790
+
+- Fixed GCC 4.7 ICE in redirect_eh_edge_1, at tree-eh.c:2214
+  See http://b.android.com/52909
+
+- Fixed a GCC 4.7 segfault
+  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55245
+
+- Fixed to &lt;chrono&gt; clock resolution and enable steady_clock
+  See http://b.android.com/39680
+
+- Fixed to enable _GLIBCXX_HAS_GTHREADS for GCC 4.7 libstdc++
+  See http://b.android.com/41770 and http://b.android.com/41859
+
+- Fixed X86 MXX/SSE code fails to link due to missing posix_memalign
+  See https://android-review.googlesource.com/#/c/51872
+
+- Fixed GCC4.7/X86 segfault in i386.c distance_non_agu_define_in_bb()
+  See https://android-review.googlesource.com/#/c/50383
+
+- Fixed GCC4.7/X86 to resotre earlier cmov behavior
+  See http://gcc.gnu.org/viewcvs?view=revision&revision=193554
+
+- More fixes to handle NULL return value of setlocale() in
+  libstdc++/GCC4.7
+  See http://b.android.com/46718
+
+- Fixed ld.gold runtime undefined reference to __exidx_start/_end
+  See https://android-review.googlesource.com/#/c/52134
+
+- Fixed Clang3.1 ICE using Eigen library
+  See http://b.android.com/41246
+
+- Fixed Clang3.1 ICE including &lt;chrono&gt; in C++11 mode
+  See http://b.android.com/39600
+
+- Fixed Clang3.1 ICE when generating object code for a method
+  call to a uniform initialized rvalue
+  See http://b.android.com/41387
+
+- Fixed Clang3.1/X86 stack realignment
+  See https://android-review.googlesource.com/#/c/52154
+
+- Fixed GDB SIGILL when debugging on platform 4.1.2
+  See http://b.android.com/40941
+
+- Fixed GDB cannot set "source:line" breakpoints when symbols contain
+  frankenpaths
+  See http://b.android.com/42448
+
+- Fixed GDB read_program_header for MIPS PIE executables
+  See https://android-review.googlesource.com/#/c/49592
+
+- Fixed STLport segfault in uncaught_exception()
+  See https://android-review.googlesource.com/#/c/50236
+
+- Fixed STLport Bus error in exception handling due
+  to unaligned access of DW_EH_PE_udata2, 4 and 8.
+
+- Fixed Gabi++ nothrow new[] infinite recursion.
+  See http://b.android.com/52833
+
+- Fixed Gabi++ wrong offset to EH pointer
+  See https://android-review.googlesource.com/#/c/53446
+
+- Removed Gabi++ redundant free on exception object
+  See https://android-review.googlesource.com/#/c/53447
+
+
+OTHER BUG FIXES:
+
+- Fix NDK headers
+  1. Remove redundant definitions of size_t, ssize_t, and ptrdiff_t
+  2. Fixed MIPS and ARM fenv.h
+  3. Fixed stddef.h to not re-define offsetof already exists
+     in toolchain
+  4. Fixed elf.h to contain Elf32_auxv_t and Elf64_auxv_t
+     See http://b.android.com/38441
+  5. Fixed the #ifdef C++ in OpenSLES_AndroidConfiguration.h
+     See http://b.android.com/53163
+
+- Fixed STLport to abort after OOM instead of (silent) exit
+
+- Fixed 'system' and 'Gabi++' headers to be able to compile
+  with API level &lt; 9
+
+- Fixed cpufeatures to not parse /proc/self/auxv
+  See http://b.android.com/43055
+
+- Fixed ld.gold to not depending on host libstdc++, and in case
+  of windows, library libgcc_sjlj_1.dll
+
+- Fixed Clang3.1 which emits inconsistent register list in .vsave
+  and fails assembler. eg.
+   .vsave  {d8, d9, d10, d11, d12, d13, d14, s20, s21, s22}
+  See https://android-review.googlesource.com/#/c/49930
+
+- Fixed Clang3.1 to be able to compile libgabi++ and pass test-stlport
+  on MIPS
+  See https://android-review.googlesource.com/#/c/51961
+
+- Fixed Clang3.1 to only enable exception by default for C++,
+  not for C
+
+- Misc fixes in Clang3.1 to pass most GNU exception tests
+
+- Fixed script clang/clang++ in standalone NDK compiler to
+  detect -cc1 and don't specify "-target" when found
+
+- Fixed ndk-build to observe NDK_APP_OUT set in Application.mk
+
+- Fixed X86 libc.so/lib.a missing sigsetjmp/siglongjmp already
+  declared in setjmp.h
+  See http://b.android.com/19851
+
+- Patched GCC 4.4.3/4.6/4.7 libstdc++ to work with Clang in C++11
+  See http://clang.llvm.org/cxx_status.html
+
+- Fixed cygwin path in argument passed to HOST_AWK
+
+- Fixed ndk-build warning in windows when running from project's jni/
+  directory.
+  See See http://b.android.com/40192
+
+- Fixed ndk-build won't build if makefile has tailing whitespace in
+  LOCAL_PATH definition
+  See See http://b.android.com/42841
+
+
+OTHER CHANGES:
+
+- Enabled threading support in GCC/MIPS toolchain
+
+- Unhided GCC EH helpers __cxa_begin_cleanup and __cxa_type_match
+  in GNU libstdc++
+
+  See tests/build/b8247455-hidden-cxa/jni/Android.mk
+
+- Gabi++ and STLport static libraries are now built with hidden
+  visibility except for EH helpers
+
+- STLport in ARM is now built with thumb
+
+- Added support for std::set_new_handler in Gabi++
+  See http://b.android.com/52805
+
+- Enabled FUTEX in GNU libstdc++
+
+- ndk-build no longer copies prebuilt static library to project's
+  obj/local/&lt;abi&gt;/directory
+  See http://b.android.com/40302
+
+- Removed __ARM_ARCH_5*__ from ARM toolchains/*/setup.mk
+  See http://b.android.com/21132
+
+- Built additional GNU libstdc++ libaries in thumb for ARM
+
+- Enabled MIPS floating-point madd/msub/nmadd/nmsub/recip/rsqrt
+  instructions with 32-bit FPU
+
+- Enabled graphite in GCC 4.6 and 4.7.  Allow more loop optimizations:
+  -fgraphite, -fgraphite-identity, -floop-block, -floop-flatten,
+  -floop-interchange, -floop-strip-mine, -floop-parallelize-all,
+  and -ftree-loop-linear
+
+  See http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
+
+- Enabled polly for clang3.1/3.2 on Linux/MacOSX 32-bit hosts which analyzes
+  and optimizes memory access pattern
+
+  See http://polly.llvm.org
+
+- Enabled -flto in GCC 4.7, 4.6, clang3.2 and Clang3.1 on linux (Clang LTO
+  via LLVMgold.so, ie. no MIPS because it doesn't have ld.gold)
+
+- Enabled --plugin and --plugin-opt for ld.gold in GCC 4.6/4.7
+
+- Enabled --text-reorder for ld.gold in GCC 4.7
+
+- GNU libstdc++ is now configured with _GLIBCXX_USE_C99_MATH which will undef
+  isinf, etc (*1), in bionic header.  If you have code which does the following
+     #include <math.h>
+       ... use isinf
+     #include <cmath>
+     #include <math.h>
+       ... use isinf // fails
+  The 2nd use of isinf may fail because cmath undefined isinf
+
+  (*1) Math macro in bionic undefined by cmath: fpclassify, isfinite, isinf,
+       isnan, isnormal, isgreater, isgreaterequal, isless, islessequal,
+       islessgreater, isunordered, signbit
+
+- Added APP_LDFLAGS.  See ANDROID-MK.html.
+
+- Allow NDK_LOG=0, NDK_HOST_32BIT=0 to disable NDK_LOG and host 32-bit toolchain,
+  respectively.
+
+- Changed the default GCC/X86 -march=/-mtune= from pentiumpro/generic to i686/atom
+
+- Misc toolchain build script enhancements:
+  1. Fixed a race condition in build-gcc.sh mingw build which used to prevent
+     high degree of parallel build
+  2. build-gabi++.sh and build-stlport.sh can now run from NDK package
+     See http://b.android.com/52835
+  3. Fixed run-tests.sh in MSys
+  4. Better 64-bit host toolchain and canadian build supports
+  5. Updated build-mingw64-toolchain.sh for modern versions
+  6. Option to build libgnustl_static.a and stlport_static.a without hidden
+     visibility
+
+
+-------------------------------------------------------------------------------
 android-ndk-r8d
 
 IMPORTANT CHANGES:
@@ -27,7 +315,7 @@
   This feature is experimental now and works better with GCC 4.6/4.7
   than with GCC 4.4.3 and clang3.1.  Welcome to try and report issues.
 
-- Add -mstack-protector-guard option for x86 to choose between "global"
+- Add -mstack-protector-guard= option for x86 to choose between "global"
   (default, compatible with older bionic) and "tls" (new %gs:20) for
   -fstack-protector, -fstack-protector-all, and -fstack-protector-strong
   (GCC 4.6+).  Note that this alone doesn't enable any -fstack-protector*
@@ -91,7 +379,7 @@
   1. Fixed __WINT_TYPE__ and wint_t to be the same type
   2. Corrected typo in &lt;android/bitmap.h&gt;
      See http://code.google.com/p/android/issues/detail?id=15134
-  3. Corrected typo in &lt;errono.h&gt;
+  3. Corrected typo in &lt;errno.h&gt;
      See http://code.google.com/p/android/issues/detail?id=15134
   4. Check the presence of __STDC_VERSION__ in &lt;sys/cdefs.h&gt;
      See http://code.google.com/p/android/issues/detail?id=14627
diff --git a/tests/build/issue38441-Elf32_auxv_t/jni/Android.mk b/tests/build/issue38441-Elf32_auxv_t/jni/Android.mk
new file mode 100644
index 0000000..ca7b1c7
--- /dev/null
+++ b/tests/build/issue38441-Elf32_auxv_t/jni/Android.mk
@@ -0,0 +1,6 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := issue38441-Elf32_auxv_t
+LOCAL_SRC_FILES := issue38441-Elf32_auxv_t.c
+include $(BUILD_EXECUTABLE)
diff --git a/tests/build/issue38441-Elf32_auxv_t/jni/Application.mk b/tests/build/issue38441-Elf32_auxv_t/jni/Application.mk
new file mode 100644
index 0000000..a252a72
--- /dev/null
+++ b/tests/build/issue38441-Elf32_auxv_t/jni/Application.mk
@@ -0,0 +1 @@
+APP_ABI := all
diff --git a/tests/build/issue38441-Elf32_auxv_t/jni/issue38441-Elf32_auxv_t.c b/tests/build/issue38441-Elf32_auxv_t/jni/issue38441-Elf32_auxv_t.c
new file mode 100644
index 0000000..fa3b229
--- /dev/null
+++ b/tests/build/issue38441-Elf32_auxv_t/jni/issue38441-Elf32_auxv_t.c
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2010 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.
+ */
+
+#include <stdint.h>
+#include <elf.h>
+
+Elf32_auxv_t auxv32;
+Elf64_auxv_t auxv64;
+
+int main()
+{
+}
diff --git a/tests/build/issue42841-LOCAL_PATH/jni/Android.mk b/tests/build/issue42841-LOCAL_PATH/jni/Android.mk
new file mode 100644
index 0000000..696dad2
--- /dev/null
+++ b/tests/build/issue42841-LOCAL_PATH/jni/Android.mk
@@ -0,0 +1,12 @@
+# Note that the line LOCAL_PATH ends with trailing space and
+# cause strange error message reads:
+#
+#  make: *** No rule to make target /issue42841-LOCAL_PATH.c', needed by
+#     obj/local/armeabi/objs/issue42841-LOCAL_PATH/issue42841-LOCAL_PATH.o'.  Stop.
+#
+LOCAL_PATH := $(call my-dir) 
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := issue42841-LOCAL_PATH
+LOCAL_SRC_FILES := issue42841-LOCAL_PATH.c
+include $(BUILD_EXECUTABLE)
diff --git a/tests/build/issue42841-LOCAL_PATH/jni/Application.mk b/tests/build/issue42841-LOCAL_PATH/jni/Application.mk
new file mode 100644
index 0000000..a252a72
--- /dev/null
+++ b/tests/build/issue42841-LOCAL_PATH/jni/Application.mk
@@ -0,0 +1 @@
+APP_ABI := all
diff --git a/tests/build/issue42841-LOCAL_PATH/jni/issue42841-LOCAL_PATH.c b/tests/build/issue42841-LOCAL_PATH/jni/issue42841-LOCAL_PATH.c
new file mode 100644
index 0000000..c829b4e
--- /dev/null
+++ b/tests/build/issue42841-LOCAL_PATH/jni/issue42841-LOCAL_PATH.c
@@ -0,0 +1,18 @@
+/*
+ * Copyright (C) 2010 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.
+ */
+int main()
+{
+}
diff --git a/tests/build/issue53163-OpenSLES_AndroidConfiguration/jni/Android.mk b/tests/build/issue53163-OpenSLES_AndroidConfiguration/jni/Android.mk
new file mode 100644
index 0000000..1d144be
--- /dev/null
+++ b/tests/build/issue53163-OpenSLES_AndroidConfiguration/jni/Android.mk
@@ -0,0 +1,6 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := issue53163-OpenSLES_AndroidConfiguration
+LOCAL_SRC_FILES := issue53163-OpenSLES_AndroidConfiguration.c
+include $(BUILD_EXECUTABLE)
diff --git a/tests/build/issue53163-OpenSLES_AndroidConfiguration/jni/Application.mk b/tests/build/issue53163-OpenSLES_AndroidConfiguration/jni/Application.mk
new file mode 100644
index 0000000..b448d58
--- /dev/null
+++ b/tests/build/issue53163-OpenSLES_AndroidConfiguration/jni/Application.mk
@@ -0,0 +1,2 @@
+APP_ABI := all
+APP_PLATFORM := android-9
diff --git a/tests/build/issue53163-OpenSLES_AndroidConfiguration/jni/issue53163-OpenSLES_AndroidConfiguration.c b/tests/build/issue53163-OpenSLES_AndroidConfiguration/jni/issue53163-OpenSLES_AndroidConfiguration.c
new file mode 100644
index 0000000..6035247
--- /dev/null
+++ b/tests/build/issue53163-OpenSLES_AndroidConfiguration/jni/issue53163-OpenSLES_AndroidConfiguration.c
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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.
+ */
+
+#include <SLES/OpenSLES.h>
+#include <SLES/OpenSLES_AndroidConfiguration.h>
+
+int main()
+{
+    SL_ANDROID_RECORDING_PRESET_NONE;
+}
diff --git a/tests/device/issue19851-sigsetjmp/jni/Android.mk b/tests/device/issue19851-sigsetjmp/jni/Android.mk
new file mode 100644
index 0000000..eb8e177
--- /dev/null
+++ b/tests/device/issue19851-sigsetjmp/jni/Android.mk
@@ -0,0 +1,6 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := issue19851-sigsetjmp
+LOCAL_SRC_FILES := issue19851-sigsetjmp.c
+include $(BUILD_EXECUTABLE)
diff --git a/tests/device/issue19851-sigsetjmp/jni/Application.mk b/tests/device/issue19851-sigsetjmp/jni/Application.mk
new file mode 100644
index 0000000..a252a72
--- /dev/null
+++ b/tests/device/issue19851-sigsetjmp/jni/Application.mk
@@ -0,0 +1 @@
+APP_ABI := all
diff --git a/tests/device/issue19851-sigsetjmp/jni/issue19851-sigsetjmp.c b/tests/device/issue19851-sigsetjmp/jni/issue19851-sigsetjmp.c
new file mode 100644
index 0000000..49d35ee
--- /dev/null
+++ b/tests/device/issue19851-sigsetjmp/jni/issue19851-sigsetjmp.c
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2010 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.
+ */
+
+#include <stdio.h>
+#include <signal.h>
+#include <setjmp.h>
+
+static sigjmp_buf sbuf;
+
+void handler(int sig)
+{
+    printf("In handler()\n");
+    siglongjmp(sbuf, 99);
+    printf("After calling siglongjmp, but you won't see me here.\n");
+}
+
+void foo()
+{
+    struct sigaction sact;
+    sigset_t sset;
+    printf("In foo()\n");
+
+ /* Setup signal handler for SIGUSR2 */
+    sigemptyset(&sact.sa_mask);
+    sact.sa_flags = 0;
+    sact.sa_handler = handler;
+    sigaction(SIGUSR2, &sact, NULL);
+
+ /* Unblock SIGUSR2 */
+    sigemptyset(&sset);
+    sigaddset(&sset, SIGUSR2);
+    sigprocmask(SIG_UNBLOCK, &sset, NULL);
+
+ /* Action */
+    kill(getpid(), SIGUSR2);
+
+    printf("After calling kill, but you won't see me here.\n");
+}
+
+void bar()
+{
+    printf("In bar()\n");
+    foo();
+    printf("After calling foo, but you won't see me here.\n");
+}
+
+int main()
+{
+    int code, ret;
+    sigset_t sset;
+    printf("In main()\n");
+    sigemptyset(&sset);
+    sigaddset(&sset, SIGUSR1);
+    sigaddset(&sset, SIGUSR2);
+    sigprocmask(SIG_SETMASK, &sset, NULL);
+    if ((code = sigsetjmp(sbuf, 1)) == 0)
+    {
+        bar();
+        ret = 0xDEADBEEF;
+    }
+    else
+    {
+        printf("siglongjmp() back to main, code = %d\n", code);
+      /* Make sure SIGUSR2 still blocked */
+        sigprocmask(SIG_SETMASK, NULL, &sset);
+        ret = sigismember(&sset, SIGUSR2)? 0 : -1;
+    }
+    printf("ret = %d\n", ret);
+
+    return ret;
+}
diff --git a/tests/device/test-openmp/jni/fib.c b/tests/device/test-openmp/jni/fib.c
index c2ec2e9..fb3e3e1 100644
--- a/tests/device/test-openmp/jni/fib.c
+++ b/tests/device/test-openmp/jni/fib.c
@@ -48,7 +48,7 @@
    time_end.tv_usec = time_end.tv_usec-time_start.tv_usec;
    time_end.tv_sec = time_end.tv_sec-time_start.tv_sec;
    time_end.tv_usec += (time_end.tv_sec*1000000);
-   printf("Time of Fibonacci with OpenMP : %lf sec\n",      time_end.tv_usec / 1000000.0);
+   printf("Execution time of The Fibonacci Numbers with OpenMP : %lf sec\n", time_end.tv_usec / 1000000.0);
    for(i = 0; i < MAX; i++)
        printf("%d ", FibNumber[i]);
    printf("\n-------------------------------\n");
diff --git a/tests/device/test-openmp/jni/openmp2.c b/tests/device/test-openmp/jni/openmp2.c
index c1788ce..aa5575d 100644
--- a/tests/device/test-openmp/jni/openmp2.c
+++ b/tests/device/test-openmp/jni/openmp2.c
@@ -7,6 +7,7 @@
 {
     int nthreads, tid;
     printf("SC_NPROCESSORS_ONLN: %d\n", sysconf (_SC_NPROCESSORS_ONLN));
+    printf("SC_NPROCESSORS_CONF: %d\n", sysconf (_SC_NPROCESSORS_CONF));
   #pragma omp parallel default(shared) private(nthreads, tid)
     /* Fork a team of threads giving them their own copies of variables */
     {
