Change List

Android NDK, Revision 10e (May 2015)

Important changes:
Important bug fixes:
  • Fixed a crash that occurred when there were OpenMP loops outside of the main thread.
  • Fixed a GCC 4.9 internal compiler error (ICE) that occured when the user declared #pragma GCC optimize ("O0"), but had a different level of optimization specified on the command line. The pragma takes precedence.
  • Fixed an error that used to produce a crash with the following error message:
    in add_stores, at var-tracking.c:6000
    
  • Implemented a workaround for a Clang 3.5 issue in which LLVM auto-vectorization generates llvm.cttz.v2i64(), an instruction with no counterpart in the ARM instruction set. When the compiler generates this instruction, the following error message results:
    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 [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]
    
Other bug fixes:
  • Made the following header and library fixes:
    • Fixed PROPERTY_* in media/NdkMediaDrm.h.
    • Fixed sys/ucontext.h for mips64.
    • Dropped the Clang version check for __builtin_isnan and __builtin_isinf.
    • Added android-21/arch-mips/usr/include/asm/reg.h and android-21/arch-mips64/usr/include/asm/reg.h.
  • 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.
  • Fixed Clang 3.5 for mips and mips64 to create a writable .gcc_except_table section, thus matching GCC behavior. This change allows you to avoid the following linker warning:
    .../ld: warning: creating a DT_TEXTREL in a shared object
    
  • Backported a fix for compiler-rt issues that were causing crashes when Clang compiled for mips64. For more information, see LLVM Issue 20098.
  • Fixed Clang 3.5 crashes that occurred on non-ASCII comments. (Issue 81440)
  • Fixed stlport collate::compare to return -1 and 1. Previously, it had returned arbitrary signed numbers.
  • Fixed ndk-gdb for 64-bit ABIs. (Issue 118300)
  • Fixed the crash that the HelloComputeNDK sample for RenderScript was producing on Android 4.4 (Android API level 19). For more information, see this page.
  • Fixed libc++ __wrap_iter for GCC. For more information, see LLVM Issue 22355.
  • Fixed .asm support for ABI x86_64.
  • Implemented a workaround for the GCC 4.8 stlport issue. (Issue 127773)
  • Removed the trailing directory separator \\ from the project path in Windows. (Issue 160584)
  • Fixed a no rule to make target error that occurred when compiling a single .c file by executing the ndk-build.cmd command from gradle. (Issue 66937)
  • Added the libatomic.a and libgomp.a libraries that had been missing from the following host toolchains:
    • aarch64-linux-android-4.9
    • mips64el-linux-android-4.9
    • mipsel-linux-android-4.9
    • x86_64-4.9
Other changes:
  • Added ld.gold for aarch64. The default linker remains ld.bfd. To explicitly enable ld.gold, add -fuse-ld=gold to the LOCAL_LDFLAGS or APP_LDFLAGS variable.
  • Built the MIPS and MIPS64 toolchains with binutils-2.25, which provides improved R6 support.
  • Made -fstandalone-debug (full debug info) a default option for Clang.
  • Replaced -fstack-protector with -fstack-protector-strong for the ARM, AArch64, X86, and X86_64 toolchains for GCC 4.9, Clang 3.5, and Clang 3.6.
  • Added the --package command-line switch to ndk-gdb to allow the build system to override the package name. (Issue 56189)
  • Deprecated -mno-ldc1-stc1 for MIPS. This option may not work with the new -fpxx and -mno-odd-spreg options, or with the FPXX ABI.
  • Added MIPS MSA and R6 detection to cpu-features.