Home | History | Annotate | Download | only in text
      1 Android NDK ChangeLog:
      2 
      3 ----------------------------------------------------------------------------
      4 android-ndk-r9d
      5 ===
      6 
      7 IMPORTANT CHANGES:
      8 ---
      9 
     10 - Added Clang 3.4; NDK_TOOLCHAIN_VERSION=clang now picks Clang 3.4.
     11   GCC 4.6 remains the default.
     12 
     13 - For ARM: Added APP_ABI=armeabi-v7a-hard.  All ARM toolchain are rebuilt with
     14   additional multilib option -mfloat-abi=hard.  With "APP_ABI=armeabi-v7a-hard",
     15 >  1. ndk-build add "TARGET_CFLAGS += -mhard-float -D_NDK_MATH_NO_SOFTFP=1" and
     16       "TARGET_LDFLAGS += -Wl,--no-warn-mismatch -lm_hard" on top of the existing
     17       flags for armeabi-v7a.  The final library is installed at libs/armeabi-v7a,
     18       (ie. can't coexist with armeabi-v7a in the same APP_ABI). Also note that APP_ABI=all
     19       expands to "armeabi armeabi-v7a x86 mips" as before.
     20 >  2. make-standalone-toolchain.sh copies additional libaries under /hard directories.
     21       Add the above CFLAGS and LFLAGS in your makefile for GCC/clang to link with
     22       libraries in /hard
     23 
     24 - For X86: Added yasm and LOCAL_ASMFLAGS/EXPORT_ASMFLAGS.
     25   ndk-build use prebuilts/*/bin/yasm* to compile source specified in LOCAL_SRC_FILES
     26   with .asm extension
     27 
     28 - Updated mclinker to 2.6.0 with -gc-sections support
     29 
     30 - Added experimental libc++ support (upstream r201101).  To use it:
     31 >  1. Add "APP_STL := c++_static" or "APP_STL := c++_shared" in Application.mk.
     32       You may rebuild from source via "LIBCXX_FORCE_REBUILD := true"
     33 >  2. "make-standalone-toolchain.sh --stl=libc++" to create standalone
     34       toolchain with libc++ headers/lib
     35   See b.android.com/36496 and CPLUSPLUS-SUPPORT.html
     36 
     37 
     38 IMPORTANT BUG FIXES:
     39 ---
     40 
     41 - Fixed GCC 4.6/4.8 ARM EABI uncaught throw from unexpected exception
     42   handler.
     43   See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59392
     44 
     45 - Fixed GCC 4.8 not correctly resolve partial specialization of template with
     46   dependent non-type template argument.
     47   See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59052
     48 
     49 - Added more modules to prebuilt python
     50 >  1. linux: zlib, nis, crypt, _curses and _curses_panel
     51 >  2. darwin: zlib, bz2, _curses, _curses_panel, _hashlib, _ssl
     52 > See b.android.com/59902
     53 
     54 - Fixed X86/MIPS' gdbserver event_getmsg_helper
     55 
     56 - Fixed numerous issues in the RenderScript NDK toolchain, including issues with
     57   compatibility across older devices and C++ reflection.
     58 
     59 
     60 OTHER BUG FIXES:
     61 ---
     62 
     63 - Fixed headers
     64 > 1. Fixed typo in sources/android/support/include/iconv.h.
     65      See http://b.android.com/63806
     66 > 2. Fixed missing #include <sys/types.h> in android/asset_manager.h for API >= 13
     67      See http://b.android.com/64988
     68 > 3. Fixed missing #include <stdint.h> in android/rect_manager.h for API >= 14
     69 > 4. Added JNICALL to JNI_OnLoad and JNI_OnUnload in jni.h.  Note that JNICALL
     70      is defined to __NDK_FPABI__ (see sys/cdefs.h)
     71 > 5. Fixed the following headers to be inclued alone: android/tts.h, EGL/eglext.h,
     72      fts.h GLES/glext.h, GLES2/gl2ext.h, OMXAL/OpenMAXSL_Android.h, SLES/OpenSLES_Android.h,
     73      sys/prctl.h, sys/utime.h.  See http://b.android.com/64679
     74 > 6. Added sys/cachectl.h for all archs.  Only has effect to mips, but
     75      developers no longer need to put #ifdef __mips__ around it
     76 > 7. Fixed platforms/android-18/include/android/input.h by adding
     77      __NDK_FPABI__ to functions taking/returning float/double.
     78 > 8. Fixed MIPS' "struct stat" which was incorrectly set to its 64-bit
     79      counterpart for API>=12 (regression in the last r9c release)
     80 > 9. Define __PTHREAD_MUTEX_INIT_VALUE, __PTHREAD_RECURSIVE_MUTEX_INIT_VALUE,
     81      and __PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE for API < 9
     82 > 10. Added scalbln, scalblnf, and scalblnl to x86's libm.so for API >= 18
     83 
     84 - Fixed gabi++ std::unexpected() to call std::terminate() so that
     85   user-defined std::terminate() handler have chance to run
     86 
     87 - Fixed gabi++ to catch std::nullptr
     88 
     89 - Fixed samples Teapot and MoreTeapots to
     90 >  1. Rendering issue in Tegra2/3.  Now having medium precision for specular
     91       variable, so that specular power can be <1.0
     92 >  2. Workaround an issue where SYSTEM_UI_FLAG_IMMERSIVE_STICKY is invalidated
     93       when a volume button is pressed.  Issue remains: Immersive mode still does
     94       not recover when the screen has been rotated, due to onSystemUiVisibilityChange
     95       is not triggered when screen is rotated.
     96 
     97 - Fixed ndk-build to add -rpath-link=$SYSROOT/usr/lib and -rpath-link=$TARGET_OUT
     98   for linking executable with ld.bfd.  See b.android.com/64266
     99 
    100 - Removed -Bsymbolic from all STL build
    101 
    102 - Fixed ndk-gdb-py.cmd by setting SHELL as env. var. instead of passing it to
    103   python.exe which can't understand it.
    104   See b.android.com/63054
    105 
    106 - Fixed "make-standalone-toolchain.sh --stl=stlport" to copy instead of symlink
    107   gabi++ headers, otherwise the one created in cygwin wont' be understood by
    108   cmd.exe and MinGW shell
    109 
    110 
    111 OTHER CHANGES:
    112 ---
    113 
    114 - "chmod a+x" all *cmd scripts previously intended for use in CMD.exe only,
    115   in case developers prefer to use ndk-build.cmd in cygwin instead of the
    116   recommended ndk-build
    117 
    118 - Speed up make-standalone-toolchain.sh by moving instead of copying if
    119   destination directory (eg. --install-dir=<dir>) doesn't exist.
    120 
    121 
    122 ----------------------------------------------------------------------------
    123 android-ndk-r9c
    124 ===
    125 
    126 IMPORTANT CHANGES:
    127 ---
    128 
    129 - This is a bug-fix-only release.
    130 
    131 
    132 IMPORTANT BUG FIXES:
    133 ---
    134 
    135 - Fixed GCC 4.8 ARM where stack pointer is restored too early than access
    136   to varaible in stack frame via frame pointer.
    137   See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58854
    138 
    139 - Fixed GCC 4.8 libstdc++ where the generated code random segfault on std::nth_element
    140   See http://b.android.com/62910
    141 
    142 - Fixed GCC 4.8 ICE in cc1/cc1plus with -fuse-ld=mcld.  Message reads:
    143 >  cc1: internal compiler error: in common_handle_option, at opts.c:1774
    144 
    145 - Fixed -mhard-float support for __builtin math functions.
    146   See http://b.android.com/62496.  Please track comment of http://b.android.com/61784
    147   for on-going fixes for -mhard-float with STL
    148 
    149 
    150 OTHER BUG FIXES:
    151 ---
    152 
    153 - Fixed headers
    154 > 1. Fixed prototype of poll to poll(struct pollfd *, nfds_t, int); in poll.h
    155 > 2. Added utimensat and futimens to libc.so to API level >=12 and >=19, respectively.
    156 > 3. Added missing clock_settime() and clock_nanosleep() in time.h for API>=8.
    157 > 4. Added CLOCK_MONOTONIC_RAW, CLOCK_REALTIME_COARSE, CLOCK_MONOTONIC_COARSE,
    158      CLOCK_BOOTTIME, CLOCK_REALTIME_ALARM, and CLOCK_BOOTTIME_ALARM in time.h.
    159      Removed obsolete CLOCK_REALTIME_HR and CLOCK_MONOTONIC_HR.
    160 
    161 - Refactored samples Teapot, MoreTeapots and source/android/ndk_helper.
    162   Use hard float-abi for armeabi-v7a, added immersive mode in android-19, etc.
    163   Also fix crash on X86 device in  /system/lib/libdvm.so Check_ReleaseStringUTFChars
    164 
    165 - Fixed ndk-build fails in cygwin if NDK package is referenced via symlink
    166 
    167 - Fixed ndk-build.cmd fails in windows cmd.exe if LOCAL_SRC_FILES
    168   contain absolute path.
    169   See https://android-review.googlesource.com/#/c/69992
    170 
    171 - Fixed ndk-stack to proceed even when it can't parse a frame due to
    172   unable to locate routine, filename, or line number, in which case "??"
    173   is printed.
    174 
    175 - Fixed ndk-stack windows-x64_64 erroneously matches frame line with in "stack:"
    176   section even when the line has no word "pc", "eip", or "ip" in it, eg.
    177 >     I/DEBUG   ( 1151):     #00  5f09db68  401f01c4  /system/lib/libc.so
    178 
    179 - Fixed gabi++ to not use malloc() to allocate C++ thread-local
    180   objects, and avoid dead-lock in gabi++ when libc.debug.malloc is non-zero in
    181   userdebug/eng Android platform builds
    182 
    183 
    184 OTHER CHANGES:
    185 ---
    186 
    187 - Added LOCAL_EXPORT_LDFLAGS
    188 
    189 - Introducing NDK_PROJECT_PATH=null for use in an integrated build system
    190   where options are explicitly passed to ndk-build.  With it ndk-build
    191   make no attempt to look for NDK_PROJECT_PATH, and as a result the following
    192   variables depending on NDK_PROJECT_PATH to be explicitly specified
    193   (since they can on longer derive default value from NDK_PROJECT_PATH when it's null):
    194   NDK_OUT, NDK_LIBS_OUT, APP_BUILD_SCRIPT, NDK_DEBUG (optional, default to 0),
    195   and other APP_* used to be in Application.mk
    196 
    197 - Allow APP_ABI to be comma-delimited list, eg. APP_ABI := "armeabi,armeabi-v7a"
    198 
    199 - Rebuild all STL with debugging info (ie. "-g") in separate optional package
    200   android-ndk-r9c-cxx-stl-libs-with-debugging-info.zip.
    201   This helps ndk-stack to provide better stack dump across STL.
    202   The code/size of the final stripped shouldn't be affected.
    203 
    204 - Enhanced hello-jni samples to report APP_ABI at compilation
    205 
    206 - Static libraries are built with Deterministic (option D) mode of ar
    207   tool.  See http://b.android.com/60705
    208 
    209 
    210 ----------------------------------------------------------------------------
    211 android-ndk-r9b
    212 ===
    213 
    214 IMPORTANT CHANGES:
    215 ---
    216 
    217 - Updated include/android/*h and math.h for all API up to 18, add API level 13,
    218   15, 16 and 17 in the process.
    219   See commit message in https://android-review.googlesource.com/#/c/68012
    220   and https://android-review.googlesource.com/#/c/68014 for added APIs.
    221   Issues http://b.android.com/47150, http://b.android.com/58528, and
    222   http://b.android.com/38423
    223 
    224 - Added API19 for Renderscript binding support
    225 
    226 - Supported -mhard-float in the existing "armeabi-v7a" ABI.  See
    227   tests/device/hard-float/jni/Android.mk for details and current
    228   restriction on Clang.
    229 
    230 - Rebased GCC 4.8 to 4.8.2, and add diagnostic color support.  To enable
    231   it, set -fdiagnostics-color=auto or -fdiagnostics-color=always, or
    232   simply export GCC_COLORS, eg.
    233 >    export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
    234 
    235 >  See http://gcc.gnu.org/onlinedocs/gcc/Language-Independent-Options.html
    236 
    237 - Added two new samples to demostrate OpenGL ES3 features: Teapot and MoreTeapots.
    238   Run on devices with API>=16 (Don't run on emulator)
    239 
    240 - Both GCC 4.7 and Clang 3.2 are deprecated, and will be removed from the next release.
    241 
    242 
    243 IMPORTANT BUG FIXES:
    244 ---
    245 
    246 - Fixed ARM GCC 4.6 thumb2 fails to generate 16bit relative jump table.
    247   See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48328
    248 
    249 - Fixed GCC 4.8 ICE on g++.dg/cpp0x/lambda/lambda-defarg3.C
    250   See https://android-review.googlesource.com/#/c/62770 and http://gcc.gnu.org/ml/gcc/2013-07/msg00424.html
    251 
    252 - Fixed Windows 32-bit *-gdb.exe fail to launch.
    253   See http://b.android.com/58975
    254 
    255 - Fixed GCC 4.8 ICE when building bullet library with error message reads:
    256 >  internal compiler error: verify_flow_info failed
    257 
    258 >  See http://b.android.com/58916 and http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58165
    259 
    260 - Fixed GDB/ARM to skip ARM.exidx data for unwinding in prologue code.
    261   Add a command "set arm exidx-unwinding" to control exidx-based stack
    262   unwinding.
    263   See http://b.android.com/55826
    264 
    265 - Fixed Clang 3.3 MIPS where HI and LO registers are incorrectly reused.
    266 
    267 - Fixed MIPS 4.7 ICE with erro reads:
    268 >  external/icu4c/i18n/decimfmt.cpp:1322:1: internal compiler error: in dbx_reg_number, at dwarf2out.c:10185
    269 
    270 >  See http://gcc.gnu.org/ml/gcc-patches/2012-12/msg00830.html
    271 
    272 
    273 OTHER BUG FIXES:
    274 ---
    275 
    276 - Fixed headers
    277 > 1. Fixed ARM's WCHAR_MIN / WCHAR_MAX to be unsigned according to spec.  (X86/MIPS'
    278      are signed).  Define _WCHAR_IS_ALWAYS_SIGNED to restore old behavior.
    279      See http://b.android.com/57749
    280 > 2. Fixed include/netinet/tcp.h to contain TCP_INFO state enum.
    281      See http://b.android.com/38881
    282 > 3. Fixed cdefs_elh.h _C_LABEL_STRING macro which causes warnings with gcc 4.8 toolchain in c++11 mode.
    283      See http://b.android.com/58135, http://b.android.com/58652
    284 > 4. Removed non-existence functions imaxabs and imaxdiv from header inttypes.h
    285 > 5. Marked pthread_exit() as __noreturn, and pthread_self() as __pure2.
    286      See http://b.android.com/60686
    287 > 6. Added missing mkdtemp() already exists in bionic in stdlib.h
    288 
    289 - Fixed samples/gles3jni build with Clang at android-11
    290 
    291 - Fixed mclinker to allow mulitple occurrences of the following options: -gc-sections and --eh-frame-hdr.
    292 
    293 - Fixed mclinker to accept --no-warn-mismatch
    294 
    295 - Fixed cpu-features not to assume all VFPv4 devices support IDIV.
    296   Now it only adds IDIV to white-listed devices (Nexus 4 at this moment)
    297   http://b.android.com/57637
    298 
    299 - Fixed android_native_app_glue.c to stop errors being logged erroneously on event predispatch
    300 
    301 - Fixed all operations on gabi++ terminate and unexpected_handler to be thread-safe
    302 
    303 - More fixes on Clang -integrated-as to pass tests ssax-instructions and fenv
    304 
    305 - Fixed GCC 4.6/4.7/4.8 to pass linker option --eh-frame-hdr even for
    306   static executable.  See http://gcc.gnu.org/ml/gcc-patches/2012-09/msg00969.html
    307 
    308 - Fixed extra apostrophe in docs/CPU-ARCH-ABIS.html
    309   See docs/NDK-DEPENDS.html, http://b.android.com/60142
    310 
    311 - Fixed extra quotes in ndk-build output on Windows
    312   See http://b.android.com/60649
    313 
    314 - Fixed Clang 3.3 to compile ARM atomic builtin __atomic_fetch_add/sub/or/...
    315 
    316 - Fixed Clang 3.3 ICE on customized vfprintf. See
    317   http://llvm.org/bugs/show_bug.cgi?id=16344
    318 
    319 
    320 OTHER CHANGES:
    321 ---
    322 
    323 - Enabled OpenMP for all GCC:  Add the following flags: "LOCAL_CFLAGS += -fopenmp"
    324   and "LOCAL_LDFLAGS += -fopenmp".
    325   Please find examples in tests/device/test-openmp
    326 
    327 - Significantly reduced the size of ld.mcld (1.5MB vs. ld.bfd 3.5MB and ld.gold 7.5MB)
    328   and result in ~20% speed up too.
    329 
    330 - Added LOCAL_CONLYFLAGS and APP_CONLYFLAGS to specify options applicable to C only
    331   but not C++.  The reason being that the existing LOCAL_CFLAGS and APP_CFLAGS are
    332   also used for C++ compilation (to save trouble of specifying most options twice),
    333   option like -std=gnu99 may fail g++ (warning) and clang++ (error).
    334 
    335 - Added gabi++ array helper functions
    336 
    337 - All libgcc.a in gcc are built with -funwind-tables to allow stack to unwind past __aeabi_idiv0
    338   for example
    339 
    340 - Added Ingenic MXU support in MIPS GCC 4.6/4.7/4.8 with new option -mmxu
    341 
    342 - Extended MIPS GCC 4.6/4.7/4.8 -mldc1-sdc1 to control ldxc1/sdxc1 too
    343 
    344 - Added crazy linker. See sources/android/crazy_linker/README.TXT
    345 
    346 - Fixed bitmap-plasma to draw on full screen rather than 200x200
    347 
    348 - Reduced linux and darwin toolchain size by 25% (by symlink to
    349   identical files)
    350 
    351 
    352 ----------------------------------------------------------------------------
    353 android-ndk-r9
    354 ===
    355 
    356 IMPORTANT CHANGES:
    357 ---
    358 
    359 - Added GLES3 headers/libraries and new API level 18.
    360   See docs/STABLE-APIS.html and the new samples/gles3jni/README
    361 
    362 - Added GCC 4.8 compiler.  Since GCC 4.6 is still the default,
    363   you need to explicitly enable it:
    364 >  1. For ndk-build: Either export NDK_TOOLCHAIN_VERSION=4.8 or add it
    365      in Application.mk.
    366 >  2. For standalone: Use "--toolchain=" option in make-standalone-toolchain.sh.
    367      eg. "--toolchain=arm-linux-androideabi-4.8"
    368 
    369 >  Note that:
    370 
    371 >  1. -Wunused-local-typedefs is enabled by -Wall. Be sure to add "\__attribute__((unused))"
    372      if you use compile-time assert like sources/cxx-stl/stlport/stlport/stl/config/features.h
    373      line #311.
    374      See https://android-review.googlesource.com/#/c/55460
    375 >  2. Since 4.7 -munaligned-access is default for ARMv6+.  You may
    376      compile with -mno-unaligned-access for kernel not supporting it.
    377 
    378 - Added Clang 3.3; NDK_TOOLCHAIN_VERSION=clang now picks Clang 3.3.
    379 
    380 - Both GCC 4.4.3 and Clang 3.1 are deprecated, and will be removed
    381   from the next release.
    382 
    383 - Gdb is now built with python 2.7.5 support.
    384 
    385 - Added mclinker for Windows host.  Since ld.gold is the default
    386   where available, you need to add -fuse-ld=mcld in LOCAL_LDFLAGS or
    387   APP_LDFLAGS to explicitly enable it.
    388 
    389 - New tool ndk-depends to print ELF library dependencies.
    390   See docs/NDK-DEPENDS.html, http://b.android.com/53486
    391 
    392 
    393 IMPORTANT BUG FIXES:
    394 ---
    395 
    396 - Fixed potential event handling issue in android_native_app_glue.
    397   See http://b.android.com/41755
    398 
    399 - Fixed ARM/GCC-4.7 to generates sufficient alignment for NEON
    400   instruction vst/vld.
    401   See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57271
    402 
    403 - Fixed GCC 4.4.3/4.6/4.7 ICE at const negative index to string literal
    404   See http://b.android.com/54623
    405 
    406 - Fixed GCC 4.7 segfault on const init to object address.
    407   See http://b.android.com/56508
    408 
    409 - Fixed GCC 4.6 ARM broken -Os on boost 1.52.0.
    410   See http://b.android.com/42891
    411 
    412 - Fixed libc.so and libc.a to contain wait4 already exist in header.
    413   See http://b.android.com/19854
    414 
    415 - Fixed x86's libc.so and libc.a to contain clone()
    416 
    417 - Fixed LOCAL_SHORT_COMMANDS bug where linker.list file is empty and not
    418   used.
    419   See http://b.android.com/57105
    420 
    421 - Fixed GCC MIPS on darwin to use CFI directives.  Without this,
    422   "ld.mcld --eh-frame-hdr" fail very often.
    423 
    424 - Fixed Clang 3.2 X86/MIPS ICE in llvm/lib/VMCore/Value.cpp.
    425   See https://android-review.googlesource.com/#/c/59021
    426 
    427 - Fixed GCC 4.7 64-bit Windows assembler crash with error message reads:
    428   "out of memory allocating 4294967280 bytes"
    429 
    430 - ndk-gdb "--start" or "--launch" now has application waits for gdbserver to
    431   attach, which allows breakpoints set in early execution path (eg. JNI) to
    432   be hit more reliably.  It does needs jdb and produces warning about pending
    433   breakpoints.  You may specify "--nowait" to restore previous behavior.
    434   See http://b.android.com/41278
    435 
    436 - Fixed GDB crashes when library list is empty
    437 
    438 - Fixed GDB crashes when "stepi" past a "bx pc" or "blx pc" Thumb instruction
    439   See http://b.android.com/56962 and http://b.android.com/36149
    440 
    441 - Fixed MIPS gdbserver to look for DT_MIPS_RLD_MAP instead of DT_DEBUG.
    442   See http://b.android.com/56586
    443 
    444 - Fixed ndk-build circular dependency, eg. A->B, B->B, then B was dropped from build.
    445   See http://b.android.com/56690
    446 
    447 
    448 OTHER BUG FIXES:
    449 ---
    450 
    451 - Fixed ndk-build to be able to replace NDK_TOOLCHAIN_VERSION=clang specified at
    452   commandline to clang3.2. (Fine if it's specified in environment variable).
    453   Error message reads
    454 
    455     ... ndk/toolchains/arm-linux-androideabi-clang/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc
    456     Command not found
    457 
    458 - Fixed gabi++ sizeof(_Unwind_Exception) to be 24 for MIPS in Clang.
    459   See https://android-review.googlesource.com/#/c/54141
    460 
    461 - Fixed ndk-build to ensure that built libraries actually are removed on
    462   ndk-build clean, from projects that include prebuilt static libraries.
    463   See See http://b.android.com/53527,
    464   https://android-review.googlesource.com/#/c/54461/ and
    465   https://android-review.googlesource.com/#/c/54480
    466 
    467 - Fixed NDK_ANALYZE=1 to be less verbose
    468 
    469 - Fixed gnu-libstdc++/Android.mk to include /backward path.
    470   Error message reads:
    471 
    472     sources/cxx-stl/gnu-libstdc++/4.6/include/ext/hash_map:61:30: fatal
    473     error: backward_warning.h: No such file or directory
    474 
    475 >  See http://b.android.com/53404
    476 
    477 - Fixed stlport new somtimes return randon values
    478 
    479 - Fixed ndk-gdb to match in the order of CPU_ABIS, not APP_ABIS.
    480   See http://b.android.com/54033
    481 
    482 - Fixed NDK 64-bit on MacOSX choses wrong path for compiler.
    483   See http://b.android.com/53769
    484 
    485 - Fixed to detect 64-bit Windows Vista.
    486   See http://b.android.com/54485
    487 
    488 - Fixed X86 ntonl/swap32.  Error message reads:
    489     error: invalid 'asm': operand number out of range"
    490 
    491 >  See http://b.android.com/54465 and
    492   https://android-review.googlesource.com/#/c/57242
    493 
    494 - Fixed ld.gold to merge string literals
    495 
    496 - Fixed ld.gold to handle large symbol alignemnt
    497 
    498 - Fixed ld.gold to enable "--sort-section=name" option
    499 
    500 - Fixed GCC 4.4.3/4.6/4.7 to supress -export-dynamic for statically linked
    501   programs.  GCC no longer adds .interp section for statically linked programs.
    502 
    503 - Fixed GCC 4.4.3 stlport compilation error about inconsistent typedef of
    504   _Unwind_Control_Block.
    505   See https://android-review.googlesource.com/#/c/54426
    506 
    507 - Fixed awk scripts to handle AndroidManifest.xml created on Windows
    508   which may contain trailing \r, and cause error message reads.
    509   See http://b.android.com/42548
    510 
    511 >  __gmsl:512: *** non-numeric second argument to wordlist' function: ''. Stop.
    512 
    513 >  Invalid attribute name:
    514 >      package
    515 
    516 - Fixed make-standalone-toolchain.sh to probe the prebuilts/ dir to detect the
    517   appropriate default host bitness.
    518 
    519 - Fixed clang3.2 -integrated-as
    520 
    521 - Fixed clang3.2 ARM EHABI compact model pr1/pr2 handlerdata
    522 
    523 - Fixed clang error with option "-mllvm -arm-enable-ehabi" which reads
    524 
    525 >    clang: for the -arm-enable-ehabi option: may only occur zero or one times!
    526 
    527 - Fixed NDK fails to build if there's no uses-sdk element in AndroidManifest.xml.
    528   See http://b.android.com/57015
    529 
    530 
    531 OTHER CHANGES:
    532 ---
    533 
    534 - Fixed headers
    535 >  1. \__set_errno in errno.h is deprecated, and libc.so no longer exports it.
    536      To be compatible in the meantime, __set_errno becomes an inlined function in header
    537 >  2. \#include "stdint.h" in elf.h.
    538     See http://b.android.com/55443
    539 >  3. Fixed sys/un.h to be included on its own.
    540     See http://b.android.com/53646
    541 >  4. Fixed MotionEvent_getHistorical family of APIs in usr/include/android/input.h to
    542     all take const AInputEvent* motion_event.
    543     See http://b.android.com/55873
    544 >  5. Fixed malloc_usable_size to take "const void*".
    545     See http://b.android.com/55725
    546 >  6. Fixed stdint.h to be more compatible with C99.
    547     See https://android-review.googlesource.com/#/c/46821
    548 >  7. Fixed wchar.h not to redefine WCHAR_MAX/WCHAR_MIN
    549 >  8. Fixed <inttypes.h> declaration for pointer-related PRI/SCN macros.
    550       See http://b.android.com/57218
    551 >  9. Changed sys/cdefs.h so __WCHAR_TYPE__ is 32-bit even for API < 9,
    552       ie. wchat_t is 32-bit for all API level.
    553       Define _WCHAR_IS_8BIT to restore old behavior.
    554       See http://b.android.com/57267
    555 
    556 - Added more fomatting in NDK docs/, and misc docs/ fixes including callbacks/threads and others.
    557 
    558 - Support "thin-archive" for building static libraries.
    559   See http://b.android.com/40303 and ANDROID-MK.html
    560 
    561 - Script make-standalone-toolchain.sh now supports stlport
    562   in addition to gnustl, with --stl=stlport.
    563   See http://b.android.com/53472 and STANDALONE-TOOLCHAIN.html
    564 
    565 - Script make-standalone-toolchain.sh --llvm-version= now also
    566   creates scripts $TOOLCHAIN_PREFIX-clang and $TOOLCHAIN_PREFIX-clang++
    567   in addition to clang and clang++, to avoid using host's clang/clang++
    568   by accident.
    569 
    570 - Added two flags to re-enable two optimizations in upstream Clang
    571   but disabled in NDK for better compatibility with code used to be
    572   compiled by GCC:
    573 >  1. Added a flags -fcxx-missing-return-semantics to re-enable "missing
    574      return semantics" in clang 3.2+.  Normally for a value-returning
    575      function all paths should terminate with a return statment.  If not,
    576      clang inserts undefined instruction (or trap in debug mode) at path
    577      w/o return statement.  If you are sure your code is correct, use
    578      this flag for optimizer to take advantage of the undefined behavior.
    579      If you are not sure, don't use this flag.  The caller may still receiver
    580      random incorrect value, but optimizer won't exploit it and make thing
    581      even worse to debug.
    582 >  2. Added a flag -fglobal-ctor-const-promotion to re-enable promoting
    583      global variables with static constructor to constant.   With this
    584      flag, the global variable optimization pass of LLVM will try to
    585      evalutate the global variables with static constructors, and promote
    586      the global constants.  Although this optimization is correct, it may
    587      cause some incompatability with code compiled by gcc.  For example,
    588      code may do const_cast to cast the constant to mutable and modify it.
    589      In GCC the variable is in read-write and the code run by accident.  But
    590      in Clang the const variable will be in read-only memory and crash
    591 
    592 - Added -mldc1-sdc1 to MIPS GCC and Clang compilers.  By default
    593   compilers align 8-byte objects properly and emit instructions
    594   ldc1/sdc1 to move them around.  If your app use custom allocator
    595   which doesn't always align new object 8-byte boundary like the default
    596   one does, your app may crashes due to ldc1/sdc1 on unaligned memory.
    597   In this case you may use -mno-ldc1-sdc1 to workaround.
    598 
    599 - Downgrade warning to "info" if APP_PLATFORM_LEVEL is larger than APP_MIN_PLATFORM_LEVEL.
    600   APP_PLATFORM_LEVEL may be lower than APP_PLATFORM in jni/Application.mk
    601   because NDK doesn't have headers for all level, and the actual level is
    602   shifted downward.  APP_MIN_PLATFORM_LEVEL is retrieved from android:minSdkVersion
    603   in AndroidManifest.xml.
    604   See http://b.android.com/39752
    605 
    606 - cpu-features.c: add android_getCpuIdArm() and android_setCpuArm()
    607   This allows retrieving the ARM CPUID information easily.
    608   See http://b.android.com/53689
    609 
    610 - Clang now compiles with GCC 4.8's as/ld in ndk-build.
    611   Note that from GCC 4.7, "monotonic_clock" and "is_monotonic" are
    612   renamed to "steady_clock" and "is_steady", respectively
    613 
    614 - Added new warnings in ndk-build:
    615 >  1. if LOCAL_LDLIBS/LDFLAGS are used in static library modules
    616 >  2. if there is no module to build
    617 >  3. non-system libraries used in LOCAL_LDLIBS/LDFLAGS of shared library
    618      or executable modules
    619 
    620 - Updated ndk-build so that if APP_MODULES is not defined and only static libraries
    621   are listed in Android.mk, force-build all of them.
    622   See http://b.android.com/53502
    623 
    624 - ndk-build now supports absolute paths in LOCAL_SRC_FILES
    625 
    626 - Executable "`*-gdbtui", which is equivalent to "`*-gdb -tui", is removed for the sake of space.
    627 
    628 - Issue warning when EDG front-end turns _STLP_HAS_INCLUDE_NEXT
    629   back on.
    630   See http://b.android.com/53646
    631 
    632 - Added NDK_LIBS_OUT to override path for libraries/gdbserver from the default
    633   $PROJECT/libs.  See OVERVIEW.html
    634 
    635 - Changed ndk-build defaults to compile code with format string protection
    636   "-Wformat -Werror=format-security".  You may set
    637   LOCAL_DISABLE_FORMAT_STRING_CHECKS=true to disable it.
    638   See ANDROID-MK.html
    639 
    640 - Added STL pretty-print support in ndk-gdb-py.
    641   See NDK-GDB.html
    642 
    643 - Misc build/test
    644 >  - Added tests based on googletest frameworks
    645 >  - toolchain build script warns if shell isn't bash
    646 
    647 
    648 -------------------------------------------------------------------------------
    649 android-ndk-r8e
    650 ===
    651 
    652 IMPORTANT CHANGES:
    653 ---
    654 
    655 - NDK now delivers additional 64-bit host toolchain set (package name suffix
    656   `*-x86_64.*`)
    657 
    658 >  1. The ndk-build script uses 64-bit toolchain if it's present and your OS
    659      supports it.  If you install both 32-bit and 64-bit toolchain on 64-bit
    660      OS, you may export NDK_HOST_32BIT=1 or add it to the command-line to
    661      always use the 32-bit host toolchain.
    662 
    663 >  2. For standalone: add to make-standalone-toolchain.sh "--system=linux-x86_64"
    664      on Linux or "--system=darwin-x86_64" on MacOSX to generate 64-bit host
    665      toolchain instead of the default 32-bit
    666 
    667 >  See NDK-BUILD.html
    668 
    669 - Added Clang 3.2 compiler.  Since GCC 4.6 is still the default, you need to
    670   explicitly enable it:
    671 
    672 > 1. For ndk-build: Either export NDK_TOOLCHAIN_VERSION=clang3.2 (or
    673      NDK_TOOLCHAIN_VERSION=clang which picks the most recent among the
    674      clang compilers in the package) or add it in Application.mk.
    675 
    676 > 2. For standalone: Add "--llvm-version=3.2" to make-standalone-toolchain.sh
    677      and replace CC and CXX in your makefile with <tool-path>/bin/clang
    678      and <tool-path>/bin/clang++.
    679 
    680 - Added static code analyzer for Linux/MacOSX hosts
    681 
    682 >  1. For ndk-build, either export NDK_ANALYZE=1 or add it to the command-line.
    683 
    684 >  2. For standalone, please refer to ndk-build for example to run scan-build
    685      using /path/to/standalone/bin/<arch>/analyzer.
    686 
    687 >  This feature is experimental now but welcome to try and report issues.
    688 
    689 - Added MCLinker for Linux/MacOSX hosts.  Since ld.gold is the default
    690   where available, you need to add -fuse-ld=mcld in LOCAL_LDFLAGS or
    691   APP_LDFLAGS to explicitly enable it.
    692 
    693 >  This feature is experimental now but welcome to try and report issues.
    694   Please find project page: https://code.google.com/p/mclinker/
    695 
    696 - ndk-build now uses topological sort for module dependencies, ie.
    697   it automatically sorts out the order of libraries specified in
    698   LOCAL_STATIC_LIBRARIES, LOCAL_WHOLE_STATIC_LIBRARIES and
    699   LOCAL_SHARED_LIBRARIES.
    700 
    701 >  See http://b.android.com/39378 and an example in tests/build/topological-sort.
    702 
    703 
    704 IMPORTANT BUG FIXES:
    705 ---
    706 
    707 - Fixed build script to build all toolchains in -O2.  Toolchains
    708   in previous releases were incorrectly built without optimization.
    709 
    710 - Fixed build script which unconditionally builds Clang/llvm for MacOSX
    711   in 64-bit
    712 
    713 - Fixed GCC 4.6/4.7 ICE gen_thumb_movhi_clobber at config/arm/arm.md:5832.
    714   See http://b.android.com/52732
    715 
    716 - Fixed GCC/ARM 4.6/4.7 fails to link code using 64-bit atomic built-in
    717   functions.
    718   See http://b.android.com/41297
    719 
    720 - Fixed GCC 4.7 linker error reads like
    721   .../arm-linux-androideabi/bin/ld: error: DIV usage mismatch between
    722   out/target/product/generic/obj/STATIC_LIBRARIES/ds_intermediates/ds.a(ak.o)
    723   and output.
    724 
    725 >  See http://sourceware.org/ml/binutils/2012-12/msg00202.html
    726 
    727 - Fixed GCC 4.7 ICE in build_data_member_initialization, at
    728   cp/semantics.c:5790
    729 
    730 - Fixed GCC 4.7 ICE in redirect_eh_edge_1, at tree-eh.c:2214.
    731   See http://b.android.com/52909
    732 
    733 - Fixed a GCC 4.7 segfault.
    734   See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55245
    735 
    736 - Fixed to <chrono> clock resolution and enable steady_clock.
    737   See http://b.android.com/39680
    738 
    739 - Fixed to enable _GLIBCXX_HAS_GTHREADS for GCC 4.7 libstdc++.
    740   See http://b.android.com/41770 and http://b.android.com/41859
    741 
    742 - Fixed X86 MXX/SSE code fails to link due to missing posix_memalign.
    743   See https://android-review.googlesource.com/#/c/51872
    744 
    745 - Fixed GCC4.7/X86 segfault in i386.c distance_non_agu_define_in_bb().
    746   See https://android-review.googlesource.com/#/c/50383
    747 
    748 - Fixed GCC4.7/X86 to resotre earlier cmov behavior.
    749   See http://gcc.gnu.org/viewcvs?view=revision&revision=193554
    750 
    751 - More fixes to handle NULL return value of setlocale() in
    752   libstdc++/GCC4.7.
    753   See http://b.android.com/46718
    754 
    755 - Fixed ld.gold runtime undefined reference to __exidx_start/_end.
    756   See https://android-review.googlesource.com/#/c/52134
    757 
    758 - Fixed Clang3.1 ICE using Eigen library.
    759   See http://b.android.com/41246
    760 
    761 - Fixed Clang3.1 ICE including <chrono> in C++11 mode.
    762   See http://b.android.com/39600
    763 
    764 - Fixed Clang3.1 ICE when generating object code for a method
    765   call to a uniform initialized rvalue.
    766   See http://b.android.com/41387
    767 
    768 - Fixed Clang3.1/X86 stack realignment.
    769   See https://android-review.googlesource.com/#/c/52154
    770 
    771 - Fixed GDB SIGILL when debugging on platform 4.1.2.
    772   See http://b.android.com/40941
    773 
    774 - Fixed GDB cannot set "source:line" breakpoints when symbols contain
    775   frankenpaths.
    776   See http://b.android.com/42448
    777 
    778 - Fixed GDB read_program_header for MIPS PIE executables.
    779   See https://android-review.googlesource.com/#/c/49592
    780 
    781 - Fixed STLport segfault in uncaught_exception().
    782   See https://android-review.googlesource.com/#/c/50236
    783 
    784 - Fixed STLport Bus error in exception handling due
    785   to unaligned access of DW_EH_PE_udata2, 4 and 8.
    786 
    787 - Fixed Gabi++ nothrow new[] infinite recursion.
    788   See http://b.android.com/52833
    789 
    790 - Fixed Gabi++ wrong offset to EH pointer.
    791   See https://android-review.googlesource.com/#/c/53446
    792 
    793 - Removed Gabi++ redundant free on exception object.
    794   See https://android-review.googlesource.com/#/c/53447
    795 
    796 
    797 OTHER BUG FIXES:
    798 ---
    799 
    800 - Fix NDK headers
    801 
    802 >  1. Remove redundant definitions of size_t, ssize_t, and ptrdiff_t
    803 >  2. Fixed MIPS and ARM fenv.h
    804 >  3. Fixed stddef.h to not re-define offsetof already exists
    805      in toolchain
    806 >  4. Fixed elf.h to contain Elf32_auxv_t and Elf64_auxv_t.
    807      See http://b.android.com/38441
    808 >  5. Fixed the #ifdef C++ in OpenSLES_AndroidConfiguration.h.
    809      See http://b.android.com/53163
    810 
    811 - Fixed STLport to abort after OOM instead of (silent) exit
    812 
    813 - Fixed 'system' and 'Gabi++' headers to be able to compile
    814   with API level < 9
    815 
    816 - Fixed cpufeatures to not parse /proc/self/auxv.
    817   See http://b.android.com/43055
    818 
    819 - Fixed ld.gold to not depending on host libstdc++, and in case
    820   of windows, library libgcc_sjlj_1.dll
    821 
    822 - Fixed Clang3.1 which emits inconsistent register list in .vsave
    823   and fails assembler. eg.
    824    .vsave  {d8, d9, d10, d11, d12, d13, d14, s20, s21, s22}
    825   See https://android-review.googlesource.com/#/c/49930
    826 
    827 - Fixed Clang3.1 to be able to compile libgabi++ and pass test-stlport
    828   on MIPS.
    829   See https://android-review.googlesource.com/#/c/51961
    830 
    831 - Fixed Clang3.1 to only enable exception by default for C++,
    832   not for C
    833 
    834 - Misc fixes in Clang3.1 to pass most GNU exception tests
    835 
    836 - Fixed script clang/clang++ in standalone NDK compiler to
    837   detect -cc1 and don't specify "-target" when found
    838 
    839 - Fixed ndk-build to observe NDK_APP_OUT set in Application.mk
    840   See http://b.android.com/42477
    841 
    842 - Fixed X86 libc.so/lib.a missing sigsetjmp/siglongjmp already
    843   declared in setjmp.h.
    844   See http://b.android.com/19851
    845 
    846 - Patched GCC 4.4.3/4.6/4.7 libstdc++ to work with Clang in C++11.
    847   See http://clang.llvm.org/cxx_status.html
    848 
    849 - Fixed cygwin path in argument passed to HOST_AWK
    850 
    851 - Fixed ndk-build warning in windows when running from project's jni/
    852   directory.
    853   See http://b.android.com/40192
    854 
    855 - Fixed ndk-build won't build if makefile has tailing whitespace in
    856   LOCAL_PATH definition.
    857   See http://b.android.com/42841
    858 
    859 
    860 OTHER CHANGES:
    861 ---
    862 
    863 - Enabled threading support in GCC/MIPS toolchain
    864 
    865 - Unhided GCC EH helpers __cxa_begin_cleanup and __cxa_type_match
    866   in GNU libstdc++.
    867 
    868 >  See tests/build/b8247455-hidden-cxa/jni/Android.mk
    869 
    870 - Gabi++ and STLport static libraries are now built with hidden
    871   visibility except for EH helpers
    872 
    873 - STLport in ARM is now built in thumb mode
    874 
    875 - Added support for std::set_new_handler in Gabi++.
    876   See http://b.android.com/52805
    877 
    878 - Enabled FUTEX in GNU libstdc++
    879 
    880 - ndk-build no longer copies prebuilt static library to project's
    881   obj/local/<abi>/directory.
    882   See http://b.android.com/40302
    883 
    884 - Removed __ARM_ARCH_5*__ from ARM toolchains/*/setup.mk.
    885   See http://b.android.com/21132
    886 
    887 - Built additional GNU libstdc++ libaries in thumb mode for ARM
    888 
    889 - Enabled MIPS floating-point madd/msub/nmadd/nmsub/recip/rsqrt
    890   instructions with 32-bit FPU
    891 
    892 - Enabled graphite in GCC 4.6 and 4.7.  Allow more loop optimizations:
    893   -fgraphite, -fgraphite-identity, -floop-block, -floop-flatten,
    894   -floop-interchange, -floop-strip-mine, -floop-parallelize-all,
    895   and -ftree-loop-linear.
    896 
    897 >  See http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
    898 
    899 - Enabled polly for clang3.1/3.2 on Linux/MacOSX 32-bit hosts which analyzes
    900   and optimizes memory access pattern.
    901 
    902 >  See http://polly.llvm.org
    903 
    904 - Enabled -flto in GCC 4.7, 4.6, clang3.2 and Clang3.1 on linux (Clang LTO
    905   via LLVMgold.so, ie. no MIPS because it doesn't have ld.gold)
    906 
    907 - Enabled --plugin and --plugin-opt for ld.gold in GCC 4.6/4.7
    908 
    909 - Enabled --text-reorder for ld.gold in GCC 4.7
    910 
    911 - GNU libstdc++ is now configured with _GLIBCXX_USE_C99_MATH which will undef
    912   isinf, etc (*1), in bionic header.  If you have code which does the following
    913 
    914         #include <math.h>
    915           ... use isinf
    916         #include <cmath>
    917         #include <math.h>
    918           ... use isinf // fails
    919 
    920 >  The 2nd use of isinf may fail because cmath undefined isinf
    921 
    922   (*1) Math macro in bionic undefined by cmath: fpclassify, isfinite, isinf,
    923        isnan, isnormal, isgreater, isgreaterequal, isless, islessequal,
    924        islessgreater, isunordered, signbit
    925 
    926 - Added APP_LDFLAGS.  See ANDROID-MK.html.
    927 
    928 - Allow NDK_LOG=0, NDK_HOST_32BIT=0 to disable NDK_LOG and host 32-bit toolchain,
    929   respectively.
    930 
    931 - Changed the default GCC/X86 -march=/-mtune= from pentiumpro/generic to i686/atom
    932 
    933 - Misc toolchain build script enhancements:
    934 
    935 >  1. Fixed a race condition in build-gcc.sh mingw build which used to prevent
    936      high degree of parallel build
    937 >  2. build-gabi++.sh and build-stlport.sh can now run from NDK package.
    938      See http://b.android.com/52835
    939 >  3. Fixed run-tests.sh in MSys
    940 >  4. Better 64-bit host toolchain and canadian build supports
    941 >  5. Updated build-mingw64-toolchain.sh for modern versions
    942 >  6. Option to build libgnustl_static.a and stlport_static.a without hidden
    943      visibility
    944 
    945 
    946 -------------------------------------------------------------------------------
    947 android-ndk-r8d
    948 ===
    949 
    950 IMPORTANT CHANGES:
    951 ---
    952 
    953 - Added GCC 4.7 compiler.  Since GCC 4.6 is still the default,
    954   you need to explicitly enable it:
    955 
    956 >  1. For ndk-build: Either export NDK_TOOLCHAIN_VERSION=4.7 or add it
    957      in Application.mk.
    958 >  2. For standalone: Use "--toolchain=" option in make-standalone-toolchain.sh.
    959      eg. "--toolchain=arm-linux-androideabi-4.7"
    960 
    961 >  This feature is experimental now but welcome to try and report issues.
    962 
    963 - Added stlport exception support via gabi++.  Note that the new gabi++
    964   depends on dlopen, etc, meaning that:
    965 
    966 >  1. libstlport_static.a can no longer be used in "static" executable (-static,
    967      only possible with standalone toolchain).  "dynamic" executable (eg.
    968      include $(BUILD_EXECUTABLE)) can link fine because compiler impliciently adds -ldl
    969 >  2. If your project links with "-nostdlib -Wl,--no-undefined", you need to provide
    970      your own -ldl
    971 
    972 >  See CPLUSPLUS-SUPPORT.html.
    973 
    974 >  This feature is experimental now and works better with GCC 4.6/4.7
    975   than with GCC 4.4.3 and clang3.1.  Welcome to try and report issues.
    976 
    977 - Add -mstack-protector-guard= option for x86 to choose between "global"
    978   (default, compatible with older bionic) and "tls" (new %gs:20) for
    979   -fstack-protector, -fstack-protector-all, and -fstack-protector-strong
    980   (GCC 4.6+).  Note that this alone doesn't enable any -fstack-protector*
    981 
    982 - Add android_setCpu() to sources/android/cpufeatures/cpu-features.c
    983   when auto-detection via /proc isn't possible in and after JB.
    984   See http://code.google.com/p/chromium/issues/detail?id=164154
    985 
    986 
    987 IMPORTANT BUG FIXES:
    988 ---
    989 
    990 - Fixed un-needed rebuild of object files via ndk-build.
    991   See http://code.google.com/p/android/issues/detail?id=39810
    992 
    993 - Fixed r8c linker fail in MacOSX 10.6.x with error reads:
    994 
    995         dyld: lazy symbol binding failed: Symbol not found: _memmem
    996         Referenced from: ...../arm-linux-androideabi/bin/ld
    997         Expected in: /usr/lib/libSystem.B.dylib
    998 
    999 >  r8c was packaged on 10.7 machine which produced binaries not
   1000   compatible with 10.6 SDK/NDK still supports.  Will build it
   1001   on 10.6 from now on.
   1002 
   1003 - Removed '-x c++' from clang++ in standalone.
   1004   See http://code.google.com/p/android/issues/detail?id=39089
   1005 
   1006 - Fixed issues using NDK_TOOLCHAIN_VERSION=clang3.1 in cygwin.
   1007   See http://code.google.com/p/android/issues/detail?id=39585
   1008 
   1009 - Fixed make-standalone-toolchain.sh to create standalone toolchain
   1010   on cygwin and MinGW, which works for all cygwin, MingGW, and CMD.exe.
   1011   See http://code.google.com/p/android/issues/detail?id=39915 and
   1012   http://code.google.com/p/android/issues/detail?id=39585 (again)
   1013 
   1014 - Added missing SL_IID_ANDROIDBUFFERQUEUESOURCE in android-14 for
   1015   ARM/X86.
   1016   See http://code.google.com/p/android/issues/detail?id=40625
   1017 
   1018 - Fixed x86 cpu detection for MOVBE.
   1019   See http://code.google.com/p/android/issues/detail?id=39317
   1020 
   1021 - Fixed an issue preventing STL dependencies to C++ sources not
   1022   in .cpp extension.
   1023 
   1024 - Fixed GCC 4.6 ARM ICE at reload1.c:1061.
   1025   See http://code.google.com/p/android/issues/detail?id=20862
   1026 
   1027 - Fixed GCC 4.4.3 ARM ICE at emit-rtl.c:1954.
   1028   See http://code.google.com/p/android/issues/detail?id=22336
   1029 
   1030 - Fixed GCC 4.4.3 ARM ICE at postreload.c:396.
   1031   See http://code.google.com/p/android/issues/detail?id=22345
   1032 
   1033 - Fixed GCC 4.6/4.7 elides lambdas.
   1034   See http://code.google.com/p/android/issues/detail?id=35933
   1035 
   1036 
   1037 OTHER BUG FIXES:
   1038 ---
   1039 
   1040 - Fixed NDK headers
   1041 
   1042 >  1. Fixed __WINT_TYPE__ and wint_t to be the same type
   1043 >  2. Corrected typo in <android/bitmap.h>.
   1044      See http://code.google.com/p/android/issues/detail?id=15134
   1045 >  3. Corrected typo in <errno.h>.
   1046      See http://code.google.com/p/android/issues/detail?id=15134
   1047 >  4. Check the presence of __STDC_VERSION__ in <sys/cdefs.h>.
   1048      See http://code.google.com/p/android/issues/detail?id=14627
   1049 >  5. Re-org headers byteswap.h and dirent.h
   1050 >  6. Fixed limits.h to include page.h which provides PAGE_SIZE.
   1051      See http://code.google.com/p/android/issues/detail?id=39983
   1052 >  7. Fixed return type of glGetAttribLocation and glGetUniformLocation
   1053      from int to GLint.
   1054 >  8. Fixed __BYTE_ORDER for x86.
   1055      See http://code.google.com/p/android/issues/detail?id=39824
   1056 
   1057 - Fixed ndk-build to not overwrite -Os with -O2 in ARM
   1058 
   1059 - Fixed to allow overwriting HOST_AWK, HOST_SED, and HOST_MAKE.
   1060 
   1061 - Fixed ld.gold issue on fsck_msdos build linking objects built by ICC
   1062 
   1063 - Fixed ARM EHABI support in clang conforming to spec.
   1064 
   1065 - Fixed GDB to shorten the time spending on walking target's link map upon
   1066   solib events.
   1067   See http://code.google.com/p/android/issues/detail?id=38402
   1068 
   1069 - Fixed missing libgcc.a when linking shared libraries
   1070 
   1071 
   1072 OTHER CHANGES:
   1073 
   1074 - Backported 64-bit built-in atomic functions for ARM to GCC 4.6
   1075 
   1076 - Documentation for audio output latency, other misc docs/ fixes
   1077 
   1078 - Non-void functions in debug build by Clang now raise SIGILL on path w/o
   1079   return statement
   1080 
   1081 - make-standalone-toolchain.sh now accepts surffix "-clang3.1" which is
   1082   equivalent to adding "--llvm-version=3.1" on GCC 4.6 toolchain.
   1083 
   1084 - Changed GCC and Clang bug report URL to http://source.android.com/source/report-bugs.html
   1085 
   1086 - Added ARM ELF support to llvm-objdump.
   1087 
   1088 - Suppressed warning "treating c input as c++" in clang.
   1089 
   1090 - Only 32-bit of libiberty.a is built (placed at lib32/)
   1091 
   1092 
   1093 -------------------------------------------------------------------------------
   1094 android-ndk-r8c
   1095 ===
   1096 
   1097 IMPORTANT CHANGES:
   1098 ---
   1099 
   1100 - Added Clang 3.1 compiler.  Since GCC 4.6 is still the default,
   1101   you need to explicitly enable it:
   1102   1. For ndk-build: Either export NDK_TOOLCHAIN_VERSION=clang3.1 or add it
   1103      in Application.mk.
   1104   2. For standalone: Add "--llvm-version=3.1" to make-standalone-toolchain.sh
   1105      and replace CC and CXX in your makefile with <tool-path>/bin/clang
   1106      and <tool-path>/bin/clang++.
   1107 
   1108 >  See STANDALONE-TOOLCHAIN.html for details.
   1109   This feature is experimental now but welcome to try and report issues.
   1110 
   1111 - Gold linker ld.gold is now available in Windows toolchain.  Gold is also the
   1112   default linker for ARM/X86 on all hosts.  You may override it to use ld.bfd
   1113   linker by adding LOCAL_LDFLAGS += -fuse-ld=bfd in Android.mk, or pass
   1114   -fuse-ld=bfd to g++/clang++ commandline which does the linking.
   1115 
   1116 - ndk-build[.cmd] and ndk-gdb now check and bail out if NDK path contains space.
   1117 
   1118 - Changes in API level
   1119   1. Projects with android-10 .. 13 specified in APP_PLATFORM, project.properties or
   1120      default.properties will link against android-9 instead of android-14.
   1121   2. Executable in project with android-16 (Jelly Bean) or higher is compiled
   1122      with -fPIE (position-independent executables).  A new APP_PIE allow manual control
   1123      of this behavior.  See APPLICATION-MK.html for details.  Note that all API level
   1124      above 14 still link against platforms/android-14. ie. no new platforms/android-N
   1125      is added.
   1126   3. ndk-build now warns about the adjusted API level is larger than android:minSdkVersion
   1127      in project's AndroidManifest.xml.
   1128 
   1129 - ARM: Updated 'cpu-features' helper library to include 9 more ARM-specific features.
   1130 
   1131 >  See sources/android/cpufeatures/cpu-features.h for details.
   1132 
   1133 - X86: long double is still a distinct type but it's 8-byte in size now (same as double)
   1134 
   1135 - APP_ABI=armeabi-v7a: 
   1136   1. -march=armv7-a is also passed to linker to link v7-specific libraries and crt*.o
   1137   2. -mfpu=vfpv3-d16 is added by ndk-build instead of -mfpu=vfp in the previous releases.
   1138 
   1139 
   1140 IMPORTANT BUG FIXES:
   1141 ---
   1142 
   1143 - Fixed an issue when make-standalone-toolchain.sh is run under root privilege resulting
   1144   in standalone toolchain inaccessible to some.
   1145   1. All files/executables attributes in NDK release package are set to readable/executable to all
   1146   2. The ownership/group of file libstdc++.a is now preserved when copied
   1147 
   1148 >  See http://code.google.com/p/android/issues/detail?id=35279
   1149 
   1150 - Removed redundant \r from Windows prebuilt echo.exe. The redundant \r in gdb.setup fails
   1151   GDB because it incorrectly becomes part of the path.
   1152 
   1153 >  See http://code.google.com/p/android/issues/detail?id=36054
   1154 
   1155 - Fixed windows parallel builds that sometimes failed due to timing issues in the host-mkdir
   1156   implementation.
   1157 
   1158 >  See http://code.google.com/p/android/issues/detail?id=25875
   1159 
   1160 - Fixed GCC 4.4.3 GNU libstdc++ to NOT merge typeinfo names by default.
   1161 
   1162 >  See toolchain repo gcc/gcc-4.4.3/libstdc++-v3/libsupc++/typeinfo,
   1163    http://code.google.com/p/android/issues/detail?id=22165, and
   1164    https://groups.google.com/forum/#!msg/android-ndk/FlnuAOIKHOo/kLEwaBso7KYJ%5B1-25%5D
   1165 
   1166 - Fixed crash on null context in GCC 4.6 cp/mangle.c::write_unscoped_name, where gcc
   1167   may crash when context == NULL and dereferenced in TREE_CODE
   1168 
   1169 - Fixed GCC 4.4.3 crashes on NEON specific typedef for float
   1170 
   1171 >  See http://code.google.com/p/android/issues/detail?id=34613
   1172 
   1173 - Fixed the STLport internal _IteWrapper::operator*() implementation where stale
   1174   stack location holding the dereferenced value is returned and leads to runtime crashes
   1175 
   1176 >  See http://code.google.com/p/android/issues/detail?id=38630
   1177 
   1178 - ARM: Fixed ARM GCC 4.4.3/4.6 g++ to not warn about "the mangling of <va_list> has
   1179   changed in GCC 4.4".  Switch -Wno-psabi is no longer needed to workaround.
   1180 
   1181 - ARM: Fix an issue when project with .arm/.neon suffixes in LOCAL_SRC_FILES also
   1182   uses APP_STL.  With APP_STL, ndk-build searches for C++ file in LOCAL_SRC_FILES before
   1183   adding STL header/lib paths to compilation.  Fix ndk-build to filter out .arm and .neon
   1184   suffixes before the search, otherwise item in LOCAL_SRC_FILESfile like myfile.cpp.arm.neon
   1185   won't be considered C++.
   1186 
   1187 - ARM: Fixed binutils-2.21/ld.bfd to be capable of linking object from older binutils w/o
   1188   tag_FP_arch, which used to produce error message reads
   1189 
   1190     BFD (GNU Binutils) 2.21 assertion fail
   1191          ...../binutils/binutils-2.21/bfd/elf32-arm.c:10190
   1192 
   1193 >  The root cause is that ARM's binutils-2.21/ld.bfd performs sanity check and asserts
   1194   when "tag_FP_arch==0 && tag_ABI_HardFP_use !=0".  This can happen in object using FP
   1195   linked by older binutils when tag_FP_arch isn't produced at all (thus gets the default
   1196   "zero" in new linker).
   1197 
   1198 >  See http://code.google.com/p/android/issues/detail?id=35209
   1199 
   1200 - ARM: Removed warning when binutils-2.19/ld links prebuilt object by newer binutils-2.21
   1201   which reads
   1202 
   1203     Unknown EABI object attribute 44
   1204 
   1205 >  The reason is that all prebuilt crt*.o and C++ STL are built with later GCC 4.6/binutils-2.21
   1206   and contain new tag "DIV_use" with value set to "Not allowed".  This tag can be safely ignored
   1207   by the original GCC4.4.3/binutils-2.19 toolchain since it is only for sanity check.
   1208 
   1209 - ARM: Fixed an issue in GNU stdc++ compilation with both -mthumb and -march=armv7-a, by
   1210   making make-standalone-toolchain.sh to also populate headers/libs in sub-directory
   1211   "armv7-a/thumb".
   1212 
   1213 >  See http://code.google.com/p/android/issues/detail?id=35616
   1214 
   1215 - ARM: Fix error: unresolvable R_ARM_THM_CALL relocation
   1216 
   1217 >  See http://code.google.com/p/android/issues/detail?id=35342 and
   1218     https://groups.google.com/forum/?fromgroups#!topic/android-ndk/HaLycHImqL8
   1219 
   1220 - ARM: Fixed internal compiler error at "reload1.c:3633".  The reason is that ARM back-end
   1221   expects wrong operand type when sign-extend from char.
   1222 
   1223 >  Back port fix from http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50099
   1224 
   1225 - ARM: Fixed internal compiler error with negative shift amount.
   1226     int foo(int a, int b)
   1227     {
   1228         return a | (b << -3);
   1229     }
   1230 
   1231 >  See http://gcc.gnu.org/ml/gcc-patches/2011-10/msg00594.html
   1232 
   1233 - X86: Fixed -fstack-protector, which is also the default for ndk-build x86 ABI
   1234 
   1235 - MIPS: Fixed stlport endianess by setting _STLP_LITTLE_ENDIAN to 1 when compiling
   1236   MIPS' libstlport_*
   1237 
   1238 - MIPS: Fixed GCC __builtin_unreachable issue compiling LLVM
   1239 
   1240 >  See Bug 54369: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54369
   1241 
   1242 - MIPS: Backport fix to bug 50380: cc1 hangs eating 100% CPU
   1243 
   1244 >  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50380 and
   1245     http://gcc.gnu.org/viewcvs/trunk/gcc/cse.c?r1=177852&r2=182498&pathrev=182498
   1246 
   1247 - GDB: Disable python support in gdb-7.x at build, otherwise gdb-7.x/configure may
   1248   pick up whatever python in host and build gdb with hard-wired dependency to specific
   1249   version of python.
   1250 
   1251 >  See http://code.google.com/p/android/issues/detail?id=36120
   1252 
   1253 - GDB: Fixed ndk-gdb when APP_ABI contains "all" and matches none of known architecture
   1254 
   1255 >  See http://code.google.com/p/android/issues/detail?id=35392
   1256 
   1257 - GDB: Fixed Windows pathname support.  Keep ':' if it looks like it could be part of
   1258   a Windows path starting with a drive letter.
   1259 
   1260 >  See http://sourceware.org/ml/gdb/2011-06/msg00030.html and
   1261     http://sourceware.org/bugzilla/show_bug.cgi?id=12843
   1262 
   1263 - GDB: Fixed add HW breakpoint support for ARM in gdbserver
   1264 
   1265 >  See http://sourceware.org/ml/gdb-patches/2011-09/msg00200.html
   1266 
   1267 - GDB: Fixed to only read current solibs when linker is consistent.  Speeds up solib
   1268   event handling.
   1269 
   1270 >  See http://code.google.com/p/android/issues/detail?id=37677
   1271 
   1272 - GDB: Fixed to make repeated attempts to find solib breakpoint.  GDB will retry enable_break()
   1273   during every call to svr4_current_sos() until it succeeds.
   1274 
   1275 >  See https://android-review.googlesource.com/#/c/43563
   1276 
   1277 - GDB: Fixed an issue where gdb cannot stop on breakpoints placed on dlopen-ed
   1278   libraries.
   1279 
   1280 >  See http://code.google.com/p/android/issues/detail?id=34856
   1281 
   1282 - GDB: Fixed SIGILL in dynamic linker when calling dlopen(), on system
   1283   where /system/bin/linker is stripped of symbols and rtld_db_dlactivity()
   1284   is implemented as Thumb, due to not preserving LSB of sym_addr
   1285 
   1286 >  See http://code.google.com/p/android/issues/detail?id=37147
   1287 
   1288 
   1289 OTHER BUG FIXES:
   1290 ---
   1291 
   1292 - Fixed NDK headers
   1293   1. Fixed arch-mips/include/asm/* previously incorrectly cleaned from original kernel
   1294      See https://android-review.googlesource.com/#/c/43335
   1295   2. Replace struct member data "`__unused`" with "`__linux_unused`" in linux/sysctl.h
   1296      and linux/icmp.h to avoid conflict with "#define __unused" in sys/cdefs.h
   1297   3. Fixed fenv.h to enclosed C functions with __BEGIN_DECLS/__END_DECLS
   1298   4. Removed unimplemented functions in malloc.h
   1299   5. Fixed stdint.h.  See http://code.google.com/p/android/issues/detail?id=1952
   1300   6. Fixed preprocessor macros in <arch>/include/machine/*
   1301   7. Replaced link.h for mips with new version for all platforms
   1302   8. Remove linux-unistd.h
   1303   9. Move GLibc-specific macros LONG_LONG_MIN, LONG_LONG_MAX and ULONG_LONG_MAX from
   1304      <pthread.h> to <limits.h>.
   1305 
   1306 - Fixed a buffer overflow in ndk-stack-parser.
   1307 
   1308 - Fixed _STLP_USE_EXCEPTIONS, when not defined, to omit all declarations
   1309   and uses of __Named_exception.  Compile and use __Named_exception only
   1310   when STLport is being allowed to use exceptions.
   1311 
   1312 - Fixed to build Linux-only NDK packages (invoked as follow) w/o also building windows
   1313 
   1314     ./build/tools/make-release.sh --force --systems=linux-x86
   1315 
   1316 - Fixed libc.so to not export atexit() and __do_handler.  These symbols are exported
   1317   on ARM by the system version of the C library to support legacy native libraries.
   1318   NDK-generated should never reference them directly. Instead, each shared library or
   1319   executable should embed its own version of these symbols, provided by crtbegin_*.o
   1320 
   1321 >  If your project is linked with "-nostdlib -Wl,--no-undefined", you need to provide
   1322   your own __dso_handle because crtbegin_so.o isn't linked.  The content of __dso_handle
   1323   doesn't matter.  eg.
   1324 
   1325     extern "C" {
   1326       extern void *__dso_handle __attribute__((__visibility__ ("hidden")));
   1327       void *__dso_handle;
   1328     }
   1329 
   1330 - ARM: Fixed symbol decoder (used in objdump) for plt entries to generate more
   1331   readable form function@plt
   1332 
   1333 - X86: Removed the following symbols introduced in GCC 4.6/libgcc.a from X86's libc.so:
   1334   __aeabi_idiv0, __aeabi_ldiv0, __aeabi_unwind_cpp_pr1, and __aeabi_unwind_cpp_pr2
   1335 
   1336 - MIPS: Removed unused .ctors, .dtors, and .eh_frame in MIPS crt*_so.S.
   1337 
   1338 - GDB: ndk-gdb now only takes the last line of output for ndk-build DUMP_XXXX.  This
   1339   ensures that if Application.mk or Android.mk do print something with $(info ...),
   1340   it doesn't get injected into the result of DUMP_XXX.
   1341 
   1342 > See https://groups.google.com/d/msg/android-ndk/-/ew0lTWGr1UEJ
   1343 
   1344 
   1345 OTHER CHANGES:
   1346 ---
   1347 
   1348 - Removed arch-x86 and arch-mips headers from platforms/android-{3,4,5,8}.
   1349   Those headers are incomplete to begin with, since both X86 and MIPS ABIs are only
   1350   supported at API &ge; 9
   1351 
   1352 - Simplified c++ include path in standalone package, eg. change
   1353 
   1354     <path>/arm-linux-androideabi/include/c++/4.6.x-google
   1355   to
   1356     <path>/include/c++/4.6/
   1357 
   1358 >  See http://code.google.com/p/android/issues/detail?id=35279
   1359 
   1360 - Enhanced ndk-build to recognize more C++ file extensions by default:
   1361 
   1362     .cc .cp .cxx .cpp .CPP .c++ .C
   1363 
   1364 >  You may still use LOCAL_CPP_EXTENSION to override it
   1365 
   1366 - Fixed an issue in samples/san-angeles about black/freeze frame
   1367   at re-launch.
   1368 
   1369 - Replaced deprecated APIs in NDK samples
   1370   1. hello-gl2 from android-5 to android-7
   1371   2. native-activity from android-9 to android-10
   1372   3. native-audio from android-9 to android-10
   1373   4. native-plasma from android-9 to android-10
   1374 
   1375 >  See http://code.google.com/p/android/issues/detail?id=20017
   1376 
   1377 - Added new branding for Android executables with a simpler scheme in section
   1378   .note.android.ident (defined in crtbegin_static/dynamic.o) so that debugging
   1379   tools can act accordingly.
   1380 
   1381 >  The structure member and values are defined as follows:
   1382 
   1383     static const struct {
   1384       int32_t namesz;  /* = 8,  sizeof ("Android") */
   1385       int32_t descsz;  /* = 1 * sizeof(int32_t) */
   1386       int32_t type;    /* = 1, ABI_NOTETYPE */
   1387       char name[sizeof "Android"];  /* = "Android" */
   1388       int32_t android_api; /* = 3, 4, 5, 8, 9, 14 */
   1389     }
   1390 
   1391 >  Previous branding in section .note.ABI-tag is deprecated.
   1392 
   1393 - Added a new script run-tests-all.sh which calls run-tests.sh and standalone/run.sh
   1394   with various conditions.  Script run-tests.sh w/o --abi is also enhanced to compile
   1395   most of tests for all supported ABI and run on all attached devices
   1396 
   1397 
   1398 -------------------------------------------------------------------------------
   1399 android-ndk-r8b
   1400 ===
   1401 
   1402 IMPORTANT BUG FIXES:
   1403 ---
   1404 
   1405 - Fixed LOCAL_SHORT_COMMANDS issues on darwin-x86 and windows cygwin environment
   1406   and for static libraries.  List file generation is sped up, and it is no longer
   1407   regenerated and causes whole project to be rebuilt every time.
   1408 
   1409 - Fixed several issues in ndk-gdb
   1410 
   1411     * to pass flags "-e", "-d", "-s" to adb more consistently
   1412 
   1413     * to accept device serial name containing space
   1414 
   1415     * to also pull /system/bin/link, so gdb on host can set a breakpoint in
   1416       __dl_rtld_db_dlactivity and be aware of linker activity (eg. rescan solib symbols
   1417       when dlopen() is called)
   1418 
   1419 - Fixed "ndk-build clean" in windows which failed to remove ./libs/\*/lib\*.so
   1420 
   1421 - Fixed ndk-build.cmd to return non-zero ERRORLEVEL when make fails
   1422 
   1423 - Fixed libc.so to no longer incorrectly export __exidx_start and __exidx_end symbols
   1424 
   1425 - Fixed SEGV when unwinding stack pasts __libc_init for ARM and MIPS.
   1426 
   1427 - Fixed \__start (in crtbegin_dynamic/static.o) to "call __libc_init" instead of
   1428   "jump __libc_init", otherwise stack unwinding past __libc_init may get wrong return
   1429   address and crash the program or do wield things.  With "call", return address is pushed
   1430   on stack and unwinding stops correctly at _start.  Note that __libc_init never returns, so
   1431   this fix wont affect normal program execution.  But just in case it "does" return,
   1432   jump to address 0 and halt.
   1433 
   1434 
   1435 IMPORTANT CHANGES:
   1436 ---
   1437 
   1438 - GCC 4.6 toolchain
   1439 
   1440   Add GCC 4.6 toolchain (binutils 2.21 with gold + GDB 7.3.x) to co-exists with
   1441   the original GCC 4.4.3 toolchain (binutils 2.19 + GDB 6.6).  Note:
   1442 
   1443   * GCC 4.6 is the default.  You may set NDK_TOOLCHAIN_VERSION=4.4.3 in Application.mk
   1444     to select the original one.
   1445 
   1446   * Gold linker support is only available for ARM and x86 architectures on linux-86
   1447     and  darwin-x86 hosts.  It's not turned on by default.  Add
   1448     "LOCAL_LDFLAGS += -fuse-ld=gold" in Android.mk to enable it.
   1449 
   1450   * You will need the new GDB to debug program compiled with -fPIE (including
   1451     binaries in Jelly Bean image)
   1452 
   1453   * The binutils 2.21 ld also contain back-port of fixes from 2.22
   1454 
   1455    * Fixed "ld --gc-sections" which incorrectly retain zombie references to external
   1456      libraries.  See http://sourceware.org/bugzilla/show_bug.cgi?id=13177 for detail.
   1457 
   1458    * Fixed ARM "strip" to preserve the original p_align and p_flags in GNU_RELRO section
   1459      if they are valid.  Otherwise program built with -fPIE can't be debugged.
   1460      http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf.c.diff?cvsroot=src&r1=1.552&r2=1.553
   1461 
   1462   * Sincos optimization is not enabled for compatibility with old platforms which don't have
   1463     it.
   1464 
   1465 - NX and relro/bind_now protections are enabled by default
   1466 
   1467   Add "--noexecstack" for assembler and "-z noexecstack" for linker to enable NX
   1468   protection against buffer overflow attacks by enabling NX bit on stack and heap.
   1469 
   1470   Add "-z relro -z now" for linker to harden internal data sections after linking
   1471   against security vulnerabilities due to memory corruption.  See
   1472 
   1473   http://www.akkadia.org/drepper/nonselsec.pdf (section 6)
   1474   http://tk-blog.blogspot.com/2009/02/relro-not-so-well-known-memory.html
   1475 
   1476   For those who really needs it, these features can be disabled by
   1477   1. Passing "--execstack" to assembler and "-z execstack" to linker to
   1478      disable NX protection.
   1479      Passing "-z norelro -z lazy" to linker to disable second protection.
   1480   2. In NDK jni/Android.mk, set the following
   1481      LOCAL_DISABLE_NO_EXECUTE=true: to disable "--noexecstack" and "-z noexecstack"
   1482      LOCAL_DISABLE_RELRO=true: to disable "-z relro -z now"
   1483   see $NDK/docs/ANDROID-MK.html for details
   1484 
   1485 - Brand executables with .note.ABI-tag section
   1486 
   1487   Brand Android executable with .note.ABI-tag (in crtbegin_static/dynamic.o) for debugging
   1488   tools to act accordingly.  The structure member and values are defined as follow.
   1489 
   1490     static const struct {
   1491       int32_t	namesz;  /* = 4,  sizeof ("GNU") */
   1492       int32_t	descsz;  /* = 6 * sizeof(int32_t) */
   1493       int32_t	type;    /* = 1 */
   1494       char	name[sizeof "GNU"];  /* = "GNU" */
   1495       int32_t	os;      /* = 0 */
   1496       int32_t	major;   /* = 2 */
   1497       int32_t	minor;   /* = 6 */
   1498       int32_t	teeny;   /* = 15 */
   1499       int32_t	os_variant;  /* = 1 */
   1500       int32_t	android_api; /* = 3, 4, 5, 8, 9, 14 */
   1501     }
   1502 
   1503 
   1504 OTHER BUG FIXES:
   1505 ---
   1506 
   1507 - Backport several patches to fix MIPS issues.
   1508 
   1509   * http://sourceware.org/bugzilla/show_bug.cgi?id=12637
   1510     mips-linux-gnu: relocation truncated to fit: R_MIPS_TLS_LDM
   1511 
   1512   * http://sourceware.org/bugzilla/show_bug.cgi?id=12845
   1513     ld segfaults when using --gc-sections
   1514 
   1515   * http://sourceware.org/ml/binutils/2011-05/msg00198.html
   1516     Refix MIPS GOT_PAGE counting
   1517 
   1518   * Follow warning symbol link in mips_elf_count_got_symbols.
   1519 
   1520   * Follow warning symbol link in mips_elf_allocate_lazy_stub.
   1521 
   1522   * Move MIPS .dynamic to the data segment, so that it is writable.
   1523     Replace hard-coded 4096 with symbols for correct segment sizes for MIPS.
   1524 
   1525   * Remove -mno-shared as default in MIPS toolchain.  -fPIC (or -fpic if supported)
   1526     is default for Android toolchain.  Without explicitly specifying one of
   1527     -mshared, -fpic, -fPIC, -fpie, or -fPIE, MIPS compiler adds -mno-shared
   1528     which turns off PIC.  Fixed it not to add -mno-shared as default.
   1529 
   1530 - Fixed wrong package names in samples hello-jni and two-libs so tests project
   1531   underneath can compile
   1532 
   1533 
   1534 OTHER CHANGES:
   1535 ---
   1536 
   1537 - New binaries locations
   1538 
   1539   * gdbserver is moved from toolchain/<arch-os-ver>/prebuilt/gdbserver to
   1540     prebuilt/android-<arch>/gdbserver/gdbserver
   1541 
   1542   * x86 toolchain prefix is renamed from i686-android-linux- to i686-linux-android-
   1543 
   1544   * sources/cxx-stl/gnu-libstdc++/include and lib are moved to
   1545     sources/cxx-stl/gnu-libstdc++/4.4.3 when compiled with 4.4.3 GCC, or
   1546     sources/cxx-stl/gnu-libstdc++/4.6 when compiled with 4.6 GCC
   1547 
   1548   * libbfd.a and libintl.a are moved from lib/ to lib32/
   1549 
   1550 - Header if_dl.h is removed from all platforms and architectures. AF_LINK and sockaddr_dl
   1551     it describes are specpfic to BSD (ie. don't exist in Linux)
   1552 
   1553 - Various scripts to rebuild/test NDK toolchain
   1554 
   1555   * Add build-mingw64-toolchain.sh to generate a new Linux-hosted toolchain that generates
   1556     Win32 and Win64 executables.
   1557 
   1558   * Speed up download-toolchain-sources.sh by "clone" but only "checkout" the directories
   1559     that we need to build the NDK toolchain binaries.
   1560 
   1561   * New build-host-gcc.sh and build-host-gdb.sh
   1562 
   1563   * Add tests/check-release.sh to check the content of a given NDK installation directory,
   1564     or an existing NDK package.
   1565 
   1566   * Rewrite standalone tests: tests/standalone/run.sh
   1567 
   1568 
   1569 -------------------------------------------------------------------------------
   1570 android-ndk-r8
   1571 ===
   1572 
   1573 IMPORTANT BUG FIXES:
   1574 ---
   1575 
   1576 - Fixed a typo in GAbi++ implementation where result of dynamic_cast<D>(b)
   1577   of base class object 'b' to derived class D is adjusted wrong
   1578   (in the opposite direction from base class). See
   1579   http://code.google.com/p/android/issues/detail?id=28721
   1580 
   1581 - Fixed an issue in make-standalone-toolchain.sh which fails to copy
   1582   libsupc++.*.
   1583 
   1584 
   1585 IMPORTANT CHANGES:
   1586 ---
   1587 
   1588 - Added support for the mips ABI.
   1589 
   1590 >  This release of the Android NDK contains support for 'mips' ABI.
   1591   To generate machine runs on MIPS-based Android devices, please add 'mips' to
   1592   APP_ABI definition in your Application.mk, or 'all' to generate binaries for
   1593   all currently supported ABI.  See docs/CPU-MIPS.html for details.
   1594 
   1595 - You can build a standalone mips toolchain using the
   1596   --toolchain=mipsel-linux-android-4.4.3 option when calling
   1597   make-standalone-toolchain.sh. See docs/STANDALONE-TOOLCHAIN.html for more details.
   1598 
   1599 
   1600 OTHER BUG FIXES:
   1601 ---
   1602 
   1603 - Fixed ndk-build.cmd to ensure that ndk-build.cmd works correctly even if
   1604   the user has redefined the SHELL environment variable (which can happen under
   1605   the hood when installing a variety of development tools on Windows)
   1606 
   1607 
   1608 -------------------------------------------------------------------------------
   1609 android-ndk-r7c
   1610 ===
   1611 
   1612 This release of the NDK includes an important fix for Tegra2-based devices,
   1613 and a few additional fixes and improvements:
   1614 
   1615 IMPORTANT BUG FIXES:
   1616 ---
   1617 
   1618 - Fixed GNU STL armeabi-v7a binaries to not crash on non-NEON devices.
   1619   The files provided with NDK r7b where not configured properly, resulting
   1620   in crashes on Tegra2-based devices and others when trying to use certain
   1621   floating-point functions (e.g., cosf, sinf, expf).
   1622 
   1623 
   1624 IMPORTANT CHANGES:
   1625 ---
   1626 
   1627 - Added support for custom output directories through the NDK_OUT
   1628   environment variable. When defined, this variable is used to store all
   1629   intermediate generated files, instead of $PROJECT_PATH/obj.
   1630 
   1631   The variable is also recognized by ndk-gdb.
   1632 
   1633 - Added support for building modules with hundreds or even thousand of source
   1634   files by defining LOCAL_SHORT_COMMANDS to true in your Android.mk.
   1635 
   1636   This change forces the NDK build system to put most linker or archiver
   1637   options into list files, to work-around command-line length limitations
   1638   (particularly on Windows). See docs/ANDROID-MK.html for details.
   1639 
   1640 
   1641 OTHER BUG FIXES:
   1642 ---
   1643 
   1644 - Fixed android_getCpuCount() implementation in the cpufeatures helper
   1645   library. The previous implementation only listed the cores that were
   1646   active the first time the function was called. This behavior could
   1647   provide results that were too low on devices that disable and enable
   1648   cores dynamically.
   1649 
   1650 -------------------------------------------------------------------------------
   1651 android-ndk-r7b
   1652 ===
   1653 
   1654 IMPORTANT BUG FIXES:
   1655 ---
   1656 
   1657 - Updated <sys/atomics.h> to avoid correctness issues on some multi-core
   1658   ARM-based devices. Rebuild your unmodified sources with this version of the
   1659   NDK and this problem should completely be eliminated. For more details, read
   1660   docs/ANDROID-ATOMICS.html.
   1661 
   1662 - Reverted to binutils 2.19 to try to fix debugging issues that
   1663   appeared in NDK r7 (which switched to binutils 2.20.1).
   1664 
   1665 - Fixed ndk-build on 32-bit Linux. A packaging error put a 64-bit version
   1666   of the 'awk' executable under prebuilt/linux-x86/bin in NDK r7.
   1667 
   1668 - Fixed native Windows build (ndk-build.cmd). Other build modes were not
   1669   affected. The fixes include:
   1670 
   1671     * Removed an infinite loop / stack overflow bug that happened when trying
   1672       to call ndk-build.cmd from a directory that was _not_ the top of your
   1673       project path (e.g. any sub-directory of it).
   1674 
   1675     * Fixed a problem where the auto-generated dependency files were ignored.
   1676       This meant that updating a header didn't trigger recompilation of sources
   1677       that included it.
   1678 
   1679     * Fixed a problem where special characters in files or paths, other than
   1680       spaces and quotes, were not correctly handled.
   1681 
   1682 - Fixed the standalone toolchain to generate proper binaries when using
   1683   -lstdc++ (i.e. linking against the GNU libstdc++ C++ runtime). You should
   1684   use -lgnustl_shared if you want to link against the shared library
   1685   version or -lstdc++ for the static version.
   1686 
   1687   See docs/STANDALONE-TOOLCHAIN.html for more details about this fix.
   1688 
   1689 - Fixed gnustl_shared on Cygwin. The linker complained that it couldn't find
   1690   libsupc++.a while the file was at the right location.
   1691 
   1692 - Fixed cygwin C++ link when not using any specific C++ runtime through
   1693   APP_STL.
   1694 
   1695 OTHER CHANGES:
   1696 ---
   1697 
   1698 - When your application uses the GNU libstdc++ runtime, the compiler will
   1699   no longer forcibly enable exceptions and RTTI. This change results in smaller
   1700   code. If you need these features, you need to do either one of these:
   1701 
   1702      1/ Enable exceptions and/or RTTI explicitly in your modules or
   1703         Application.mk. (recommended)
   1704 
   1705      2/ Define APP_GNUSTL_FORCE_CPP_FEATURES to 'exceptions', 'rtti' or both
   1706         in your Application.mk. See docs/APPLICATION-MK.html for more details.
   1707 
   1708 - ndk-gdb now works properly when your application has private services
   1709   running in independent processes. It debugs the main application process,
   1710   instead of the first process listed by 'ps', which is usually a service
   1711   process.
   1712 
   1713 - Fixed a rare bug where NDK r7 would fail to honor the LOCAL_ARM_MODE value
   1714   and always compile certain source files (but not all) to 32-bit instructions.
   1715 
   1716 - stlport: Refresh the sources to match the Android platform version. This
   1717   update fixes a few minor bugs:
   1718 
   1719    - Fixed instantiation of an incomplete type.
   1720    - Fixed minor == versus = typo
   1721    - Use memmove instead of memcpy in string::assign
   1722    - Added better handling of IsNANorINF, IsINF, IsNegNAN, etc..
   1723 
   1724   For complete details, see the commit log.
   1725 
   1726 - stlport: Removed 5 un-necessary static initializers from the library.
   1727 
   1728 - The GNU libstdc++ libraries for armeabi-v7a were mistakenly compiled for
   1729   armeabi instead. This had no impact on correctness, but using the right
   1730   ABI should provide for slightly better performance.
   1731 
   1732 - the 'cpu-features' helper library was updated to report three optional
   1733   x86 CPU features (SSSE3, MOVBE and POPCNT). See docs/CPU-FEATURES.html
   1734   for more details.
   1735 
   1736 - docs/NDK-BUILD.html was updated to mention NDK_APPLICATION_MK instead
   1737   of NDK_APP_APPLICATION_MK to select a custom Application.mk file.
   1738 
   1739 - cygwin: ndk-build no longer creates an empty "NUL" file in the current
   1740   directory when invoked.
   1741 
   1742 - cygwin: better automatic dependency detection. It previously didn't work
   1743   properly in the following case:
   1744 
   1745     - When the cygwin drive prefix was not /cygdrive
   1746     - When using drive-less mounts, e.g. when Cygwin would translate /home
   1747       to \\server\subdir instead of C:\Some\Dir.
   1748 
   1749 - cygwin: ndk-build does not try to use the native Windows tools under
   1750   $NDK/prebuilt/windows/bin with certain versions of Cygwin and/or
   1751   GNU Make.
   1752 
   1753 -------------------------------------------------------------------------------
   1754 android-ndk-r7
   1755 ===
   1756 
   1757 IMPORTANT CHANGES:
   1758 ---
   1759 
   1760 - New official NDK APIs for Android 4.0 (a.k.a. API level 14),
   1761   which adds the following native features to the platform:
   1762 
   1763      - Native multimedia API based on the Khronos Group OpenMAX AL&#0153;
   1764        1.0.1 Standard.  New headers <OMXAL/OpenMAXAL.h> and
   1765        <OMXAL/OpenMAXAL_Android.h> are provided to allow
   1766        applications targeting this API level to perform multimedia output
   1767        directly from native code using a new Android-specific buffer
   1768        queue interface.  For more details, see docs/openmaxal/index.html
   1769        and http://www.khronos.org/openmax/.
   1770 
   1771      - Updated the native audio API based on the Khronos Group OpenSL ES
   1772        1.0.1&#0153; Standard.  API Level 14 can now decode compressed
   1773        audio (e.g. MP3, AAC, Vorbis) to PCM.  For more details, see
   1774        docs/opensles/index.html and http://www.khronos.org/opensles/.
   1775 
   1776 - CCache support. To speed up large rebuilds, simply define the NDK_CCACHE
   1777   environment variable to 'ccache' (or the path to your ccache binary), as in:
   1778 
   1779         export NDK_CCACHE=ccache
   1780 
   1781   The NDK build system will automatically use it when compiling any source
   1782   file. For more information about CCache, see http://ccache.samba.org  
   1783 
   1784 - You can now set your APP_ABI to 'all' to indicate that you want to build
   1785   your NDK modules for all the ABIs supported by your given NDK release.
   1786 
   1787   This means that either one of these two lines in your Application.mk are
   1788   equivalent with this release:
   1789 
   1790         APP_ABI := all
   1791         APP_ABI := armeabi armeabi-v7a x86
   1792 
   1793   This also works if you define APP_ABI on the command-line, as in:
   1794 
   1795         ndk-build APP_ABI=all
   1796 
   1797   Which is a quick way to check that your project builds for all supported
   1798   ABIs without changing its Application.mk file.
   1799 
   1800 - Shorter paths to source and object files used in build commands.
   1801   When invoking $NDK/ndk-build from your project path, the paths to the
   1802   source, object and binary files passed to the build commands will be
   1803   significantly shorter now because they are now passed relative to the
   1804   current directory.
   1805 
   1806   This is useful when building projects with a lot of source files, to
   1807   avoid limits on the maximum command line length supported by your host
   1808   operating system.
   1809 
   1810   The behaviour is unchanged if you invoked ndk-build from a sub-directory
   1811   of your project tree, or if you define NDK_PROJECT_PATH to point to a
   1812   specific directory.
   1813 
   1814 - New LOCAL_CPP_FEATURES variable in Android.mk, used to declare which C++
   1815   features (RTTI or Exceptions) your module uses. This is especially handy
   1816   if you have prebuilt modules that depend on them since this will ensure
   1817   the final link will work correctly.
   1818 
   1819   See docs/ANDROID-MK.html and docs/CPLUSPLUS-SUPPORT.html for more details
   1820 
   1821 - WARNING: VERY EXPERIMENTAL!!
   1822 
   1823      You can now build your NDK sources on Windows *without* Cygwin.
   1824      Simply call the script 'ndk-build.cmd' from the Windows cmd.exe
   1825      command-line, when in your project path.
   1826 
   1827      The script takes exactly the same arguments than the original
   1828      ndk-build one.
   1829 
   1830      Note that the Windows NDK package comes with its own prebuilt
   1831      binaries for GNU Make, Awk and other tools required by the build,
   1832      i.e. you shouldn't need to install anything else to get a working
   1833      build system.
   1834 
   1835      IMPORTANT: ndk-gdb doesn't work. You still need Cygwin to debug
   1836                 at the moment!
   1837 
   1838      This feature is still very experimental, but feel free to try it
   1839      and report issues on the public forum (android-ndk (a] googlegroups.com)
   1840      or the public bug database (http://b.android.com).
   1841 
   1842      Note that all samples and unit tests successfully compile with it.
   1843 
   1844 IMPORTANT BUG FIXES:
   1845 ---
   1846 
   1847 - Imported shared libraries are now installed by default to the target
   1848   installation location (i.e. libs/%lt;abi%gt;) if APP_MODULES is not
   1849   defined in your Application.mk.
   1850 
   1851   This means that if a top-level module "foo" imports a module "bar", then
   1852   both libfoo.so and libbar.so will be copied to the install location.
   1853 
   1854   Previously, only libfoo.so was, unless you listed 'bar' in your APP_MODULES
   1855   too.
   1856 
   1857   If you define APP_MODULES explicitly, the behaviour is unchanged.
   1858 
   1859 - Static library imports are now properly transitive. If top-level module
   1860   'foo' imports static library 'bar' which imports static library 'zoo',
   1861   the libfoo.so will now be linked against both libbar.a and libzoo.a.
   1862 
   1863 - ndk-gdb now works correctly for activities with multiple categories
   1864   in their MAIN intent filters.
   1865 
   1866 OTHER CHANGES:
   1867 ---
   1868 
   1869 - docs/STABLE-APIS.html: Added missing documentation listing EGL
   1870   as a supported stable API, starting from API level 9.
   1871 
   1872 - Add a new C++ support runtime named "gabi++". More details about it
   1873   are available in the updated docs/CPLUSPLUS-SUPPORT.html.
   1874 
   1875 - The STLport C++ runtimes now support RTTI (no exceptions yet though).
   1876 
   1877 - Add a new C++ support runtime named "gnustl_shared" corresponding to the
   1878   shared library version of GNU libstdc++ v3 (GPLv3 license). See more
   1879   info at docs/CPLUSPLUS-SUPPORT.html
   1880 
   1881 - You can now list several file extensions in LOCAL_CPP_EXTENSION. As in:
   1882 
   1883         LOCAL_CPP_EXTENSION := .cpp .cxx
   1884 
   1885   To compile both foo.cpp and bar.cxx as C++ sources.
   1886 
   1887 - Refreshed the EGL and OpenGLES Khronos headers to support more extensions.
   1888   Note that this does *not* change the NDK ABIs for the corresponding
   1889   libraries, since each extension must be probed at runtime by the client
   1890   application.
   1891 
   1892   Which extensions are available depends on your actual device (and GPU
   1893   drivers), not the version of the platform it provides.
   1894 
   1895   The header changes simply add new constants and types to make it easier
   1896   to use the extensions why they have been probed with eglGetProcAddress() or
   1897   glGetProcAddress(). Here is the list of newly supported extensions:
   1898 
   1899     GLES 1.x
   1900     --------
   1901     GL_OES_vertex_array_object
   1902     GL_OES_EGL_image_external
   1903     GL_APPLE_texture_2D_limited_npot
   1904     GL_EXT_blend_minmax
   1905     GL_EXT_discard_framebuffer
   1906     GL_EXT_multi_draw_arrays
   1907     GL_EXT_read_format_bgra
   1908     GL_EXT_texture_filter_anisotropic
   1909     GL_EXT_texture_format_BGRA8888
   1910     GL_EXT_texture_lod_bias
   1911     GL_IMG_read_format
   1912     GL_IMG_texture_compression_pvrtc
   1913     GL_IMG_texture_env_enhanced_fixed_function
   1914     GL_IMG_user_clip_plane
   1915     GL_IMG_multisampled_render_to_texture
   1916     GL_NV_fence
   1917     GL_QCOM_driver_control
   1918     GL_QCOM_extended_get
   1919     GL_QCOM_extended_get2
   1920     GL_QCOM_perfmon_global_mode
   1921     GL_QCOM_writeonly_rendering
   1922     GL_QCOM_tiled_rendering
   1923 
   1924     GLES 2.0
   1925     --------
   1926     GL_OES_element_index_uint
   1927     GL_OES_get_program_binary
   1928     GL_OES_mapbuffer
   1929     GL_OES_packed_depth_stencil
   1930     GL_OES_texture_3D
   1931     GL_OES_texture_float
   1932     GL_OES_texture_float_linear
   1933     GL_OES_texture_half_float_linear
   1934     GL_OES_texture_npot
   1935     GL_OES_vertex_array_object
   1936     GL_OES_EGL_image_external
   1937     GL_AMD_program_binary_Z400
   1938     GL_EXT_blend_minmax
   1939     GL_EXT_discard_framebuffer
   1940     GL_EXT_multi_draw_arrays
   1941     GL_EXT_read_format_bgra
   1942     GL_EXT_texture_format_BGRA8888
   1943     GL_EXT_texture_compression_dxt1
   1944     GL_IMG_program_binary
   1945     GL_IMG_read_format
   1946     GL_IMG_shader_binary
   1947     GL_IMG_texture_compression_pvrtc
   1948     GL_IMG_multisampled_render_to_texture
   1949     GL_NV_coverage_sample
   1950     GL_NV_depth_nonlinear
   1951     GL_QCOM_extended_get
   1952     GL_QCOM_extended_get2
   1953     GL_QCOM_writeonly_rendering
   1954     GL_QCOM_tiled_rendering
   1955 
   1956     EGL:
   1957     ----
   1958     EGL_ANDROID_recordable
   1959     EGL_NV_system_time
   1960 
   1961 - docs/NATIVE-ACTIVITY.HTML: Fixed typo, the minimum API level
   1962   should be 9, not 8 for native activities.
   1963 
   1964 - removed many unwanted exported symbols from the link-time shared
   1965   system libraries provided by the NDK. This ensures that code generated
   1966   with the standalone toolchain doesn't risk to accidentally depend
   1967   on a non-stable ABI symbol (e.g. any libgcc.a symbol that changes
   1968   each time the toolchain used to build the platform is changed).
   1969 
   1970 - download-toolchain-sources.sh: Script was updated to download the toolchain
   1971   sources from android.googlesource.com, the new location for AOSP servers.
   1972 
   1973 -------------------------------------------------------------------------------
   1974 android-ndk-r6b
   1975 ===
   1976 
   1977 This is a bug-fix release for NDK r6, no new features are provided.
   1978 
   1979 IMPORTANT BUG FIXES:
   1980 ---
   1981 
   1982 - Fixed the multi-architecture build, i.e. when using APP_ABI="armeabi x86"
   1983 
   1984 - Fixed location of prebuilt STLport binaries in the NDK release package.
   1985   (A bug in the packaging script placed them in the wrong location).
   1986 
   1987 - Fixed atexit() usage in shared libraries with the x86 standalone toolchain.
   1988 
   1989 - Fixed make-standalone-toolchain.sh --arch=x86 (it failed to copy the
   1990   proper GNU libstdc++ binaries to the right location).
   1991 
   1992 - Fixed standalone toolchain linker warnings about missing definition and
   1993   size for '__dso_handle' symbol (arm only).
   1994 
   1995 - Fixed the inclusion order of $(SYSROOT)/usr/include for x86 builds,
   1996   see http://code.google.com/p/android/issues/detail?id=18540
   1997 
   1998 - Fixed the definitions of ptrdiff_t and size_t in x86-specific system
   1999   when used with the x86 standalone toolchain.
   2000 
   2001 -------------------------------------------------------------------------------
   2002 android-ndk-r6
   2003 ===
   2004 
   2005 IMPORTANT CHANGES:
   2006 ---
   2007 
   2008 - Official support for the x86 ABI.
   2009 
   2010   This release of the Android NDK now provides support for the 'x86' ABI.
   2011   This allows you to generate machine code that runs on future x86-based
   2012   Android devices.
   2013 
   2014   Note that by default, code is still generated for ARM-based devices.
   2015   You can however add 'x86' to your APP_ABI definition in your
   2016   Application.mk. For example, the following line instructs ndk-build
   2017   to build your code for three distinct ABIs:
   2018 
   2019     APP_ABI := armeabi armeabi-v7a x86
   2020 
   2021   Unless you rely on ARM-based assembly sources, you shouldn't need to touch
   2022   your Android.mk files to build x86 machine code.
   2023 
   2024   For all details regarding x86 support, please read the new documentation
   2025   file named docs/CPU-X86.html.
   2026 
   2027   Don't hesitate to file NDK bugs related to x86 at http://b.android.com
   2028 
   2029 - You can build a standalone x86 toolchain using the --toolchain=x86-4.4.3
   2030   option when calling make-standalone-toolchain.sh. See
   2031   docs/STANDALONE-TOOLCHAIN.html for more details.
   2032 
   2033 - The new 'ndk-stack' tool can be used to translate stack traces
   2034   (as reported by adb logcat in case of crash in native code) into
   2035   something more readable, i.e. containing function / source file /
   2036   line number information corresponding to each stack frame.
   2037 
   2038   For more information and usage example, see the new documentation
   2039   file docs/NDK-STACK.html
   2040 
   2041 OTHER FIXES &amp; CHANGES:
   2042 ---
   2043 
   2044 - The arm-eabi-4.4.0, which had been deprecated since NDK r5, has been
   2045   finally removed from the NDK distribution.
   2046 
   2047 - Support a project.properties file in the application's directory
   2048   instead of default.properties. This is in preparation for future SDK Tools
   2049   changes.
   2050 
   2051 -------------------------------------------------------------------------------
   2052 android-ndk-r5c
   2053 ===
   2054 
   2055 This release fixes a few bugs in r5b. There are no new features.
   2056 
   2057 IMPORTANT BUG FIXES:
   2058 ---
   2059 
   2060 - Fixed a typo that prevented LOCAL_WHOLE_STATIC_LIBRARIES to work correctly
   2061   with the new toolchain. Also properly document this variable in
   2062   docs/ANDROID-MK.html.
   2063 
   2064 - Fixed a bug where code linked against gnustl_static would crash when run
   2065   on Android platform releases older than 2.2.
   2066 
   2067 - <android/input.h>: Two functions in this header file, introduced
   2068   by API level 9 (a.k.a. 2.3) were incorrect and have been fixed. While
   2069   this breaks the source API, the binary interface to the system is
   2070   unchanged.
   2071 
   2072   The functions missing a third 'history_index' parameter. They correct
   2073   definition is now:
   2074 
   2075       float AMotionEvent_getHistoricalRawX(const AInputEvent* motion_event,
   2076                                            size_t pointer_index,
   2077                                            size_t history_index);
   2078 
   2079       float AMotionEvent_getHistoricalRawY(const AInputEvent* motion_event,
   2080                                            size_t pointer_index,
   2081                                            size_t history_index);
   2082 
   2083 - Updated the android-9 C library arm binary to correctly expose at link time
   2084   new functions that were added to it in Gingerbread (e.g. pthread_rwlock_init).
   2085 
   2086 - Fixed a bug that made gdbserver crash on misc. Honeycomb devices (e.g.
   2087   the Motorola Xoom).
   2088 
   2089 OTHER FIXES &amp; CHANGES:
   2090 ---
   2091 
   2092 - Object files are now always linked in the order they appear in
   2093   LOCAL_SRC_FILES. This was not the case previously because the files
   2094   were grouped by source extensions instead.
   2095 
   2096 - download-toolchain-sources.sh: Fixed a silly bug that prevented the
   2097   --git-date option to work properly when downloading the master branch.
   2098 
   2099 - Fix an issue where a module could import itself, resulting in an infinite
   2100   loop in GNU Make.
   2101 
   2102 - When import-module fails, it now prints the list of directories
   2103   that were searched. This is useful to check that the NDK_MODULE_PATH
   2104   definition used by the build system is correct.
   2105 
   2106 - When import-module succeeds, it now prints the directory where the module
   2107   was found to the log (visible with NDK_LOG=1).
   2108 
   2109 - <pthread.h>: Fixed the definition of PTHREAD_RWLOCK_INITIALIZER for
   2110   android-9 API level and higher.
   2111 
   2112 - Fixed a bug where LOCAL_ARM_NEON was defined to true would make the build
   2113   fail (typo in build/core/build-binary.mk)
   2114 
   2115 - Fixed a bug that prevented the compilation of .s assembly files
   2116   (.S files were ok).
   2117 
   2118 - Speed-up the build of debuggable applications when there is a very
   2119   large number of include directories in a project.
   2120 
   2121 - ndk-gdb: Better detection of 'adb shell' failures (improves error messages).
   2122 
   2123 - ndk-build: Fix a rare bug that appeared when trying to perform parallel
   2124   builds of debuggable projects.
   2125 
   2126 
   2127 -------------------------------------------------------------------------------
   2128 android-ndk-r5b
   2129 ===
   2130 
   2131 This release fixes a few bugs in r5. There are no new features.
   2132 
   2133 IMPORTANT BUG FIXES:
   2134 ---
   2135 
   2136 - Fix a compiler bug in the arm-linux-androideabi-4.4.3 toolchain.
   2137   The previous binary generated invalid thumb instruction sequences when
   2138   dealing with signed chars. This problem was first reported on the
   2139   android-ndk forum and fixed by the following change in the toolchain
   2140   sources:
   2141 
   2142         https://review.source.android.com/#change,19474
   2143 
   2144 - docs/CPLUSPLUS-SUPPORT.html: Add missing documentation for the
   2145   "gnustl_static" value for APP_STL, that allows you to link against
   2146   a static library version of GNU libstdc++.
   2147 
   2148 - ndk-build: Fix a bug that created inconsistent dependency files when a
   2149   compilation error occurred on Windows, preventing building properly after
   2150   the error was fixed in the source code.
   2151 
   2152 - ndk-build: Fix a Cygwin-specific bug where using very short paths for
   2153   the Android NDK installation or the project path could lead to the
   2154   generation of invalid dependency files, making incremental builds
   2155   impossible.
   2156 
   2157 - Fix a typo that prevented the cpufeatures library to work correctly
   2158   with the new NDK toolchain.
   2159 
   2160 - Linux toolchain binaries now run on Ubuntu 8.04 or higher.
   2161   More specifically, the r5 binaries did require GLibc 2.11 on the host
   2162   system, and refused to run with previous releases due to an ABI mismatch
   2163   in the GNU C Library. The r5b binaries are generated with a special
   2164   toolchain that instead targets GLibc 2.7 or higher.
   2165 
   2166 - GNU libstdc++ will not crash anymore when printing floating-point values
   2167   through i/o streams.
   2168 
   2169 OTHER FIXES &amp; CHANGES:
   2170 
   2171 - ndk-build: Speed-up the Cygwin build by avoiding calling "cygpath -m"
   2172   from GNU Make for each and every source or object file. This was a problem
   2173   for users with very large source trees.
   2174 
   2175   In case this doesn't work properly, define NDK_USE_CYGPATH=1 in your
   2176   environment to use 'cygpath -m' as usual.
   2177 
   2178   Also, if 'cygpath' is not in your path, completely ignore it
   2179   (seems to be enough to run the NDK under MSys).
   2180 
   2181 - ndk-build: Handle installation paths containing spaces when checking
   2182   cygwin installation. Before that, the script complained that the user
   2183   was using an incorrect version of GNU Make (even if he had the right one).
   2184 
   2185 - Fixed a typo that prevented several NDK_MODULE_PATH to work properly when
   2186   it contained multiple directories separated with ":"
   2187 
   2188 - prebuilt-common.sh: Make the script check the compiler directly for 64-bit
   2189   generated machine code, instead of relying on the host tag. That should
   2190   allow the 32-bit toolchain to rebuild properly on Snow Leopard.
   2191 
   2192 - prebuilt-common.sh: Fix the toolchain rebuild scripts to work when
   2193   using a 32-bit host toolchain.
   2194 
   2195 - <netinet/in.h>: Add missing declaration for INET_ADDRSTRLEN
   2196 - <netinet/in6.h>: Add missing declaration for IN6_IS_ADDR_MC_NODELOCAL
   2197   and IN6_IS_ADDR_MC_GLOBAL.
   2198 
   2199 - <asm/byteorder.>: Replaced 'asm' with '__asm__' to allow compilation
   2200   with -std=c99. See https://review.source.android.com/#change,20076
   2201 
   2202 - standalone toolchain: The -fpic flag is now the default for the
   2203   arm-linux-androideabi toolchain, instead of -fPIC. This avoids a performance
   2204   degradation when compared to the old android-eabi configuration.
   2205 
   2206   This only affects users of the standalone toolchain. The NDK build script
   2207   always enforced -fpic implicitly.
   2208 
   2209 -------------------------------------------------------------------------------
   2210 android-ndk-r5
   2211 ===
   2212 
   2213 IMPORTANT BUG FIXES:
   2214 ---
   2215 
   2216 - Allow dlclose() to properly call static C++ destructors when unloading
   2217   a shared library. This requires changes in both the C library and the
   2218   build system. IMPORTANT: This feature is only available for API level 9.
   2219 
   2220 - Fix packaging error for system libraries of level 5 and 8. The libraries
   2221   bundled with the NDK and used at link time were not the correct version,
   2222   and this prevented linking against certain symbols appropriately.
   2223 
   2224 - ndk-gdb: do not start activity unless --start or --launch is used.
   2225   (the documentation was correct, the implementation wrong)
   2226 
   2227 - The system headers for all API levels have been cleaned up and will
   2228   not provide the declarations of functions that are not available in
   2229   the corresponding system libraries.
   2230 
   2231 IMPORTANT CHANGES:
   2232 ---
   2233 
   2234 - Support for API level 9, (a.k.a. Android 2.3) which adds the following
   2235   native features to the platform:
   2236 
   2237      - Native audio API based on the Khronos Group OpenSL ES&#0153; 1.0.1 Standard.
   2238        New headers <SLES/OpenSLES.h> and <SLES/OpenSLES_Android.h>
   2239        are provided to allow applications targeting this API level to perform
   2240        audio input, output and processing directly from native code.
   2241 
   2242      - Native activity support, i.e. the ability to build applications that
   2243        are coded entirely in C or C++. More precisely, such applications still
   2244        run inside a VM, and will have to access most of the platform's features
   2245        using JNI (i.e. native code calling VM methods). However, this also
   2246        comes with a series of headers and libraries to implement the following
   2247        directly from native code:
   2248 
   2249           - activity lifecycle management.
   2250           - user input handling (touch, keyboard, trackball, ...).
   2251           - window management (including accessing the pixel buffer).
   2252           - sensor listeners (e.g. accelerometer, compass, ...).
   2253           - hardware configuration management.
   2254           - easily reading assets out of an APK from native code.
   2255           - access to the storage manager, a new feature of Android X.X
   2256             that allows one to provide Opaque Binary Objects containing
   2257             large amounts of data outside of the APK.
   2258 
   2259        See the documentation in docs/STABLE-APIS.html for more details.
   2260 
   2261        Note that most of these new features are targeted at game developers.
   2262 
   2263 - Improved gdbserver binary to allow debugging _threaded_ programs properly
   2264   with ndk-gdb (the previous binary could only set breakpoints on the main
   2265   thread).
   2266 
   2267   IMPORTANT: THIS ONLY WORKS IF YOU RUN ON ANDROID 2.3 OR HIGHER.
   2268 
   2269   The root cause of the problem is a platform bug that was only fixed in
   2270   2.3. If you try to debug on a previous platform, the gdbserver binary
   2271   will only be able to set breakpoints on the main thread.
   2272 
   2273   For more information, see the specific section in docs/NDK-GDB.html.
   2274 
   2275 - Easier debuggable builds: just invoke ndk-build while defining the
   2276   NDK_DEBUG variable to 1, as in:
   2277 
   2278       $NDK/ndk-build NDK_DEBUG=1
   2279 
   2280   This will have the same result that setting the android:debuggable="true"
   2281   in the <application> element of your AndroidManifest.xml file. See the
   2282   file docs/NDK-BUILD.html for more details.
   2283 
   2284   Note that you will need to use the SDKr8 build tools to use this feature
   2285   properly!
   2286 
   2287 - Refresh of system C++ headers:
   2288 
   2289      - Headers have been moved out of the platform directory hierarchy.
   2290        This is to prevent conflicts with other STLs like STLport or the
   2291        GNU libstdc++ which provide their own version of the headers, but
   2292        does not affect your builds.
   2293 
   2294      - The list of headers has grown to include the following:
   2295 
   2296             cassert, cctype, cerrno, cfloat, climits, cmath,
   2297             csetjmp, csignal, cstddef, cstdint, cstdio, cstdlib,
   2298             cstring, ctime, cwchar, new, typeinfo, utility
   2299 
   2300     Note that they still correspond to our minimal C++ runtime, no new feature
   2301     was introduced here.
   2302 
   2303 - Support for C++ exceptions and RTTI. See docs/CPLUSPLUS-SUPPORT.html for
   2304   all details (and limitations).
   2305 
   2306 - STLport implementation: Add sources and prebuilt binaries for a port of
   2307   the STLport C++ Standard Library (www.stlport.org), and an easy way to use
   2308   it at build time by defining APP_STL in your Application.mk. See
   2309   docs/APPLICATION-MK.html and docs/CPLUSPLUS-SUPPORT.html for all details.
   2310 
   2311 - GNU libstdc++ implementation: Available as a static library that you can
   2312   select for your application through APP_STL. See docs/CPLUSPLUS-SUPPORT.html
   2313   for all details.
   2314 
   2315 - Add support for prebuilt libraries with the PREBUILT_SHARED_LIBRARY and
   2316   PREBUILT_STATIC_LIBRARIES build scripts. See the new documentation
   2317   file named docs/PREBUILTS.html for explanations and usage examples.
   2318 
   2319 - Support for module exports: A module can now define a set of compiler or
   2320   linker flags that will be automatically 'imported' by any other module that
   2321   depends on it, through LOCAL_STATIC_LIBRARIES or LOCAL_SHARED_LIBRARIES.
   2322 
   2323   This is achieved with the help of new Android.mk variables named
   2324   LOCAL_EXPORT_CFLAGS, LOCAL_EXPORT_CPPFLAGS, LOCAL_EXPORT_C_INCLUDES and
   2325   LOCAL_EXPORT_LDLIBS. See docs/ANDROID-MK.html for mode documentation, and
   2326   a 'samples/module-exports' for a sample project that uses this.
   2327 
   2328 - Add support to specify a different file name for generated files, through
   2329   the new LOCAL_MODULE_FILENAME variable. See docs/ANDROID-MK.html for an
   2330   example.
   2331 
   2332 - Add support for module imports, through the NDK_MODULE_PATH environment
   2333   variable and the new 'import-module' function. This allows you to avoid
   2334   hard-coding the path of third-party modules into your project files.
   2335 
   2336   See docs/IMPORT-MODULE.html for details.
   2337 
   2338 - Add the content of LOCAL_C_INCLUDES to gdb.setup to make native debugging
   2339   easier. Also fixes an issue that prevented clean parallel builds of
   2340   debuggable applications to work correctly. This fixes an error message that
   2341   said:
   2342 
   2343       /bin/sh: <project>/libs/armeabi/gdb.setup: No such file or directory
   2344 
   2345   When doing a "ndk-build -j<number>", with <number> bigger than 1.
   2346 
   2347 - Add support for assembly-level source filtering. See the description of
   2348   LOCAL_FILTER_ASM in docs/ANDROID-MK.html for more details. This can be useful
   2349   for certain kinds of obfuscation tasks.
   2350 
   2351 - This NDK comes with a new toolchain (named arm-linux-androideabi-4.4.3)
   2352   which provides many benefits, including:
   2353 
   2354      - Better code generation than the previous one (gcc-4.4.0)
   2355      - On Windows, the binaries do not depend on Cygwin anymore.
   2356      - The ability to use it as a stand-alone cross-compiler
   2357        (see docs/STANDALONE-TOOLCHAIN.html for all details).
   2358 
   2359   The binaries for gcc-4.4.0 are still provided for backwards compatibility.
   2360   Use NDK_TOOLCHAIN=arm-eabi-4.4.0 in your environment to force its usage.
   2361   Note that it is now deprecated and will be removed in a future NDK release.
   2362 
   2363   IMPORTANT: The old toolchain doesn't properly support exceptions, RTTI,
   2364              STLport and GNU libstdc++.
   2365 
   2366   The binaries for the already-deprecated gcc-4.2.1 have been removed.
   2367 
   2368 - The 'cpufeatures' library has been updated to provide better architecture
   2369   and features detection (including a work-around for buggy ARMv6 kernels
   2370   which report an architecture version of 7).
   2371 
   2372   The library is now also available as an import module, to simplify its
   2373   usage in your build scripts. See the updated docs/CPU-FEATURES.html file
   2374   for details.
   2375 
   2376   NOTE: Please update your Android.mk to use module imports as soon as
   2377         possible. The location $NDK/source/cpufeatures/ is deprecated
   2378         and will be removed in a future NDK release. Avoid referencing
   2379         it directly in your build scripts!
   2380 
   2381 OTHER FIXES AND CHANGES:
   2382 ---
   2383 
   2384 - Reduced the size of generated binaries by using --strip-unneeded
   2385   instead of --strip-debug. This gets rid of mor symbol table entries
   2386   in release shared libraries and executables, without impacting
   2387   runtime execution.
   2388 
   2389 - Fix bad automatic dependency tracking when using multiple source
   2390   sub-directories.
   2391 
   2392 - The path to system headers is now included last in the compilation command
   2393   line. This prevents conflicts with source code that define their own headers
   2394   with similar names (e.g. a custom "err.h" was ignored, because the system
   2395   <err.h> was used instead).
   2396 
   2397 - Update documentation for 'my-dir' function to explain that, due to the
   2398   way GNU Make works, it really returns the path of the last included
   2399   Makefile (instead of the current one). Also provide examples on how
   2400   to deal with it.
   2401 
   2402 - make-release.sh: Now has an --out-dir=<path> option to specify the
   2403   output directory where the packages are going to be copied. Also
   2404   ensure that generated packages have go+r permissions.
   2405 
   2406 - ndk-build will now properly escape arguments. This means that something
   2407   like this:
   2408 
   2409      ndk-build  MY_CFLAGS="-DFOO -DBAR"
   2410 
   2411   will now work correctly.
   2412 
   2413 - Add --git-http option to download-toolchain-sources.sh and
   2414   rebuild-all-prebuilt.sh in order to download sources from
   2415   android.git.kernel.org through HTTP.
   2416 
   2417 - ndk-gdb: properly launch activities for which name does not contain any dot.
   2418 
   2419 - ndk-gdb: add --delay=<timeout> option to specify a delay in seconds
   2420   between activity launch and gdbserver attach. This is needed because certain
   2421   activities can take a long time to properly launch. The default delay is
   2422   also increased to 2 seconds (instead of 1).
   2423 
   2424 - build/tools/build-gcc.sh: copy the sysroot to the build directory. This
   2425   avoids the generated toolchain binaries from hard-coding host build paths.
   2426 
   2427 - Platform files are now under $NDK/platforms instead of $NDK/build/platforms
   2428 
   2429 - Toolchain files are now under $NDK/toolchains instead of
   2430   $NDK/build/toolchains and $NDK/build/prebuilt.
   2431 
   2432 - Release and debug objects are stored under two different directories now
   2433   (i.e. obj/local/<abi>/objs and obj/local/<abi>/objs-debug). This
   2434   prevents rebuilding *everything* when you switch between these two modes,
   2435   which can be a real time-saver for complex projects.
   2436 
   2437 - Fixed a bug that duplicated the LOCAL_LDFLAGS in the final link command
   2438   when LOCAL_ALLOW_UNDEFINED_SYMBOLS was not set to 'true'
   2439 
   2440 -------------------------------------------------------------------------------
   2441 android-ndk-r4b
   2442 ===
   2443 
   2444 This release fixes a few bugs in r4 scripts. There are no new features.
   2445 
   2446 OTHER FIXES &amp; CHANGES:
   2447 ---
   2448 
   2449 - build/tools/rebuild-all-prebuilt.sh: mktemp expects 'XXXXXX' instead of 'XXX'.
   2450   Fix the script (and others in the same directory) to do that properly.
   2451 
   2452 - ndk-gdb: check the target device's API level, and dump an error message if
   2453   it is not at least 8 (Android 2.2 a.k.a. Froyo). Fix script to properly
   2454   remove control characters like '\r' from adb shell's output. Also fix
   2455   script to work properly with OS X's BSD awk.
   2456 
   2457 - ndk-build: Make AndroidManifest.xml optional. Now the build scripts will try
   2458   to look for jni/Android.mk if no manifest is found. If you don't use this,
   2459   you can also define NDK_PROJECT_PATH to point to your tree.
   2460 
   2461   Also, on Windows, check that a Cygwin-compatible make executable is being
   2462   used, and dump a readable help message to solve the issue if this is not
   2463   the case.
   2464 
   2465 - Place generated binaries under $PROJECT_PATH/obj/ instead of
   2466   $PROJECT_PATH/bin/ndk/. The 'bin' directory is sometimes cleaned
   2467   by the JDT, resulting in the inability to properly load symbol versions
   2468   of the shared libraries when running ndk-gdb.
   2469 
   2470 - Warn when sources with unsupported extensions are used in LOCAL_SRC_FILES.
   2471   Previous behaviour was to silently ignore them.
   2472 
   2473 - Set the optimization mode to 'debug' automatically if the manifest sets
   2474   android:debuggable to 'true'. You can override this by using
   2475   'APP_OPTIM := release' in your Application.mk, or by adding '-O2' to
   2476   your LOCAL_CFLAGS.
   2477 
   2478   Note that even in release mode, the NDK build scripts will produce
   2479   binaries with symbols under obj/local/<abi>/ that will be used for
   2480   debugging with gdb. However, the debugger will have a harder time to
   2481   print proper local variable values that have been optimized out or
   2482   even set breakpoints properly.
   2483 
   2484 -------------------------------------------------------------------------------
   2485 android-ndk-r4
   2486 ===
   2487 
   2488 IMPORTANT BUG FIXES:
   2489 ---
   2490 
   2491 - The <fenv.h> header was not placed in the correct location and could not
   2492   be found by normal builds.
   2493 
   2494 IMPORTANT CHANGES:
   2495 ---
   2496 
   2497 - On Windows, Cygwin 1.7 or higher is now required. The NDK will not
   2498   work properly with Cygwin 1.5 which is now officially obsolete
   2499   anyway.
   2500 
   2501 - Simplified build system: You no longer need to run build/host-setup.sh
   2502   or modify anything under $NDK_ROOT/apps/. Instead, just invoke the
   2503   new 'ndk-build' script from your application's project directory, or
   2504   one of its sub-directories.
   2505 
   2506   See docs/OVERVIEW.html and docs/NDK-BUILD.html for more details.
   2507 
   2508   NOTE: For compatibility purpose, you can still define projects
   2509         through $NDK_ROOT/apps/<name> though.
   2510 
   2511         However, not that sample applications have moved from
   2512         'apps/<name>/project' to 'samples/<name>' and now must
   2513         be built with 'ndk-build'. The source code of pre-existing
   2514         samples didn't change though.
   2515 
   2516 - Easy native debugging support when running debuggable applications
   2517   on Android 2.2 or higher, through the new 'ndk-gdb' helper script.
   2518   See docs/NDK-GDB.html for details.
   2519 
   2520 - Support for hardware FPU. This is through the new 'armeabi-v7a' ABI
   2521   corresponding to ARMv7-a class devices.
   2522 
   2523   Note that by default, the NDK will still generate machine code for the old
   2524   'armeabi' ABI (ARMv5TE based) which is supported by all official Android
   2525   system images to date.
   2526 
   2527   You will need to define APP_ABI in your Application.mk file to change this.
   2528   See docs/APPLICATION-MK.html
   2529 
   2530   More details about ABIs is now available in docs/CPU-ARCH-ABIS.html
   2531 
   2532 - A small static library named 'cpufeatures' is provided with source code
   2533   and can be used at runtime to determine the CPU features supported by the
   2534   target device. It should run on all Android platforms, starting from 1.5.
   2535 
   2536   For more information, see docs/CPU-FEATURES.html
   2537 
   2538 - Support for the optional ARM Advanced SIMD (a.k.a. NEON) instruction set
   2539   extension through the use the LOCAL_ARM_NEON variable in Android.mk, or
   2540   the '.neon' suffix when listing source files.
   2541 
   2542   Neon is an *optional* instruction set extension, and not all Android ARMv7
   2543   devices will support it. You will need to use the 'cpufeatures' library to
   2544   determine if such code can be used at runtime, and provide alternate code
   2545   paths if this is not the case. This is similar to MMX/SSE/3DNow on x86
   2546   platforms.
   2547 
   2548   For more information, see docs/CPU-ARM-NEON.html
   2549 
   2550 - Added a new sample (hello-neon) to demonstrate usage of 'cpufeatures'
   2551   and NEON intrinsics and build support.
   2552 
   2553 - Added <android/bitmap.h>, a new stable API available from android-8
   2554   (a.k.a. Android 2.2) to reliably access the pixel buffer of an
   2555   android.graphics.Bitmap object from native code. See docs/STABLE-API.html
   2556   and the new sample program under 'samples/bitmap-plasma' for details
   2557   and usage example.
   2558 
   2559 - Support the NX (No Execute) security feature, where special sections
   2560   are added to the generated shared libraries to instruct the kernel
   2561   that code shall not be executed from the heap and stack by default.
   2562 
   2563   See docs/ANDROID-MK.html to see how to disable this, plus reference
   2564   links for more information.
   2565 
   2566 OTHER FIXES AND CHANGES:
   2567 ---
   2568 
   2569 - support the .s extension for raw assembly sources (.S is already supported
   2570   but the input files are parsed by the C-preprocessor before being sent to
   2571   the assembler).
   2572 
   2573 - build/host-setup.sh has been removed. There is no need for a 'setup' step
   2574   when using the NDK for the first time. All host-specific autodetection and
   2575   basic tool sanity checking have been moved to the build scripts themselves.
   2576 
   2577 - APP_MODULES in Application.mk is now optional. If not defined, the NDK
   2578   will simply build _all_ the modules that are declared from your Android.mk.
   2579 
   2580   You can still use APP_MODULES to restrict the set of modules you want to
   2581   build. Note that the NDK now computes the transitive dependencies of these
   2582   modules for you now. See docs/APPLICATION-MK.html for details.
   2583 
   2584 - docs/STABLE-APIS.html: Add missing section for Dynamic Linker Library
   2585   (libdl.so). It is actually supported by all API levels.
   2586 
   2587 - build/tools/download-toolchain-sources.sh: Use 'master' branch by default
   2588   instead of the 'eclair' one.
   2589 
   2590 - build-toolchain.sh: Allow ad-hoc patching of toolchain sources when rebuilding
   2591   them. This is primarily to ease development. All you need to do is put a patch
   2592   under build/tools/toolchain-patches/<foo>/<name>.patch, and it will be applied
   2593   with 'patch -p1' into the <foo> directory of the unpacked toolchain sources
   2594   before the configure step.
   2595 
   2596 - docs/CPU-ARCH-ABIS.html: Mention the experimental 'x86' ABI.
   2597 
   2598 - build/core/mkdeps.sh: Removed obsolete script.
   2599 
   2600 - the NDK build script now only parses the Application.mk and Android.mk of
   2601   the applications listed by APP. The error messages when APP is empty or
   2602   malformed have also been improved.
   2603 
   2604 - removed the annoying 'the mangling of 'va_list' has changed in GCC 4.4'
   2605   warning when building with GCC 4.4.0 for ARM.
   2606 
   2607 - C Library header fixes:
   2608 
   2609     For all platforms:
   2610 
   2611         - <arpa/inet.h>: no longer includes <netinet/in6.h>.
   2612         - <ctype.h>: better inlining with -ansi option.
   2613         - <mntent.h>: add missing include for <stdio.h>.
   2614         - <netinet/in.h>: include <netinet/in6.h> and define in6addr_any +
   2615           in6addr_loopback.
   2616         - <netinet/in6.h>: add IPV6_JOIN_GROUP, IPV6_LEAVE_GROUP,
   2617           IN6ADDR_ANY_INIT, ipv6mr_interface.
   2618         - <sys/epoll.h>: add missing C++ inclusion guards.
   2619         - <sys/resource.h>: add missing rlim_t declaration.
   2620         - <sys/system_properties.h>: add missing C++ inclusion guards.
   2621         - <time64.h>: add missing C++ inclusion guards.
   2622         - <netdb.h>: move h_errno declaration inside C++ inclusion guards.
   2623 
   2624 - C Library changes:
   2625 
   2626     For android-8 (a.k.a. Android 2.2):
   2627 
   2628         - <dlfcn.h>: add DL_info and dladdr().
   2629         - <err.h>: add err(), warn() and other variants.
   2630         - <regex.h>, <fts.h>, <sys/queue.h>: added
   2631         - <pthread.h>: add pthread_condattr_t
   2632         - <sched.h>: added proper clone() declaration (and implementation).
   2633         - <signal.h>: added killpg().
   2634         - <stdio.h>: add fdprintf() and vfdprintf().
   2635         - <stdlib.h>: fix ptsname_r() signature in declaration. previous
   2636           implementation was broken anyway.
   2637         - <unistd.h>: add getusershell(), setusershell(), endusershell(),
   2638           ttyname(), ttyname_r(), TEMP_FAILURE_RETRY. Fix usleep() signature
   2639           (now returns int).
   2640         - <wchar.h>: add fake mbstowcs() and wcstombs().
   2641 
   2642   More details available under docs/system/libc/CHANGES.html
   2643 
   2644 -------------------------------------------------------------------------------
   2645 android-ndk-r3
   2646 ===
   2647 
   2648 IMPORTANT BUG FIXES:
   2649 ---
   2650 
   2651 - Fix build/host-setup.sh to execute as a Bourne shell script (again)
   2652 
   2653 - Make target shared libraries portable to systems that don't use the exact
   2654   same toolchain. This is needed due to differences in libgcc.a implementations
   2655   between gcc 4.2.1 and 4.4.0. This change ensures that generated machine
   2656   code doesn't depend on helper functions provided by the Android platform
   2657   runtime.
   2658 
   2659 
   2660 IMPORTANT CHANGES:
   2661 ---
   2662 
   2663 - GCC 4.4.0 is now used by default by the NDK. It generates better code than
   2664   GCC 4.2.1, which was used in previous releases. However, the compiler's C++
   2665   frontend is also a lot more pedantic regarding certain template constructs
   2666   and will even refuse to build some of them.
   2667 
   2668   For this reason, the NDK also comes with GCC 4.2.1 prebuilt binaries, and
   2669   you can force its usage by defining NDK_TOOLCHAIN in your environment to
   2670   the value 'arm-eabi-4.2.1'. For example:
   2671 
   2672         export NDK_TOOLCHAIN=arm-eabi-4.2.1
   2673         make APP=hello-jni
   2674 
   2675   Note that only the 'armeabi' ABI is supported by the 4.2.1 toolchain. We
   2676   recommend switching to 4.2.1 *only* if you encounter compilation problems
   2677   with 4.4.0.
   2678 
   2679   The 4.2.1 prebuilt binaries will probably be removed from a future release
   2680   of the Android NDK, we thus *strongly* invite you to fix your code if such
   2681   problems happen.
   2682 
   2683 - Support for OpenGL ES 2.0. This is through the new 'android-5' platform to
   2684   reflect Android 2.0 (previously the Eclair branch). This is merely a copy
   2685   of android-4 that also includes headers and libraries for OpenGL ES 2.0.
   2686 
   2687   See the sample named "hello-gl2" for a *very* basic demonstration. Note that
   2688   OpenGL ES 2.0 is currently *not* available from Java, and must be used
   2689   through native code exclusively.
   2690 
   2691   IMPORTANT: OpenGL ES 2.0 is not supported in the Android emulator at this
   2692              time. Running/testing any native code that depends on it thus
   2693              requires a real device.
   2694 
   2695 - The NDK build script will now remove installed binaries from the application
   2696   project's path before starting the build. This ensures that:
   2697 
   2698   - if the build fails for some reason, a stale/obsolete file is not left in
   2699     your application project tree by mistake.
   2700 
   2701   - if you change the target ABI, a stale/obsolete file is not left into the
   2702     folder corresponding to the old ABI.
   2703 
   2704 
   2705 - Updated the STABLE-APIS.html document to clarify the OpenGL ES 1.0/1.1/2.0
   2706   issues regarding specific devices (i.e. 1.0 supported everywhere, 1.1 and
   2707   2.0 on specific devices only, need for <uses-feature> tag in manifest).
   2708 
   2709 
   2710 OTHER FIXES AND CHANGES:
   2711 ---
   2712 
   2713 - Actually use the awk version detected by host-setup.sh during the build.
   2714 
   2715 - Only allow undefined symbols when LOCAL_ALLOW_UNDEFINED_SYMBOLS is set
   2716   to 'true', just like the documentation says it works. Also fix a typo
   2717   in CLEAR_VARS that prevented this variable from being cleared properly.
   2718 
   2719 - Simplified build/tools/make-release.sh, the --prebuilt-dir option is
   2720   gone, and --help will dump a clearer description of expected options
   2721   and input files.
   2722 
   2723 - Added --prebuilt-ndk=FILE option to build/tools/make-release.sh script to
   2724   package a new experimental NDK package archive from the current source tree
   2725   plus the toolchain binaries of an existing NDK release package. E.g.:
   2726 
   2727     build/tools/make-release.sh \
   2728        --prebuilt-ndk=/path/to/android-ndk-1.6_r1-linux-x86.zip
   2729 
   2730   will generate a new NDK package in /tmp/ndk-release that contains the most
   2731   up-to-date build scripts, plus the toolchain binaries from 1.6_r1 (which
   2732   are not in the git repository).
   2733 
   2734   Also added the --no-git option to collect all sources from the current
   2735   NDK root directory, instead of the list given by 'git ls-files'. This can
   2736   be useful if you don't want to checkout the whole 'platform/development'
   2737   project from repo and still work on the NDK.
   2738 
   2739   This change is to help people easily package experimental NDK releases to
   2740   test and distribute fixes and improvements.
   2741 
   2742 - Remove bash-isms from build/tools/build-toolchain.sh. Now it's possible to
   2743   build it with the 'dash' shell on Debian-based systems (tested on Ubuntu 8.04)
   2744 
   2745 - Remove bash-ism from build/tools/build-ndk-sysroot.sh
   2746 
   2747 - Refresh C library headers for all platforms:
   2748 
   2749     - make <endian.h> simply include <sys/endian.h>
   2750     - make <stdint.h> properly declare 64-bit integer types with a C99 compiler
   2751     - add missing <sys/types.h> to <strings.h>
   2752     - add GLibc-compatible macro aliases (st_atimensec, st_mtimensec and
   2753       st_ctimensec) to <stat.h>
   2754     - add missing declaration for tzset() in <time.h>
   2755 
   2756 - Added build/tools/download-toolchain-sources.sh, a script that allows you
   2757   to download the toolchain sources from the official open-source repository
   2758   at android.git.kernel.org and nicely package them into a tarball that can
   2759   later be used by build/tools/build-toolchain.sh to rebuild the prebuilt
   2760   binaries for your system.
   2761 
   2762 - Updated build/tools/build-toolchain.sh to support the tarballs generated
   2763   by download-toolchain-sources.sh with the --package=<file> option. This
   2764   also builds both gcc 4.2.1 and 4.4.0, adding support for armeabi-v7a to
   2765   gcc 4.4.0.
   2766 
   2767 -------------------------------------------------------------------------------
   2768 android-ndk-1.6_r1
   2769 ===
   2770 
   2771 IMPORTANT BUG FIXES:
   2772 ---
   2773 
   2774 - Fix build/host-setup.sh to:
   2775   * execute as a Bourne shell script
   2776   * remove unused host gcc dependency
   2777   * improve Windows host auto-detection
   2778   * add GNU Make version check
   2779   * add Nawk/Gawk check
   2780   * ensure that the script is run from $NDKROOT as build/host-setup.sh
   2781   * add --help, --verbose, --no-awk-check and --no-make-check options
   2782 
   2783 - Properly add sysroot library search path at build time. This makes a line
   2784   in Android.mk like:
   2785 
   2786      LOCAL_LDLIBS := -lz
   2787 
   2788   Actually work correctly, instead of having the linker complaining that it
   2789   could not find the corresponding libz.so library. Also clear LOCAL_LDLIBS
   2790   in $(CLEAR_VARS) script.
   2791 
   2792 
   2793 IMPORTANT CHANGES:
   2794 ---
   2795 
   2796 - The 'sources' directory is gone. The NDK build system now looks for
   2797   $(APP_PROJECT_PATH)/jni/Android.mk by default. You can override this with
   2798   the new APP_BUILD_SCRIPT variable in Application.mk
   2799 
   2800   For example, the 'hello-jni' sample uses the following files:
   2801 
   2802     apps/hello-jni/project/jni/Android.mk
   2803     apps/hello-jni/project/jni/hello-jni.c
   2804 
   2805   The 'apps/<name>' directory is still needed in this release though.
   2806 
   2807 - Change LOCAL_CFLAGS / LOCAL_CPPFLAGS to work as in the full Android build
   2808   system. This means that:
   2809 
   2810     - LOCAL_CFLAGS   is now used for *both* C and C++ sources  (was only for C)
   2811     - LOCAL_CPPFLAGS is now used for C++ sources only (was for both C and C++)
   2812     - LOCAL_CXXFLAGS is used like LOCAL_CPPFLAGS but is considered obsolete.
   2813       (will disappear in next release)
   2814 
   2815   Also fixed APP_CPPFLAGS / APP_CFLAGS / APP_CXXFLAGS correspondingly.
   2816 
   2817 - Rename build/platforms/android-1.5 to build/platforms/android-3 to match
   2818   the Android API level instead of the marketing speak.
   2819 
   2820   Also add a new build/platforms/android-4, and make the build system select
   2821   which platform to use based on the content of the project file named
   2822   $(APP_PROJECT_PATH)/default.properties.
   2823 
   2824 - Add OpenGL ES 1.x headers and libraries to the android-4 stable APIs.
   2825   (NOTE: they are *not* available for android-3)
   2826 
   2827   Also provide a small port of the "San Angeles Observation" demo to show
   2828   how to make a simple Android application that uses them.
   2829 
   2830 
   2831 OTHER FIXES AND CHANGES
   2832 ---
   2833 
   2834 - Ensure that the __ANDROID__ macro is always defined when building code
   2835   with the NDK. Normally, the macro must be defined by the toolchain
   2836   automatically to indicate that you're targeting the Android runtime.
   2837 
   2838   This works for the new arm-linux-androideabi toolchain, but there is
   2839   a bug in the way we built the arm-eabi one, so add the flag manually
   2840   through the NDK build script for it.
   2841 
   2842   Note that the ANDROID macro, is now deprecated. While it is still defined
   2843   by the NDK, you should modify your code to test against __ANDROID__ instead!
   2844 
   2845 - Generate thumb binaries by default.
   2846 
   2847 - Add support for LOCAL_ARM_MODE in Android.mk.
   2848 
   2849 - Add support for the '.arm' suffix in source file names to force the
   2850   compilation of a single source in ARM (32-bit) mode.
   2851 
   2852 - Generate proper unoptimized versions of binaries when APP_OPTIM := debug
   2853 
   2854 - Add support for LOCAL_C_INCLUDES in Android.mk
   2855 
   2856 - Fix compilation of assembler files (e.g. foo.S)
   2857 
   2858 -------------------------------------------------------------------------------
   2859 android-ndk-1.5_r1 released.
   2860 ===
   2861