1<!DOCTYPE html>
2
3<html>
4  <head>
5 <h2>Change List</h2>
6
7 <h3>Android NDK, Revision 10e</a> <em>(May 2015)</em></h3>
8      <dt>Important changes:</dt>
9      <dl>
10      <dd>
11      <ul>
12        <li>Integrated the workaround for Cortex-A53 Erratum 843419 into the
13        <code>aarch64-linux-android-4.9</code> linker. For more information on this workaround, see
14        <a href="https://sourceware.org/ml/binutils/2015-03/msg00446.html">Workaround for cortex-a53
15        erratum 843419.</a></li>
16
17         <li>Added Clang 3.6; <code>NDK_TOOLCHAIN_VERSION=clang</code> now picks that version
18         of Clang by default.</li>
19
20         <li>Removed Clang 3.4.</li>
21
22         <li>Removed GCC 4.6.</li>
23
24         <li>Implemented multithreading support in <code>ld.gold</code> for all architectures. It can
25         now link with or without support for multithreading; the default is to do it without.
26            <ul>
27            <li>To compile with multithreading, use the <code>--threads</code> option.</li>
28            <li>To compile without multithreading:, use the <code>--no-threads</code> option.</li>
29            </ul>
30            </li>
31
32         <li>Upgraded GDB/gdbserver to 7.7 for all architectures.</li>
33
34         <li>Removed the NDK package for 32-bit Darwin.</li>
35      </ul>
36      </dd>
37   <dl>
38
39
40     <dt>Important bug fixes:</dt>
41     <dd>
42     <ul>
43        <li>Fixed a crash that occurred when there were OpenMP loops outside of the main thread.</li>
44
45        <li>Fixed a GCC 4.9 internal compiler error (<i>ICE</i>) that occured when the user declared
46        <code>#pragma GCC optimize ("O0")</code>, but had a different level of optimization specified
47        on the command line. The <code>pragma</code> takes precedence.</li>
48
49        <li>Fixed an error that used to produce a crash with the following error message:
50<pre>
51in add_stores, at var-tracking.c:6000
52</pre>
53        </li>
54
55        <li>Implemented a workaround for a Clang 3.5 issue in which LLVM auto-vectorization
56        generates <code>llvm.cttz.v2i64()</code>, an instruction with no counterpart in the ARM instruction
57        set. When the compiler generates this instruction, the following error message results:
58
59<pre>
60fatal error: error in backend: Cannot select: 0xd5d9098: v2i64 = cttz 0xd5c4698 [ORD=6] [ID=40] dbg:/path/to/file
610xd5c4698: v2i64 = bitcast 0xd5fb9d0 [ORD=3] [ID=34] dbg:/path/to/file
620xd5fb9d0: v2f64,ch = load 0xd1decd0, 0xd5da728, 0xd5da8d8<LD16[%lsr.iv2123](align=1)> [ORD=3] [ID=28] dbg:/path/to/file
630xd5da728: i32,ch = CopyFromReg 0xd1decd0, 0xd65c7a0 [ORD=2] [ID=23]
640xd65c7a0: i32 = Register %vreg7 [ID=1]
650xd5da8d8: i32 = undef [ID=3]
66</pre>
67      </li>
68     </ul>
69     </dd>
70
71     <dt>Other bug fixes:</dt>
72     <dd>
73     <ul>
74        <li>Made the following header and library fixes:</li>
75           <ul>
76           <li>Fixed <code>PROPERTY_*</code> in <code>media/NdkMediaDrm.h</code>.</li>
77           <li>Fixed <code>sys/ucontext.h</code> for <code>mips64</code>.</li>
78           <li>Dropped the Clang version check for <code>__builtin_isnan</code> and
79           <code>__builtin_isinf</code>.</li>
80           <li>Added <code>android-21/arch-mips/usr/include/asm/reg.h</code>
81           and <code>android-21/arch-mips64/usr/include/asm/reg.h</code>.</li>
82           </ul>
83           </li>
84
85        <li>Fixed a spurious array-bounds warning that GCC 4.9 produced for x86, and reenabled the
86        array bounds warning that GCC 4.9 had produced for ARM. The warning for ARM had
87        previously been unconditionally disabled.</li>
88
89        <li>Fixed Clang 3.5 for <code>mips</code> and <code>mips64</code> to create a writable
90            <code>.gcc_except_table</code> section, thus matching GCC behavior. This change allows you
91            to avoid the following linker warning:
92
93<pre>
94.../ld: warning: creating a DT_TEXTREL in a shared object
95</pre>
96            </li>
97
98        <li>Backported a fix for <code>compiler-rt</code> issues that were causing crashes when Clang
99        compiled for <code>mips64</code>. For more information, see LLVM Issue
100        <a href="http://llvm.org/bugs/show_bug.cgi?id=20098">20098</a>.</li>
101
102        <li>Fixed Clang 3.5 crashes that occurred on non-ASCII comments. (Issue
103        <a href="https://code.google.com/p/android/issues/detail?id=81440">81440</a>)</li>
104
105        <li>Fixed <code>stlport collate::compare</code> to return <code>-1</code> and <code>1</code>. Previously,
106        it had returned arbitrary signed numbers.</li>
107
108        <li>Fixed <code>ndk-gdb</code> for 64-bit ABIs. (Issue
109        <a href="https://code.google.com/p/android/issues/detail?id=118300">118300</a>)</li>
110
111        <li>Fixed the crash that the HelloComputeNDK sample for RenderScript was producing on
112        Android 4.4 (Android API level 19). For more information, see
113        <a href="http://stackoverflow.com/questions/28057049/targeting-pre-lollipop-devices-using-renderscript-from-ndk-c">this page</a>.</li>
114
115        <li>Fixed <code>libc++ __wrap_iter</code> for GCC. For more information, see LLVM Issue
116        <a href="http://llvm.org/bugs/show_bug.cgi?id=22355">22355</a>.</li>
117
118        <li>Fixed <code>.asm</code> support for ABI <code>x86_64</code>.</li>
119
120        <li>Implemented a workaround for the GCC 4.8 <code>stlport</code> issue. (Issue
121        <a href="https://android-review.googlesource.com/#/c/127773">127773</a>)</li>
122
123        <li>Removed the trailing directory separator <code>\\</code> from the project path in Windows.
124        (Issue <a href="https://code.google.com/p/android/issues/detail?id=160584">160584</a>)
125        </li>
126
127        <li>Fixed a <code>no rule to make target</code> error that occurred when compiling a single
128        <code>.c</code> file by executing the <code>ndk-build.cmd</code> command from <code>gradle</code>. (Issue
129        <a href="https://code.google.com/p/android/issues/detail?id=66937">66937</a>)</li>
130
131        <li>Added the <code>libatomic.a</code> and <code>libgomp.a</code> libraries that had been missing from
132        the following host toolchains:
133        <ul>
134           <li><code>aarch64-linux-android-4.9</code></li>
135           <li><code>mips64el-linux-android-4.9</code></li>
136           <li><code>mipsel-linux-android-4.9</code></li>
137           <li><code>x86_64-4.9</code></li>
138        </ul>
139     </ul>
140     </dd>
141
142     <dt>Other changes:</dt>
143     <dd>
144       <ul>
145       <li>Added <code>ld.gold</code> for <code>aarch64</code>. The default linker remains <code>ld.bfd</code>.
146       To explicitly enable <code>ld.gold</code>, add <code>-fuse-ld=gold</code> to the
147       <code>LOCAL_LDFLAGS</code> or <code>APP_LDFLAGS</code> variable.</li>
148
149       <li>Built the MIPS and MIPS64 toolchains with <code>binutils-2.25</code>, which provides improved
150       R6 support.</li>
151
152       <li>Made <code>-fstandalone-debug</code> (full debug info) a default option for Clang.</li>
153
154       <li>Replaced <code>-fstack-protector</code> with <code>-fstack-protector-strong</code> for
155       the ARM, AArch64, X86, and X86_64 toolchains for GCC 4.9, Clang 3.5, and
156       Clang 3.6.</li>
157
158       <li>Added the <code>--package</code> command-line switch to <code>ndk-gdb</code> to allow the build
159       system to override the package name. (Issue
160       <a href="https://code.google.com/p/android/issues/detail?id=56189">56189</a>)</li>
161
162       <li> Deprecated <code>-mno-ldc1-stc1</code> for MIPS.  This option may not work with the new
163       <code>-fpxx</code> and <code>-mno-odd-spreg</code> options, or with the FPXX ABI.</li>
164
165       <li>Added MIPS MSA and R6 detection to <code>cpu-features</code>.</li>
166
167     </ul>
168     </dd>
169
170   </dl>
171