Commit 5f20e707 authored by Dan Albert's avatar Dan Albert
Browse files

Add a changelog for the current release.

Change-Id: Id9def30fbcf712e202e3980e50730ffaebefa2bc
parent 69f92525
Changelog for NDK Build 2490520
===============================
TODO(danalbert): Link to bug tracker.
Clang
-----
* **PSA: Everyone should be switching to Clang.**
* Clang has been updated to 3.8svn (r243773, build 2481030).
* Note that this is now a nearly pure upstream clang.
* Also note that Clang packaged in the Windows 64 NDK is actually 32-bit.
* Support for emulated TLS.
* `__thread` is now supported by the compiler by emulating ELF TLS with
pthread thread-specific data.
* C++11 `thread_local` will work in some cases, but will not work for data
with non-trivial destructors except when running on Marshmallow
(android-23) or newer because those cases require support from libc.
* Does not yet work with Aarch64 when TLS variables are accessed from a
shared library.
GCC
---
* **GCC in the NDK is now deprecated.**
* Time to start using Clang if you haven’t already. If you have problems
with Clang, please file bugs!
* The NDK will not be upgrading to 5.x, nor will we be accepting
non-critical backports.
* Maintenance for miscompiles and internal compiler errors in 4.9 will be
handled on a case by case basis.
* GCC 4.8 has been removed. All targets now use GCC 4.9.
* Synchronized with `google/gcc-4_9` to r224707 (from r214835).
NDK
---
* The samples are no longer included in the NDK. They are instead available on
[GitHub].
* The documentation is no longer included in the NDK. It is instead available
on the [Android Developer website].
* The layout of the NDK has changed quite a bit. This was to facilitate
splitting the many components into their own packages.
* This is likely to cause some disruption during the transition from r10
for anyone not using `ndk-build` or `make-standalone-toolchain.sh`, as
the compilers have moved.
* Make ARM standalone toolchains default to arm7.
* The old behavior can be restored by passing
`-target armv5te-linux-androideabi`.
* Use `-isystem` for platform includes.
* Warnings caused by bionic will no longer break app builds.
* Fixed segfault when throwing exceptions via gabi++ (see
http://b.android.com/179410).
* Change libc++’s inline namespace to `std::__ndk1` to prevent ODR issues with
platform libc++.
* Support for mips64r2 has been partially dropped. The rest will be dropped in
the future.
* All libc++ libraries are now built with libc++abi.
* Bump default `APP_PLATFORM` to Gingerbread.
* Expect support for Froyo and older to be dropped in a future release.
* Updated gabi++ `_Unwind_Exception` struct for 64 bits.
* cpufeatures: Detect SSE4.1 and SSE4.2 as well.
* cpufeatures: Detect cpu features on x86\_64 as well.
* Update libc++abi to upstream r231075.
* Added native tracing API to android-23.
* Added native multinetwork API to android-23.
* `byteswap.h`, `endian.h`, `sys/procfs.h`, `sys/ucontext.h`, `sys/user.h`, and
`uchar.h` have all been updated from ToT Bionic.
* `sys/cdefs.h` has been synchronized across all API levels.
* Support for `_WCHAR_IS_8BIT` has been removed.
* Fixed `fegetenv` and `fesetenv` for arm
* Fix end pointer size/alignment of `crtend_*` for mips64 and x86\_64
* Removed sed.
* Removed mclinker.
* Removed Perl.
Binutils
--------
* Unified binutils source between Android and ChromiumOS.
* For full details see https://android-review.googlesource.com/#/c/182865/.
* Gold for aarch64 should now be much more reliable. Use `-fuse-ld=gold` at
link time to use gold instead of bfd. The default will likely switch in the
next release.
* Good linking time improvement for huge binaries for Gold ARM backend (up to
50% linking time reduction for debuggable Chrome Browser).
* New option: `--pic-veneer`.
GDB
---
TODO(jmgao)
Yasm
----
* Yasm has been updated to version 1.3.0.
Known Issues
------------
* This is not intended to be a comprehensive list of all outstanding bugs.
* x86 ASAN does not currently work. See discussion on
https://android-review.googlesource.com/#/c/186276/
* The combination of Clang, x86, `stlport_static`, and optimization levels
higher than `-O0` causes test failures with `dynamic_cast`. See
https://android-review.googlesource.com/#/c/185920
* Exception handling will often fail when using `c++_shared` on ARM32. The root
cause is incompatibility between the LLVM unwinder used by libc++abi for
ARM32 and libgcc. This is not a regression from r10e.
What's Next?
------------
A significant proportion of the changes that went into this release were
organizational changes to the build and to the package layout. The reason for
this is that we will soon be integrating the NDK into the Android SDK manager as
several distinct components. The motivations for this change are:
* No wasted bandwidth or disk space on unneeded pieces. Do you really need 14
compilers? With the modular NDK you can download just the one Clang, or a
single set of GCCs.
* Easier updating. Just launch the SDK manager and install the updates rather
than downloading an entire new NDK.
* Quicker updates. In the future we’ll be able to release just a portion of the
NDK on a quicker schedule. No more waiting for the next big release for a
handful of bug fixes or a compiler update.
The integration with the SDK manager should happen Soon™.
[GitHub]: https://github.com/googlesamples/android-ndk
[Android Developer website]: http://developer.android.com/ndk/index.html
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment