<!DOCTYPE html>
<html>
<head>
<h2>Change List</h2>
<h3>Android NDK, Revision 10e</a> <em>(May 2015)</em></h3>
<dt>Important changes:</dt>
<dl>
<dd>
<ul>
<li>Integrated the workaround for Cortex-A53 Erratum 843419 into the
<code>aarch64-linux-android-4.9</code> linker. For more information on this workaround, see
<a href="https://sourceware.org/ml/binutils/2015-03/msg00446.html">Workaround for cortex-a53
erratum 843419.</a></li>
<li>Added Clang 3.6; <code>NDK_TOOLCHAIN_VERSION=clang</code> now picks that version
of Clang by default.</li>
<li>Removed Clang 3.4.</li>
<li>Removed GCC 4.6.</li>
<li>Implemented multithreading support in <code>ld.gold</code> for all architectures. It can
now link with or without support for multithreading; the default is to do it without.
<ul>
<li>To compile with multithreading, use the <code>--threads</code> option.</li>
<li>To compile without multithreading:, use the <code>--no-threads</code> option.</li>
</ul>
</li>
<li>Upgraded GDB/gdbserver to 7.7 for all architectures.</li>
<li>Removed the NDK package for 32-bit Darwin.</li>
</ul>
</dd>
<dl>
<dt>Important bug fixes:</dt>
<dd>
<ul>
<li>Fixed a crash that occurred when there were OpenMP loops outside of the main thread.</li>
<li>Fixed a GCC 4.9 internal compiler error (<i>ICE</i>) that occured when the user declared
<code>#pragma GCC optimize ("O0")</code>, but had a different level of optimization specified
on the command line. The <code>pragma</code> takes precedence.</li>
<li>Fixed an error that used to produce a crash with the following error message:
<pre>
in add_stores, at var-tracking.c:6000
</pre>
</li>
<li>Implemented a workaround for a Clang 3.5 issue in which LLVM auto-vectorization
generates <code>llvm.cttz.v2i64()</code>, an instruction with no counterpart in the ARM instruction
set. When the compiler generates this instruction, the following error message results:
<pre>
fatal error: error in backend: Cannot select: 0xd5d9098: v2i64 = cttz 0xd5c4698 [ORD=6] [ID=40] dbg:/path/to/file
0xd5c4698: v2i64 = bitcast 0xd5fb9d0 [ORD=3] [ID=34] dbg:/path/to/file
0xd5fb9d0: v2f64,ch = load 0xd1decd0, 0xd5da728, 0xd5da8d8<LD16[%lsr.iv2123](align=1)> [ORD=3] [ID=28] dbg:/path/to/file
0xd5da728: i32,ch = CopyFromReg 0xd1decd0, 0xd65c7a0 [ORD=2] [ID=23]
0xd65c7a0: i32 = Register %vreg7 [ID=1]
0xd5da8d8: i32 = undef [ID=3]
</pre>
</li>
</ul>
</dd>
<dt>Other bug fixes:</dt>
<dd>
<ul>
<li>Made the following header and library fixes:</li>
<ul>
<li>Fixed <code>PROPERTY_*</code> in <code>media/NdkMediaDrm.h</code>.</li>
<li>Fixed <code>sys/ucontext.h</code> for <code>mips64</code>.</li>
<li>Dropped the Clang version check for <code>__builtin_isnan</code> and
<code>__builtin_isinf</code>.</li>
<li>Added <code>android-21/arch-mips/usr/include/asm/reg.h</code>
and <code>android-21/arch-mips64/usr/include/asm/reg.h</code>.</li>
</ul>
</li>
<li>Fixed a spurious array-bounds warning that GCC 4.9 produced for x86, and reenabled the
array bounds warning that GCC 4.9 had produced for ARM. The warning for ARM had
previously been unconditionally disabled.</li>
<li>Fixed Clang 3.5 for <code>mips</code> and <code>mips64</code> to create a writable
<code>.gcc_except_table</code> section, thus matching GCC behavior. This change allows you
to avoid the following linker warning:
<pre>
.../ld: warning: creating a DT_TEXTREL in a shared object
</pre>
</li>
<li>Backported a fix for <code>compiler-rt</code> issues that were causing crashes when Clang
compiled for <code>mips64</code>. For more information, see LLVM Issue
<a href="http://llvm.org/bugs/show_bug.cgi?id=20098">20098</a>.</li>
<li>Fixed Clang 3.5 crashes that occurred on non-ASCII comments. (Issue
<a href="https://code.google.com/p/android/issues/detail?id=81440">81440</a>)</li>
<li>Fixed <code>stlport collate::compare</code> to return <code>-1</code> and <code>1</code>. Previously,
it had returned arbitrary signed numbers.</li>
<li>Fixed <code>ndk-gdb</code> for 64-bit ABIs. (Issue
<a href="https://code.google.com/p/android/issues/detail?id=118300">118300</a>)</li>
<li>Fixed the crash that the HelloComputeNDK sample for RenderScript was producing on
Android 4.4 (Android API level 19). For more information, see
<a href="http://stackoverflow.com/questions/28057049/targeting-pre-lollipop-devices-using-renderscript-from-ndk-c">this page</a>.</li>
<li>Fixed <code>libc++ __wrap_iter</code> for GCC. For more information, see LLVM Issue
<a href="http://llvm.org/bugs/show_bug.cgi?id=22355">22355</a>.</li>
<li>Fixed <code>.asm</code> support for ABI <code>x86_64</code>.</li>
<li>Implemented a workaround for the GCC 4.8 <code>stlport</code> issue. (Issue
<a href="https://android-review.googlesource.com/#/c/127773">127773</a>)</li>
<li>Removed the trailing directory separator <code>\\</code> from the project path in Windows.
(Issue <a href="https://code.google.com/p/android/issues/detail?id=160584">160584</a>)
</li>
<li>Fixed a <code>no rule to make target</code> error that occurred when compiling a single
<code>.c</code> file by executing the <code>ndk-build.cmd</code> command from <code>gradle</code>. (Issue
<a href="https://code.google.com/p/android/issues/detail?id=66937">66937</a>)</li>
<li>Added the <code>libatomic.a</code> and <code>libgomp.a</code> libraries that had been missing from
the following host toolchains:
<ul>
<li><code>aarch64-linux-android-4.9</code></li>
<li><code>mips64el-linux-android-4.9</code></li>
<li><code>mipsel-linux-android-4.9</code></li>
<li><code>x86_64-4.9</code></li>
</ul>
</ul>
</dd>
<dt>Other changes:</dt>
<dd>
<ul>
<li>Added <code>ld.gold</code> for <code>aarch64</code>. The default linker remains <code>ld.bfd</code>.
To explicitly enable <code>ld.gold</code>, add <code>-fuse-ld=gold</code> to the
<code>LOCAL_LDFLAGS</code> or <code>APP_LDFLAGS</code> variable.</li>
<li>Built the MIPS and MIPS64 toolchains with <code>binutils-2.25</code>, which provides improved
R6 support.</li>
<li>Made <code>-fstandalone-debug</code> (full debug info) a default option for Clang.</li>
<li>Replaced <code>-fstack-protector</code> with <code>-fstack-protector-strong</code> for
the ARM, AArch64, X86, and X86_64 toolchains for GCC 4.9, Clang 3.5, and
Clang 3.6.</li>
<li>Added the <code>--package</code> command-line switch to <code>ndk-gdb</code> to allow the build
system to override the package name. (Issue
<a href="https://code.google.com/p/android/issues/detail?id=56189">56189</a>)</li>
<li> Deprecated <code>-mno-ldc1-stc1</code> for MIPS. This option may not work with the new
<code>-fpxx</code> and <code>-mno-odd-spreg</code> options, or with the FPXX ABI.</li>
<li>Added MIPS MSA and R6 detection to <code>cpu-features</code>.</li>
</ul>
</dd>
</dl>