<!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>