1Changelog
2=========
3
4We've moved our bug tracker to GitHub: https://github.com/android-ndk/ndk/issues
5
6Clang
7-----
8
9 * **PSA: Everyone should be switching to Clang.**
10 * Clang has been updated to 3.8svn (r243773, build 2481030).
11     * Note that this is now a nearly pure upstream clang.
12     * Also note that Clang packaged in the Windows 64 NDK is actually 32-bit.
13 * Support for emulated TLS.
14     * `__thread` is now supported by the compiler by emulating ELF TLS with
15       pthread thread-specific data.
16     * C++11 `thread_local` will work in some cases, but will not work for data
17       with non-trivial destructors except when running on Marshmallow
18       (android-23) or newer because those cases require support from libc.
19     * Does not yet work with Aarch64 when TLS variables are accessed from a
20       shared library.
21
22GCC
23---
24
25 * **GCC in the NDK is now deprecated.**
26     * Time to start using Clang if you haven’t already. If you have problems
27       with Clang, please file bugs!
28     * The NDK will not be upgrading to 5.x, nor will we be accepting
29       non-critical backports.
30     * Maintenance for miscompiles and internal compiler errors in 4.9 will be
31       handled on a case by case basis.
32 * GCC 4.8 has been removed. All targets now use GCC 4.9.
33 * Synchronized with `google/gcc-4_9` to r224707 (from r214835).
34
35NDK
36---
37
38 * The samples are no longer included in the NDK. They are instead available on
39   [GitHub].
40 * The documentation is no longer included in the NDK. It is instead available
41   on the [Android Developer website].
42 * Make ARM standalone toolchains default to arm7.
43     * The old behavior can be restored by passing
44       `-target armv5te-linux-androideabi`.
45 * Use `-isystem` for platform includes.
46     * Warnings caused by bionic will no longer break app builds.
47 * Fixed segfault when throwing exceptions via gabi++ (see
48   http://b.android.com/179410).
49 * Change libc++’s inline namespace to `std::__ndk1` to prevent ODR issues with
50   platform libc++.
51 * Support for mips64r2 has been partially dropped. The rest will be dropped in
52   the future.
53 * All libc++ libraries are now built with libc++abi.
54 * Bump default `APP_PLATFORM` to Gingerbread.
55     * Expect support for Froyo and older to be dropped in a future release.
56 * Updated gabi++ `_Unwind_Exception` struct for 64 bits.
57 * cpufeatures: Detect SSE4.1 and SSE4.2 as well.
58 * cpufeatures: Detect cpu features on x86\_64 as well.
59 * Update libc++abi to upstream r231075.
60 * Added native tracing API to android-23.
61 * Added native multinetwork API to android-23.
62 * `byteswap.h`, `endian.h`, `sys/procfs.h`, `sys/ucontext.h`, `sys/user.h`, and
63   `uchar.h` have all been updated from ToT Bionic.
64 * `sys/cdefs.h` has been synchronized across all API levels.
65 * Support for `_WCHAR_IS_8BIT` has been removed.
66 * Fixed `fegetenv` and `fesetenv` for arm
67 * Fix end pointer size/alignment of `crtend_*` for mips64 and x86\_64
68 * Removed sed.
69 * Removed mclinker.
70 * Removed Perl.
71 * Removed symbols which are not exported by the current platform libc/m/dl from
72   all versions of NDK libc/m/dl
73 * libc/m/dl provide versioned symbols starting with v21
74
75Binutils
76--------
77
78 * Unified binutils source between Android and ChromiumOS.
79 * For full details see https://android-review.googlesource.com/#/c/182865/.
80 * Gold for aarch64 should now be much more reliable. Use `-fuse-ld=gold` at
81   link time to use gold instead of bfd. The default will likely switch in the
82   next release.
83 * Good linking time improvement for huge binaries for Gold ARM backend (up to
84   50% linking time reduction for debuggable Chrome Browser).
85 * New option: `--pic-veneer`.
86 * The 32-bit Windows package no longer contains ld.gold. It is available in
87   the 64-bit package.
88     * Current gold no longer builds when targeting 32-bit Windows (causes
89       internal compiler failures in mingw).
90
91GDB
92---
93
94 * gdb has been updated to version 7.10.
95 * ndk-gdb has been removed in favor of ndk-gdb.py.
96 * ndk-gdb.py has been significantly rewritten.
97   * Performance should be somewhat better.
98   * Error messages have been significantly improved.
99   * Relative project paths should always work now.
100   * Ctrl-C no longer kills the backgrounded gdbserver.
101   * Improve Windows support.
102
103Yasm
104----
105
106 * Yasm has been updated to version 1.3.0.
107
108Known Issues
109------------
110
111 * This is not intended to be a comprehensive list of all outstanding bugs.
112 * x86 ASAN does not currently work. See discussion on
113   https://android-review.googlesource.com/#/c/186276/
114 * The combination of Clang, x86, `stlport_static`, and optimization levels
115   higher than `-O0` causes test failures with `dynamic_cast`. See
116   https://android-review.googlesource.com/#/c/185920
117 * Exception handling will often fail when using `c++_shared` on ARM32. The root
118   cause is incompatibility between the LLVM unwinder used by libc++abi for
119   ARM32 and libgcc. This is not a regression from r10e.
120
121[GitHub]: https://github.com/googlesamples/android-ndk
122[Android Developer website]: http://developer.android.com/ndk/index.html
123