Home | History | Annotate | Download | only in docs
      1 <html><body><pre>Android NDK ChangeLog:
      2 
      3 -------------------------------------------------------------------------------
      4 android-ndk-r8b
      5 
      6 IMPORTANT BUG FIXES:
      7 
      8 - Fixed LOCAL_SHORT_COMMANDS issues on darwin-x86 and windows cygwin environment
      9   and for static libraries.  List file generation is sped up, and it is no longer
     10   regenerated and causes whole project to be rebuilt every time.
     11 
     12 - Fixed several issues in ndk-gdb
     13 
     14     * to pass flags "-e", "-d", "-s" to adb more consistently
     15 
     16     * to accept device serial name containing space
     17 
     18     * to also pull /system/bin/link, so gdb on host can set a breakpoint in
     19       __dl_rtld_db_dlactivity and be aware of linker activity (eg. rescan solib symbols
     20       when dlopen() is called)
     21 
     22 - Fixed "ndk-build clean" in windows which failed to remove ./libs/*/lib*.so
     23 
     24 - Fixed ndk-build.cmd to return non-zero ERRORLEVEL when make fails
     25 
     26 - Fixed libc.so to no longer incorrectly export __exidx_start and __exidx_end symbols
     27 
     28 - Fixed SEGV when unwinding stack pasts __libc_init for ARM and MIPS.
     29 
     30   Fixed __start (in crtbegin_dynamic/static.o) to "call __libc_init" instead of
     31   "jump __libc_init", otherwise stack unwinding past __libc_init may get wrong return
     32   address and crash the program or do wield things.  With "call", return address is pushed
     33   on stack and unwinding stops correctly at _start.  Note that __libc_init never returns, so
     34   this fix wont affect normal program execution.  But just in case it "does" return,
     35   jump to address 0 and halt.
     36 
     37 
     38 IMPORTANT CHANGES:
     39 
     40 - GCC 4.6 toolchain
     41 
     42   Add GCC 4.6 toolchain (binutils 2.21 with gold + GDB 7.3.x) to co-exists with
     43   the original GCC 4.4.3 toolchain (binutils 2.19 + GDB 6.6).  Note:
     44 
     45     * GCC 4.6 is the defualt.  You may set NDK_TOOLCHAIN_VERSION=4.4.3 in Application.mk
     46       to select the origianl one.
     47 
     48     * Gold linker support is only avaialble for ARM and x86 architectures on linux-86
     49       and  darwin-x86 hosts.  It's not turned on by default.  Add
     50       "LOCAL_LDLIBS += -fuse-ld=gold" in Android.mk to enable it.
     51 
     52     * You will need the new GDB to debug program compiled with -fPIE (including
     53       binaries in JellyBean image)
     54 
     55     * The binutils 2.21 ld also contain back-port of fixes from 2.22
     56 
     57       * Fixed "ld --gc-sections" which incorrectly retain zombie references to external
     58         libraries.  See http://sourceware.org/bugzilla/show_bug.cgi?id=13177 for detail.
     59 
     60       * Fuxed ARM "strip" to preserve the original p_align and p_flags in GNU_RELRO section
     61         if they are valid.  Otherwise program built with -fPIE can't be debugged.
     62         http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf.c.diff?cvsroot=src&r1=1.552&r2=1.553
     63 
     64     * Sincos optimization is not enabled for compatibility with old platforms which don't have
     65       it.
     66 
     67 - NX and relro/bind_now protections are enabled by default
     68 
     69   Add "--noexecstack" for assembler and "-z noexecstack" for linker to enable NX
     70   protection against buffer overflow attacks by enabling NX bit on stack and heap.
     71 
     72   Add "-z relro -z now" for linker to harden internal data sections after linking
     73   against security vulnerabilities due to memory corruption.  See
     74 
     75   http://www.akkadia.org/drepper/nonselsec.pdf (section 6)
     76   http://tk-blog.blogspot.com/2009/02/relro-not-so-well-known-memory.html
     77 
     78   For those who really needs it, these features can be disabled by
     79   1. Passing "--execstack" to assembler and "-z execstack" to linker to
     80      disable NX protection.
     81      Passing "-z norelro -z lazy" to linker to disable second protection.
     82   2. In NDK jni/Android.mk, set the following
     83      LOCAL_DISABLE_NO_EXECUTE=true: to disable "--noexecstack" and "-z noexecstack"
     84      LOCAL_DISABLE_RELRO=true: to disable "-z relro -z now"
     85   see $NDK/docs/ANDROID-MK.html for details
     86 
     87 - Brand executables with .note.ABI-tag section
     88 
     89   Brand Android executable with .note.ABI-tag (in crtbegin_static/dynamic.o) for debugging
     90   tools to act accordingly.  The structure member and values are defined as follow.
     91 
     92   static const struct {
     93     int32_t	namesz;  /* = 4,  sizeof ("GNU") */
     94     int32_t	descsz;  /* = 6 * sizeof(int32_t) */
     95     int32_t	type;    /* = 1 */
     96     char	name[sizeof "GNU"];  /* = "GNU" */
     97     int32_t	os;      /* = 0 */
     98     int32_t	major;   /* = 2 */
     99     int32_t	minor;   /* = 6 */
    100     int32_t	teeny;   /* = 15 */
    101     int32_t	os_variant;  /* = 1 */
    102     int32_t	android_api; /* = 3, 4, 5, 8, 9, 14 */
    103   }
    104 
    105 
    106 OTHER BUG FIXES:
    107 
    108 - Backport several patches to fix MIPS issues.
    109 
    110     * http://sourceware.org/bugzilla/show_bug.cgi?id=12637
    111       mips-linux-gnu: relocation truncated to fit: R_MIPS_TLS_LDM
    112 
    113     * http://sourceware.org/bugzilla/show_bug.cgi?id=12845
    114       ld segfaults when using --gc-sections
    115 
    116     * http://sourceware.org/ml/binutils/2011-05/msg00198.html
    117       Refix MIPS GOT_PAGE counting
    118 
    119     * Follow warning symbol link in mips_elf_count_got_symbols.
    120 
    121     * Follow warning symbol link in mips_elf_allocate_lazy_stub.
    122 
    123     * Move MIPS .dynamic to the data segement, so that it is writable.
    124       Replace hard-coded 4096 with symbols for correct segment sizes for MIPS.
    125 
    126     * Remove -mno-shared as default in MIPS toolchain.  -fPIC (or -fpic if supported)
    127       is default for Android toolchain.  Without explicitly specifying one of
    128       -mshared, -fpic, -fPIC, -fpie, or -fPIE, MIPS compiler adds -mno-shared
    129       which turns off PIC.  Fixed it not to add -mno-shared as default.
    130 
    131 - Fixed wrong package names in samples hello-jni and two-libs so tests project
    132   underneath can compile
    133 
    134 
    135 OTHER CHANGES:
    136 
    137 - New binaries locations
    138 
    139     * gdbserver is moved from toolchain/&lt;arch-os-ver&gt;/prebuilt/gdbserver to
    140       prebuilt/android-&lt;arch&gt;/gdbserver/gdbserver
    141 
    142     * x86 toolchain prefix is renamed from i686-android-linux- to i686-linux-android-
    143 
    144     * sources/cxx-stl/gnu-libstdc++/include and lib are moved to
    145       sources/cxx-stl/gnu-libstdc++/4.4.3 when compiled with 4.4.3 GCC, or
    146       sources/cxx-stl/gnu-libstdc++/4.6 when compiled with 4.6 GCC
    147 
    148     * libbfd.a and libintl.a are moved from lib/ to lib32/
    149 
    150 - Header if_dl.h is removed from all platforms and architectures. AF_LINK and sockaddr_dl
    151     it describes are specpfic to BSD (ie. don't exist in Linux)
    152 
    153 - Various scripts to rebuild/test NDK toolchain
    154 
    155     * Add build-mingw64-toolchain.sh to generate a new Linux-hosted toolchain that generates
    156       Win32 and Win64 executables.
    157 
    158     * Speed up download-toolchain-sources.sh by "clone" but only "checkout" the directories
    159       that we need to build the NDK toolchain binaries.
    160 
    161     * New build-host-gcc.sh and build-host-gdb.sh
    162 
    163     * Add tests/check-release.sh to check the content of a given NDK installation directory,
    164       or an existing NDK package.
    165 
    166     * Rewrite standalone tests: tests/standalone/run.sh
    167 
    168 
    169 -------------------------------------------------------------------------------
    170 android-ndk-r8
    171 
    172 IMPORTANT BUG FIXES:
    173 
    174 - Fixed a typo in GAbi++ implementaiton where result of dynamic_cast&lt;D&gt;(b)
    175   of base class object 'b' to derived class D is adjusted wrong
    176   (in the opposite direction from base class). See
    177   http://code.google.com/p/android/issues/detail?id=28721
    178 
    179 - Fixed an issue in make-standalone-toolchain.sh which fails to copy
    180   libsupc++.*.
    181 
    182 
    183 IMPORTANT CHANGES:
    184 
    185 - Added support for the mips ABI.
    186 
    187   This release of the Android NDK contains support for 'mips' ABI.
    188   To generate machine runs on MIPS-based Android devices, please add 'mips' to
    189   APP_ABI definition in your Application.mk, or 'all' to generate binaries for
    190   all currently supported ABI.  See docs/CPU-MIPS.html for details.
    191 
    192 - You can build a standalone mips toolchain using the
    193   --toolchain=mipsel-linux-android-4.4.3 option when calling
    194   make-standalone-toolchain.sh. See docs/STANDALONE-TOOLCHAIN.html for more details.
    195 
    196 
    197 OTHER BUG FIXES:
    198 
    199 - Fixed ndk-build.cmd to ensure that ndk-build.cmd works correctly even if
    200   the user has redefined the SHELL environment variable (which can happen under
    201   the hood when installing a variety of development tools on Windows)
    202 
    203 
    204 -------------------------------------------------------------------------------
    205 android-ndk-r7c
    206 
    207 This release of the NDK includes an important fix for Tegra2-based devices,
    208 and a few additional fixes and improvements:
    209 
    210 IMPORTANT BUG FIXES:
    211 
    212 - Fixed GNU STL armeabi-v7a binaries to not crash on non-NEON devices.
    213   The files provided with NDK r7b where not configured properly, resulting
    214   in crashes on Tegra2-based devices and others when trying to use certain
    215   floating-point functions (e.g., cosf, sinf, expf).
    216 
    217 
    218 IMPORTANT CHANGES:
    219 
    220 - Added support for custom output directories through the NDK_OUT
    221   environment variable. When defined, this variable is used to store all
    222   intermediate generated files, instead of $PROJECT_PATH/obj.
    223 
    224   The variable is also recognized by ndk-gdb.
    225 
    226 - Added support for building modules with hundreds or even thousand of source
    227   files by defining LOCAL_SHORT_COMMANDS to true in your Android.mk.
    228 
    229   This change forces the NDK build system to put most linker or archiver
    230   options into list files, to work-around command-line length limitations
    231   (particularly on Windows). See docs/ANDROID-MK.html for details.
    232 
    233 
    234 OTHER BUG FIXES:
    235 
    236 - Fixed android_getCpuCount() implementation in the cpufeatures helper
    237   library. The previous implementation only listed the cores that were
    238   active the first time the function was called. This behavior could
    239   provide results that were too low on devices that disable and enable
    240   cores dynamically.
    241 
    242 -------------------------------------------------------------------------------
    243 android-ndk-r7b
    244 
    245 IMPORTANT BUG FIXES:
    246 
    247 - Updated &lt;sys/atomics.h&gt; to avoid correctness issues on some multi-core
    248   ARM-based devices. Rebuild your unmodified sources with this version of the
    249   NDK and this problem should completely be eliminated. For more details, read
    250   docs/ANDROID-ATOMICS.html.
    251 
    252 - Reverted to binutils 2.19 to try to fix debugging issues that
    253   appeared in NDK r7 (which switched to binutils 2.20.1).
    254 
    255 - Fixed ndk-build on 32-bit Linux. A packaging error put a 64-bit version
    256   of the 'awk' executable under prebuilt/linux-x86/bin in NDK r7.
    257 
    258 - Fixed native Windows build (ndk-build.cmd). Other build modes were not
    259   affected. The fixes include:
    260 
    261     * Removed an infinite loop / stack overflow bug that happened when trying
    262       to call ndk-build.cmd from a directory that was _not_ the top of your
    263       project path (e.g. any sub-directory of it).
    264 
    265     * Fixed a problem where the auto-generated dependency files were ignored.
    266       This meant that updating a header didn't trigger recompilation of sources
    267       that included it.
    268 
    269     * Fixed a problem where special characters in files or paths, other than
    270       spaces and quotes, were not correctly handled.
    271 
    272 - Fixed the standalone toolchain to generate proper binaries when using
    273   -lstdc++ (i.e. linking against the GNU libstdc++ C++ runtime). You should
    274   use -lgnustl_shared if you want to link against the shared library
    275   version or -lstdc++ for the static version.
    276 
    277   See docs/STANDALONE-TOOLCHAIN.html for more details about this fix.
    278 
    279 - Fixed gnustl_shared on Cygwin. The linker complained that it couldn't find
    280   libsupc++.a while the file was at the right location.
    281 
    282 - Fixed cygwin C++ link when not using any specific C++ runtime through
    283   APP_STL.
    284 
    285 OTHER CHANGES:
    286 
    287 - When your application uses the GNU libstdc++ runtime, the compiler will
    288   no longer forcibly enable exceptions and RTTI. This change results in smaller
    289   code. If you need these features, you need to do either one of these:
    290 
    291      1/ Enable exceptions and/or RTTI explicitely in your modules or
    292         Application.mk. (recommended)
    293 
    294      2/ Define APP_GNUSTL_FORCE_CPP_FEATURES to 'exceptions', 'rtti' or both
    295         in your Application.mk. See docs/APPLICATION-MK.html for more details.
    296 
    297 - ndk-gdb now works properly when your application has private services
    298   running in independent processes. It debugs the main application process,
    299   instead of the first process listed by 'ps', which is usually a service
    300   process.
    301 
    302 - Fixed a rare bug where NDK r7 would fail to honor the LOCAL_ARM_MODE value
    303   and always compile certain source files (but not all) to 32-bit instructions.
    304 
    305 - stlport: Refresh the sources to match the Android platform version. This
    306   update fixes a few minor bugs:
    307 
    308    - Fixed instantiation of an incomplete type.
    309    - Fixed minor == versus = typo
    310    - Use memmove instead of memcpy in string::assign
    311    - Added better handling of IsNANorINF, IsINF, IsNegNAN, etc..
    312 
    313   For complete details, see the commit log.
    314 
    315 - stlport: Removed 5 un-necessary static initializers from the library.
    316 
    317 - The GNU libstdc++ libraries for armeabi-v7a were mistakenly compiled for
    318   armeabi instead. This had no impact on correctness, but using the right
    319   ABI should provide for slightly better performance.
    320 
    321 - the 'cpu-features' helper library was updated to report three optional
    322   x86 CPU features (SSSE3, MOVBE and POPCNT). See docs/CPU-FEATURES.html
    323   for more details.
    324 
    325 - docs/NDK-BUILD.html was updated to mention NDK_APPLICATION_MK instead
    326   of NDK_APP_APPLICATION_MK to select a custom Application.mk file.
    327 
    328 - cygwin: ndk-build no longer creates an empty "NUL" file in the current
    329   directory when invoked.
    330 
    331 - cygwin: better automatic dependency detection. It previously didn't work
    332   properly in the following case:
    333 
    334     - When the cygwin drive prefix was not /cygdrive
    335     - When using drive-less mounts, e.g. when Cygwin would translate /home
    336       to \\server\subdir instead of C:\Some\Dir.
    337 
    338 - cygwin: ndk-build does not try to use the native Windows tools under
    339   $NDK/prebuilt/windows/bin with certain versions of Cygwin and/or
    340   GNU Make.
    341 
    342 -------------------------------------------------------------------------------
    343 android-ndk-r7
    344 
    345 IMPORTANT CHANGES:
    346 
    347 - New official NDK APIs for Android 4.0 (a.k.a. API level 14),
    348   which adds the following native features to the platform:
    349 
    350      - Native multimedia API based on the Khronos Group OpenMAX AL&#0153;
    351        1.0.1 Standard.  New headers &lt;OMXAL/OpenMAXAL.h&gt; and
    352        &lt;OMXAL/OpenMAXAL_Android.h&gt; are provided to allow
    353        applications targeting this API level to perform multimedia output
    354        directly from native code using a new Android-specific buffer
    355        queue interface.  For more details, see docs/openmaxal/index.html
    356        and http://www.khronos.org/openmax/.
    357 
    358      - Updated the native audio API based on the Khronos Group OpenSL ES
    359        1.0.1&#0153; Standard.  API Level 14 can now decode compressed
    360        audio (e.g. MP3, AAC, Vorbis) to PCM.  For more details, see
    361        docs/opensles/index.html and http://www.khronos.org/opensles/.
    362 
    363 - CCache support. To speed up large rebuilds, simply define the NDK_CCACHE
    364   environment variable to 'ccache' (or the path to your ccache binary), as in:
    365 
    366         export NDK_CCACHE=ccache
    367 
    368   The NDK build system will automatically use it when compiling any source
    369   file. For more information about CCache, see http://ccache.samba.org  
    370 
    371 - You can now set your APP_ABI to 'all' to indicate that you want to build
    372   your NDK modules for all the ABIs supported by your given NDK release.
    373 
    374   This means that either one of these two lines in your Application.mk are
    375   equivalent with this release:
    376 
    377         APP_ABI := all
    378         APP_ABI := armeabi armeabi-v7a x86
    379 
    380   This also works if you define APP_ABI on the command-line, as in:
    381 
    382         ndk-build APP_ABI=all
    383 
    384   Which is a quick way to check that your project builds for all supported
    385   ABIs without changing its Application.mk file.
    386 
    387 - Shorter paths to source and object files used in build commands.
    388   When invoking $NDK/ndk-build from your project path, the paths to the
    389   source, object and binary files passed to the build commands will be
    390   significantly shorter now because they are now passed relative to the
    391   current directory.
    392 
    393   This is useful when building projects with a lot of source files, to
    394   avoid limits on the maximum command line length supported by your host
    395   operating system.
    396 
    397   The behaviour is unchanged if you invoked ndk-build from a sub-directory
    398   of your project tree, or if you define NDK_PROJECT_PATH to point to a
    399   specific directory.
    400 
    401 - New LOCAL_CPP_FEATURES variable in Android.mk, used to declare which C++
    402   features (RTTI or Exceptions) your module uses. This is especially handy
    403   if you have prebuilt modules that depend on them since this will ensure
    404   the final link will work correctly.
    405 
    406   See docs/ANDROID-MK.html and docs/CPLUSPLUS-SUPPORT.html for more details
    407 
    408 - WARNING: VERY EXPERIMENTAL!!
    409 
    410      You can now build your NDK sources on Windows *without* Cygwin.
    411      Simply call the script 'ndk-build.cmd' from the Windows cmd.exe
    412      command-line, when in your project path.
    413 
    414      The script takes exactly the same arguments than the original
    415      ndk-build one.
    416 
    417      Note that the Windows NDK package comes with its own prebuilt
    418      binaries for GNU Make, Awk and other tools required by the build,
    419      i.e. you shouldn't need to install anything else to get a working
    420      build system.
    421 
    422      IMPORTANT: ndk-gdb doesn't work. You still need Cygwin to debug
    423                 at the moment!
    424 
    425      This feature is still very experimental, but feel free to try it
    426      and report issues on the public forum (android-ndk (a] googlegroups.com)
    427      or the public bug databse (http://b.android.com).
    428 
    429      Note that all samples and unit tests succesfully compile with it.
    430 
    431 IMPORTANT BUG FIXES:
    432 
    433 - Imported shared libraries are now installed by default to the target
    434   installation location (i.e. libs/%lt;abi%gt;) if APP_MODULES is not
    435   defined in your Application.mk.
    436 
    437   This means that if a top-level module "foo" imports a module "bar", then
    438   both libfoo.so and libbar.so will be copied to the install location.
    439 
    440   Previously, only libfoo.so was, unless you listed 'bar' in your APP_MODULES
    441   too.
    442 
    443   If you define APP_MODULES explicitely, the behaviour is unchanged.
    444 
    445 - Static library imports are now properly transitive. If top-level module
    446   'foo' imports static library 'bar' which imports static library 'zoo',
    447   the libfoo.so will now be linked against both libbar.a and libzoo.a.
    448 
    449 - ndk-gdb now works correctly for activities with multiple categories
    450   in their MAIN intent filters.
    451 
    452 OTHER CHANGES:
    453 
    454 - docs/STABLE-APIS.html: Added missing documentation listing EGL
    455   as a supported stable API, starting from API level 9.
    456 
    457 - Add a new C++ support runtime named "gabi++". More details about it
    458   are available in the updated docs/CPLUSPLUS-SUPPORT.html.
    459 
    460 - The STLport C++ runtimes now support RTTI (no exceptions yet though).
    461 
    462 - Add a new C++ support runtime named "gnustl_shared" corresponding to the
    463   shared library version of GNU libstdc++ v3 (GPLv3 license). See more
    464   info at docs/CPLUSPLUS-SUPPORT.html
    465 
    466 - You can now list several file extensions in LOCAL_CPP_EXTENSION. As in:
    467 
    468         LOCAL_CPP_EXTENSION := .cpp .cxx
    469 
    470   To compile both foo.cpp and bar.cxx as C++ sources.
    471 
    472 - Refreshed the EGL and OpenGLES Khronos headers to support more extensions.
    473   Note that this does *not* change the NDK ABIs for the corresponding
    474   libraries, since each extension must be probed at runtime by the client
    475   application.
    476 
    477   Which extensions are available depends on your actual device (and GPU
    478   drivers), not the version of the platform it provides.
    479 
    480   The header changes simply add new constants and types to make it easier
    481   to use the extensions why they have been probed with eglGetProcAddress() or
    482   glGetProcAddress(). Here is the list of newly supported extensions:
    483 
    484     GLES 1.x
    485     --------
    486     GL_OES_vertex_array_object
    487     GL_OES_EGL_image_external
    488     GL_APPLE_texture_2D_limited_npot
    489     GL_EXT_blend_minmax
    490     GL_EXT_discard_framebuffer
    491     GL_EXT_multi_draw_arrays
    492     GL_EXT_read_format_bgra
    493     GL_EXT_texture_filter_anisotropic
    494     GL_EXT_texture_format_BGRA8888
    495     GL_EXT_texture_lod_bias
    496     GL_IMG_read_format
    497     GL_IMG_texture_compression_pvrtc
    498     GL_IMG_texture_env_enhanced_fixed_function
    499     GL_IMG_user_clip_plane
    500     GL_IMG_multisampled_render_to_texture
    501     GL_NV_fence
    502     GL_QCOM_driver_control
    503     GL_QCOM_extended_get
    504     GL_QCOM_extended_get2
    505     GL_QCOM_perfmon_global_mode
    506     GL_QCOM_writeonly_rendering
    507     GL_QCOM_tiled_rendering
    508 
    509     GLES 2.0
    510     --------
    511     GL_OES_element_index_uint
    512     GL_OES_get_program_binary
    513     GL_OES_mapbuffer
    514     GL_OES_packed_depth_stencil
    515     GL_OES_texture_3D
    516     GL_OES_texture_float
    517     GL_OES_texture_float_linear
    518     GL_OES_texture_half_float_linear
    519     GL_OES_texture_npot
    520     GL_OES_vertex_array_object
    521     GL_OES_EGL_image_external
    522     GL_AMD_program_binary_Z400
    523     GL_EXT_blend_minmax
    524     GL_EXT_discard_framebuffer
    525     GL_EXT_multi_draw_arrays
    526     GL_EXT_read_format_bgra
    527     GL_EXT_texture_format_BGRA8888
    528     GL_EXT_texture_compression_dxt1
    529     GL_IMG_program_binary
    530     GL_IMG_read_format
    531     GL_IMG_shader_binary
    532     GL_IMG_texture_compression_pvrtc
    533     GL_IMG_multisampled_render_to_texture
    534     GL_NV_coverage_sample
    535     GL_NV_depth_nonlinear
    536     GL_QCOM_extended_get
    537     GL_QCOM_extended_get2
    538     GL_QCOM_writeonly_rendering
    539     GL_QCOM_tiled_rendering
    540 
    541     EGL:
    542     ----
    543     EGL_ANDROID_recordable
    544     EGL_NV_system_time
    545 
    546 - docs/NATIVE-ACTIVITY.HTML: Fixed typo, the minimum API level
    547   should be 9, not 8 for native activities.
    548 
    549 - removed many unwanted exported symbols from the link-time shared
    550   system libraries provided by the NDK. This ensures that code generated
    551   with the standalone toolchain doesn't risk to accidentally depend
    552   on a non-stable ABI symbol (e.g. any libgcc.a symbol that changes
    553   each time the toolchain used to build the platform is changed).
    554 
    555 - download-toolchain-sources.sh: Script was updated to download the toolchain
    556   sources from android.googlesource.com, the new location for AOSP servers.
    557 
    558 -------------------------------------------------------------------------------
    559 android-ndk-r6b
    560 
    561 This is a bug-fix release for NDK r6, no new features are provided.
    562 
    563 IMPORTANT BUG FIXES:
    564 
    565 - Fixed the multi-architecture build, i.e. when using APP_ABI="armeabi x86"
    566 
    567 - Fixed location of prebuilt STLport binaries in the NDK release package.
    568   (A bug in the packaging script placed them in the wrong location).
    569 
    570 - Fixed atexit() usage in shared libraries with the x86 standalone toolchain.
    571 
    572 - Fixed make-standalone-toolchain.sh --arch=x86 (it failed to copy the
    573   proper GNU libstdc++ binaries to the right location).
    574 
    575 - Fixed standalone toolchain linker warnings about missing definition and
    576   size for '__dso_handle' symbol (arm only).
    577 
    578 - Fixed the inclusion order of $(SYSROOT)/usr/include for x86 builds,
    579   see http://code.google.com/p/android/issues/detail?id=18540
    580 
    581 - Fixed the definitions of ptrdiff_t and size_t in x86-specific system
    582   when used with the x86 standalone toolchain.
    583 
    584 -------------------------------------------------------------------------------
    585 android-ndk-r6
    586 
    587 IMPORTANT CHANGES:
    588 
    589 - Official support for the x86 ABI.
    590 
    591   This release of the Android NDK now provides support for the 'x86' ABI.
    592   This allows you to generate machine code that runs on future x86-based
    593   Android devices.
    594 
    595   Note that by default, code is still generated for ARM-based devices.
    596   You can however add 'x86' to your APP_PLATFORM definition in your
    597   Application.mk. For example, the following line instructs ndk-build
    598   to build your code for three distinct ABIs:
    599 
    600     APP_ABI := armeabi armeabi-v7a x86
    601 
    602   Unless you rely on ARM-based assembly sources, you shouldn't need to touch
    603   your Android.mk files to build x86 machine code.
    604 
    605   For all details regarding x86 support, please read the new documentation
    606   file named docs/CPU-X86.html.
    607 
    608   Don't hesitate to file NDK bugs related to x86 at http://b.android.com
    609 
    610 - You can build a standalone x86 toolchain using the --toolchain=x86-4.4.3
    611   option when calling make-standalone-toolchain.sh. See
    612   docs/STANDALONE-TOOLCHAIN.html for more details.
    613 
    614 - The new 'ndk-stack' tool can be used to translate stack traces
    615   (as reported by adb logcat in case of crash in native code) into
    616   something more readable, i.e. containing function / source file /
    617   line number information corresponding to each stack frame.
    618 
    619   For more information and usage example, see the new documentation
    620   file docs/NDK-STACK.html
    621 
    622 OTHER FIXES &amp; CHANGES:
    623 
    624 - The arm-eabi-4.4.0, which had been deprecated since NDK r5, has been
    625   finally removed from the NDK distribution.
    626 
    627 - Support a project.properties file in the application's directory
    628   instead of default.properties. This is in preparation for future SDK Tools
    629   changes.
    630 
    631 -------------------------------------------------------------------------------
    632 android-ndk-r5c
    633 
    634 This release fixes a few bugs in r5b. There are no new features.
    635 
    636 IMPORTANT BUG FIXES:
    637 
    638 - Fixed a typo that prevented LOCAL_WHOLE_STATIC_LIBRARIES to work correctly
    639   with the new toolchain. Also properly document this variable in
    640   docs/ANDROID-MK.html.
    641 
    642 - Fixed a bug where code linked against gnustl_static would crash when run
    643   on Android platform releases older than 2.2.
    644 
    645 - &lt;android/input.h&gt;: Two functions in this header file, introduced
    646   by API level 9 (a.k.a. 2.3) were incorrect and have been fixed. While
    647   this breaks the source API, the binary interface to the system is
    648   unchanged.
    649 
    650   The functions missing a third 'history_index' parameter. They correct
    651   definition is now:
    652 
    653       float AMotionEvent_getHistoricalRawX(const AInputEvent* motion_event,
    654                                            size_t pointer_index,
    655                                            size_t history_index);
    656 
    657       float AMotionEvent_getHistoricalRawY(const AInputEvent* motion_event,
    658                                            size_t pointer_index,
    659                                            size_t history_index);
    660 
    661 - Updated the android-9 C library arm binary to correctly expose at link time
    662   new functions that were added to it in Gingerbread (e.g. pthread_rwlock_init).
    663 
    664 - Fixed a bug that made gdbserver crash on misc. Honeycomb devices (e.g.
    665   the Motorola Xoom).
    666 
    667 OTHER FIXES &amp; CHANGES:
    668 
    669 - Object files are now always linked in the order they appear in
    670   LOCAL_SRC_FILES. This was not the case previously because the files
    671   were grouped by source extensions instead.
    672 
    673 - download-toolchain-sources.sh: Fixed a silly bug that prevented the
    674   --git-date option to work properly when downloading the master branch.
    675 
    676 - Fix an issue where a module could import itself, resulting in an infinite
    677   loop in GNU Make.
    678 
    679 - When import-module fails, it now prints the list of directories
    680   that were searched. This is useful to check that the NDK_MODULE_PATH
    681   definition used by the build system is correct.
    682 
    683 - When import-module succeeds, it now prints the directory where the module
    684   was found to the log (visible with NDK_LOG=1).
    685 
    686 - &lt;pthread.h&gt;: Fixed the definition of PTHREAD_RWLOCK_INITIALIZER for
    687   android-9 API level and higher.
    688 
    689 - Fixed a bug where LOCAL_ARM_NEON was defined to true would make the build
    690   fail (typo in build/core/build-binary.mk)
    691 
    692 - Fixed a bug that prevented the compilation of .s assembly files
    693   (.S files were ok).
    694 
    695 - Speed-up the build of debuggable applications when there is a very
    696   large number of include directories in a project.
    697 
    698 - ndk-gdb: Better detection of 'adb shell' failures (improves error messages).
    699 
    700 - ndk-build: Fix a rare bug that appeared when trying to perform parallel
    701   builds of debuggable projects.
    702 
    703 
    704 -------------------------------------------------------------------------------
    705 android-ndk-r5b
    706 
    707 This release fixes a few bugs in r5. There are no new features.
    708 
    709 IMPORTANT BUG FIXES:
    710 
    711 - Fix a compiler bug in the arm-linux-androideabi-4.4.3 toolchain.
    712   The previous binary generated invalid thumb instruction sequences when
    713   dealing with signed chars. This problem was first reported on the
    714   android-ndk forum and fixed by the following change in the toolchain
    715   sources:
    716 
    717         https://review.source.android.com/#change,19474
    718 
    719 - docs/CPLUSPLUS-SUPPORT.html: Add missing documentation for the
    720   "gnustl_static" value for APP_STL, that allows you to link against
    721   a static library version of GNU libstdc++.
    722 
    723 - ndk-build: Fix a bug that created inconsistent dependency files when a
    724   compilation error occured on Windows, preventing building properly after
    725   the error was fixed in the source code.
    726 
    727 - ndk-build: Fix a Cygwin-specific bug where using very short paths for
    728   the Android NDK installation or the project path could lead to the
    729   generation of invalid dependency files, making incremental builds
    730   impossible.
    731 
    732 - Fix a typo that prevented the cpufeatures library to work correctly
    733   with the new NDK toolchain.
    734 
    735 - Linux toolchain binaries now run on Ubuntu 8.04 or higher.
    736   More specifically, the r5 binaries did require GLibc 2.11 on the host
    737   system, and refused to run with previous releases due to an ABI mismatch
    738   in the GNU C Library. The r5b binaries are generated with a special
    739   toolchain that instead targets GLibc 2.7 or higher.
    740 
    741 - GNU libstdc++ will not crash anymore when printing floating-point values
    742   through i/o streams.
    743 
    744 OTHER FIXES &amp; CHANGES:
    745 
    746 - ndk-build: Speed-up the Cygwin build by avoiding calling "cygpath -m"
    747   from GNU Make for each and every source or object file. This was a problem
    748   for users with very large source trees.
    749 
    750   In case this doesn't work properly, define NDK_USE_CYGPATH=1 in your
    751   environment to use 'cygpath -m' as usual.
    752 
    753   Also, if 'cygpath' is not in your path, completely ignore it
    754   (seems to be enough to run the NDK under MSys).
    755 
    756 - ndk-build: Handle installation paths containing spaces when checking
    757   cygwin installation. Before that, the script complained that the user
    758   was using an incorrect version of GNU Make (even if he had the right one).
    759 
    760 - Fixed a typo that prevented several NDK_MODULE_PATH to work properly when
    761   it contained multiple directories separated with ":"
    762 
    763 - prebuilt-common.sh: Make the script check the compiler directly for 64-bit
    764   generated machine code, instead of relying on the host tag. That should
    765   allow the 32-bit toolchain to rebuild properly on Snow Leopard.
    766 
    767 - prebuilt-common.sh: Fix the toolchain rebuild scripts to work when
    768   using a 32-bit host toolchain.
    769 
    770 - &lt;netinet/in.h&gt;: Add missing declaration for INET_ADDRSTRLEN
    771 - &lt;netinet/in6.h&gt;: Add missing declaration for IN6_IS_ADDR_MC_NODELOCAL
    772   and IN6_IS_ADDR_MC_GLOBAL.
    773 
    774 - &lt;asm/byteorder.&gt;: Replaced 'asm' with '__asm__' to allow compilation
    775   with -std=c99. See https://review.source.android.com/#change,20076
    776 
    777 - standalone toolchain: The -fpic flag is now the default for the
    778   arm-linux-androideabi toolchain, instead of -fPIC. This avoids a performance
    779   degradation when compared to the old android-eabi configuration.
    780 
    781   This only affects users of the standalone toolchain. The NDK build script
    782   always enforced -fpic implicitely.
    783 
    784 -------------------------------------------------------------------------------
    785 android-ndk-r5
    786 
    787 IMPORTANT BUG FIXES:
    788 
    789 - Allow dlclose() to properly call static C++ destructors when unloading
    790   a shared library. This requires changes in both the C library and the
    791   build system. IMPORTANT: This feature is only available for API level 9.
    792 
    793 - Fix packaging error for system libraries of level 5 and 8. The libraries
    794   bundled with the NDK and used at link time were not the correct version,
    795   and this prevented linking against certain symbols appropriately.
    796 
    797 - ndk-gdb: do not start activity unless --start or --launch is used.
    798   (the documentation was correct, the implementation wrong)
    799 
    800 - The system headers for all API levels have been cleaned up and will
    801   not provide the declarations of functions that are not available in
    802   the corresponding system libraries.
    803 
    804 IMPORTANT CHANGES:
    805 
    806 - Support for API level 9, (a.k.a. Android 2.3) which adds the following
    807   native features to the platform:
    808 
    809      - Native audio API based on the Khronos Group OpenSL ES&#0153; 1.0.1 Standard.
    810        New headers &lt;SLES/OpenSLES.h&gt; and &lt;SLES/OpenSLES_Android.h&gt;
    811        are provided to allow applications targeting this API level to perform
    812        audio input, output and processing directly from native code.
    813 
    814      - Native activity support, i.e. the ability to build applications that
    815        are coded entirely in C or C++. More precisely, such applications still
    816        run inside a VM, and will have to access most of the platform's features
    817        using JNI (i.e. native code calling VM methods). However, this also
    818        comes with a series of headers and libraries to implement the following
    819        directly from native code:
    820 
    821           - activity lifecycle management.
    822           - user input handling (touch, keyboard, trackball, ...).
    823           - window management (including accessing the pixel buffer).
    824           - sensor listeners (e.g. accelerometer, compass, ...).
    825           - hardware configuration management.
    826           - easily reading assets out of an APK from native code.
    827           - access to the storage manager, a new feature of Android X.X
    828             that allows one to provide Opaque Binary Objects containing
    829             large amounts of data outside of the APK.
    830 
    831        See the documentation in docs/STABLE-APIS.html for more details.
    832 
    833        Note that most of these new features are targeted at game developers.
    834 
    835 - Improved gdbserver binary to allow debugging _threaded_ programs properly
    836   with ndk-gdb (the previous binary could only set breakpoints on the main
    837   thread).
    838 
    839   IMPORTANT: THIS ONLY WORKS IF YOU RUN ON ANDROID 2.3 OR HIGHER.
    840 
    841   The root cause of the problem is a platform bug that was only fixed in
    842   2.3. If you try to debug on a previous platform, the gdbserver binary
    843   will only be able to set breakpoints on the main thread.
    844 
    845   For more information, see the specific section in docs/NDK-GDB.html.
    846 
    847 - Easier debuggable builds: just invoke ndk-build while defining the
    848   NDK_DEBUG variable to 1, as in:
    849 
    850       $NDK/ndk-build NDK_DEBUG=1
    851 
    852   This will have the same result that setting the android:debuggable="true"
    853   in the &lt;application&gt; element of your AndroidManifest.xml file. See the
    854   file docs/NDK-BUILD.html for more details.
    855 
    856   Note that you will need to use the SDKr8 build tools to use this feature
    857   properly!
    858 
    859 - Refresh of system C++ headers:
    860 
    861      - Headers have been moved out of the platform directory hierarchy.
    862        This is to prevent conflicts with other STLs like STLport or the
    863        GNU libstdc++ which provide their own version of the headers, but
    864        does not affect your builds.
    865 
    866      - The list of headers has grown to include the following:
    867 
    868             cassert, cctype, cerrno, cfloat, climits, cmath,
    869             csetjmp, csignal, cstddef, cstdint, cstdio, cstdlib,
    870             cstring, ctime, cwchar, new, typeinfo, utility
    871 
    872     Note that they still correspond to our minimal C++ runtime, no new feature
    873     was introduced here.
    874 
    875 - Support for C++ exceptions and RTTI. See docs/CPLUSPLUS-SUPPORT.html for
    876   all details (and limitations).
    877 
    878 - STLport implementation: Add sources and prebuilt binaries for a port of
    879   the STLport C++ Standard Library (www.stlport.org), and an easy way to use
    880   it at build time by defining APP_STL in your Application.mk. See
    881   docs/APPLICATION-MK.html and docs/CPLUSPLUS-SUPPORT.html for all details.
    882 
    883 - GNU libstdc++ implementation: Available as a static library that you can
    884   select for your application through APP_STL. See docs/CPLUSPLUS-SUPPORT.html
    885   for all details.
    886 
    887 - Add support for prebuilt libraries with the PREBUILT_SHARED_LIBRARY and
    888   PREBUILT_STATIC_LIBRARIES build scripts. See the new documentation
    889   file named docs/PREBUILTS.html for explanations and usage examples.
    890 
    891 - Support for module exports: A module can now define a set of compiler or
    892   linker flags that will be automatically 'imported' by any other module that
    893   depends on it, through LOCAL_STATIC_LIBRARIES or LOCAL_SHARED_LIBRARIES.
    894 
    895   This is achieved with the help of new Android.mk variables named
    896   LOCAL_EXPORT_CFLAGS, LOCAL_EXPORT_CPPFLAGS, LOCAL_EXPORT_C_INCLUDES and
    897   LOCAL_EXPORT_LDLIBS. See docs/ANDROID-MK.html for mode documentation, and
    898   a 'samples/module-exports' for a sample project that uses this.
    899 
    900 - Add support to specify a different file name for generated files, through
    901   the new LOCAL_MODULE_FILENAME variable. See docs/ANDROID-MK.html for an
    902   example.
    903 
    904 - Add support for module imports, through the NDK_MODULE_PATH environment
    905   variable and the new 'import-module' function. This allows you to avoid
    906   hard-coding the path of third-party modules into your project files.
    907 
    908   See docs/IMPORT-MODULE.html for details.
    909 
    910 - Add the content of LOCAL_C_INCLUDES to gdb.setup to make native debugging
    911   easier. Also fixes an issue that prevented clean parallel builds of
    912   debuggable applications to work correctly. This fixes an error message that
    913   said:
    914 
    915       /bin/sh: &lt;project&gt;/libs/armeabi/gdb.setup: No such file or directory
    916 
    917   When doing a "ndk-build -j&lt;number&gt;", with &lt;number&gt; bigger than 1.
    918 
    919 - Add support for assembly-level source filtering. See the description of
    920   LOCAL_FILTER_ASM in docs/ANDROID-MK.html for more details. This can be useful
    921   for certain kinds of obfuscation tasks.
    922 
    923 - This NDK comes with a new toolchain (named arm-linux-androideabi-4.4.3)
    924   which provides many benefits, including:
    925 
    926      - Better code generation than the previous one (gcc-4.4.0)
    927      - On Windows, the binaries do not depend on Cygwin anymore.
    928      - The ability to use it as a stand-alone cross-compiler
    929        (see docs/STANDALONE-TOOLCHAIN.html for all details).
    930 
    931   The binaries for gcc-4.4.0 are still provided for backwards compatibility.
    932   Use NDK_TOOLCHAIN=arm-eabi-4.4.0 in your environment to force its usage.
    933   Note that it is now deprecated and will be removed in a future NDK release.
    934 
    935   IMPORTANT: The old toolchain doesn't properly support exceptions, RTTI,
    936              STLport and GNU libstdc++.
    937 
    938   The binaries for the already-deprecated gcc-4.2.1 have been removed.
    939 
    940 - The 'cpufeatures' library has been updated to provide better architecture
    941   and features detection (including a work-around for buggy ARMv6 kernels
    942   which report an architecture version of 7).
    943 
    944   The library is now also available as an import module, to simplify its
    945   usage in your build scripts. See the updated docs/CPU-FEATURES.html file
    946   for details.
    947 
    948   NOTE: Please update your Android.mk to use module imports as soon as
    949         possible. The location $NDK/source/cpufeatures/ is deprecated
    950         and will be removed in a future NDK release. Avoid referencing
    951         it directly in your build scritps!
    952 
    953 OTHER FIXES AND CHANGES:
    954 
    955 - Reduced the size of generated binaries by using --strip-unneeded
    956   instead of --strip-debug. This gets rid of mor symbol table entries
    957   in release shared libraries and executables, without impacting
    958   runtime execution.
    959 
    960 - Fix bad automatic dependency tracking when using multiple source
    961   sub-directories.
    962 
    963 - The path to system headers is now included last in the compilation command
    964   line. This prevents conflicts with source code that define their own headers
    965   with similar names (e.g. a custom "err.h" was ignored, because the system
    966   &lt;err.h&gt; was used instead).
    967 
    968 - Update documentation for 'my-dir' function to explain that, due to the
    969   way GNU Make works, it really returns the path of the last included
    970   Makefile (instead of the current one). Also provide examples on how
    971   to deal with it.
    972 
    973 - make-release.sh: Now has an --out-dir=&lt;path&gt; option to specify the
    974   output directory where the packages are going to be copied. Also
    975   ensure that generated packages have go+r permissions.
    976 
    977 - ndk-build will now properly escape arguments. This means that something
    978   like this:
    979 
    980      ndk-build  MY_CFLAGS="-DFOO -DBAR"
    981 
    982   will now work correctly.
    983 
    984 - Add --git-http option to download-toolchain-sources.sh and
    985   rebuild-all-prebuilt.sh in order to download sources from
    986   android.git.kernel.org through HTTP.
    987 
    988 - ndk-gdb: properly launch activities for which name does not contain any dot.
    989 
    990 - ndk-gdb: add --delay=&lt;timeout&gt; option to specify a delay in seconds
    991   between activity launch and gdbserver attach. This is needed because certain
    992   activities can take a long time to properly launch. The default delay is
    993   also increased to 2 seconds (instead of 1).
    994 
    995 - build/tools/build-gcc.sh: copy the sysroot to the build directory. This
    996   avoids the generated toolchain binaries from hard-coding host build paths.
    997 
    998 - Platform files are now under $NDK/platforms instead of $NDK/build/platforms
    999 
   1000 - Toolchain files are now under $NDK/toolchains instead of
   1001   $NDK/build/toolchains and $NDK/build/prebuilt.
   1002 
   1003 - Release and debug objects are stored under two different directories now
   1004   (i.e. obj/local/&lt;abi&gt;/objs and obj/local/&lt;abi&gt;/objs-debug). This
   1005   prevents rebuilding *everything* when you switch between these two modes,
   1006   which can be a real time-saver for complex projects.
   1007 
   1008 - Fixed a bug that duplicated the LOCAL_LDFLAGS in the final link command
   1009   when LOCAL_ALLOW_UNDEFINED_SYMBOLS was not set to 'true'
   1010 
   1011 -------------------------------------------------------------------------------
   1012 android-ndk-r4b
   1013 
   1014 This release fixes a few bugs in r4 scripts. There are no new features.
   1015 
   1016 OTHER FIXES &amp; CHANGES:
   1017 
   1018 - build/tools/rebuild-all-prebuilt.sh: mktemp expects 'XXXXXX' instead of 'XXX'.
   1019   Fix the script (and others in the same directory) to do that properly.
   1020 
   1021 - ndk-gdb: check the target device's API level, and dump an error message if
   1022   it is not at least 8 (Android 2.2 a.k.a. Froyo). Fix script to properly
   1023   remove control characters like '\r' from adb shell's output. Also fix
   1024   script to work properly with OS X's BSD awk.
   1025 
   1026 - ndk-build: Make AndroidManifest.xml optional. Now the build scripts will try
   1027   to look for jni/Android.mk if no manifest is found. If you don't use this,
   1028   you can also define NDK_PROJECT_PATH to point to your tree.
   1029 
   1030   Also, on Windows, check that a Cygwin-compatible make executable is being
   1031   used, and dump a readable help message to solve the issue if this is not
   1032   the case.
   1033 
   1034 - Place generated binaries under $PROJECT_PATH/obj/ instead of
   1035   $PROJECT_PATH/bin/ndk/. The 'bin' directory is sometimes cleaned
   1036   by the JDT, resulting in the inability to properly load symbol versions
   1037   of the shared libraries when running ndk-gdb.
   1038 
   1039 - Warn when sources with unsupported extensions are used in LOCAL_SRC_FILES.
   1040   Previous behaviour was to silently ignore them.
   1041 
   1042 - Set the optimization mode to 'debug' automatically if the manifest sets
   1043   android:debuggable to 'true'. You can override this by using
   1044   'APP_OPTIM := release' in your Application.mk, or by adding '-O2' to
   1045   your LOCAL_CFLAGS.
   1046 
   1047   Note that even in release mode, the NDK build scripts will produce
   1048   binaries with symbols under obj/local/&lt;abi&gt;/ that will be used for
   1049   debugging with gdb. However, the debugger will have a harder time to
   1050   print proper local variable values that have been optimized out or
   1051   even set breakpoints properly.
   1052 
   1053 -------------------------------------------------------------------------------
   1054 android-ndk-r4
   1055 
   1056 IMPORTANT BUG FIXES:
   1057 
   1058 - The &lt;fenv.h&gt; header was not placed in the correct location and could not
   1059   be found by normal builds.
   1060 
   1061 IMPORTANT CHANGES:
   1062 
   1063 - On Windows, Cygwin 1.7 or higher is now required. The NDK will not
   1064   work properly with Cygwin 1.5 which is now officially obsolete
   1065   anyway.
   1066 
   1067 - Simplified build system: You no longer need to run build/host-setup.sh
   1068   or modify anything under $NDK_ROOT/apps/. Instead, just invoke the
   1069   new 'ndk-build' script from your application's project directory, or
   1070   one of its sub-directories.
   1071 
   1072   See docs/OVERVIEW.html and docs/NDK-BUILD.html for more details.
   1073 
   1074   NOTE: For compatibility purpose, you can still define projects
   1075         through $NDK_ROOT/apps/&lt;name&gt; though.
   1076 
   1077         However, not that sample applications have moved from
   1078         'apps/&lt;name&gt;/project' to 'samples/&lt;name&gt;' and now must
   1079         be built with 'ndk-build'. The source code of pre-existing
   1080         samples didn't change though.
   1081 
   1082 - Easy native debugging support when running debuggable applications
   1083   on Android 2.2 or higher, through the new 'ndk-gdb' helper script.
   1084   See docs/NDK-GDB.html for details.
   1085 
   1086 - Support for hardware FPU. This is through the new 'armeabi-v7a' ABI
   1087   corresponding to ARMv7-a class devices.
   1088 
   1089   Note that by default, the NDK will still generate machine code for the old
   1090   'armeabi' ABI (ARMv5TE based) which is supported by all official Android
   1091   system images to date.
   1092 
   1093   You will need to define APP_ABI in your Application.mk file to change this.
   1094   See docs/APPLICATION-MK.html
   1095 
   1096   More details about ABIs is now available in docs/CPU-ARCH-ABIS.html
   1097 
   1098 - A small static library named 'cpufeatures' is provided with source code
   1099   and can be used at runtime to determine the CPU features supported by the
   1100   target device. It should run on all Android platforms, starting from 1.5.
   1101 
   1102   For more information, see docs/CPU-FEATURES.html
   1103 
   1104 - Support for the optional ARM Advanced SIMD (a.k.a. NEON) instruction set
   1105   extension through the use the LOCAL_ARM_NEON variable in Android.mk, or
   1106   the '.neon' suffix when listing source files.
   1107 
   1108   Neon is an *optional* instruction set extension, and not all Android ARMv7
   1109   devices will support it. You will need to use the 'cpufeatures' library to
   1110   determine if such code can be used at runtime, and provide alternate code
   1111   paths if this is not the case. This is similar to MMX/SSE/3DNow on x86
   1112   platforms.
   1113 
   1114   For more information, see docs/CPU-ARM-NEON.html
   1115 
   1116 - Added a new sample (hello-neon) to demonstrate usage of 'cpufeatures'
   1117   and NEON intrinsics and build support.
   1118 
   1119 - Added &lt;android/bitmap.h&gt;, a new stable API available from android-8
   1120   (a.k.a. Android 2.2) to reliably access the pixel buffer of an
   1121   android.graphics.Bitmap object from native code. See docs/STABLE-API.html
   1122   and the new sample program under 'samples/bitmap-plasma' for details
   1123   and usage example.
   1124 
   1125 - Support the NX (No Execute) security feature, where special sections
   1126   are added to the generated shared libraries to instruct the kernel
   1127   that code shall not be executed from the heap and stack by default.
   1128 
   1129   See docs/ANDROID-MK.html to see how to disable this, plus reference
   1130   links for more information.
   1131 
   1132 OTHER FIXES AND CHANGES:
   1133 
   1134 - support the .s extension for raw assembly sources (.S is already supported
   1135   but the input files are parsed by the C-preprocessor before being sent to
   1136   the assembler).
   1137 
   1138 - build/host-setup.sh has been removed. There is no need for a 'setup' step
   1139   when using the NDK for the first time. All host-specific autodetection and
   1140   basic tool sanity checking have been moved to the build scripts themselves.
   1141 
   1142 - APP_MODULES in Application.mk is now optional. If not defined, the NDK
   1143   will simply build _all_ the modules that are declared from your Android.mk.
   1144 
   1145   You can still use APP_MODULES to restrict the set of modules you want to
   1146   build. Note that the NDK now computes the transitive dependencies of these
   1147   modules for you now. See docs/APPLICATION-MK.html for details.
   1148 
   1149 - docs/STABLE-APIS.html: Add missing section for Dynamic Linker Library
   1150   (libdl.so). It is actually supported by all API levels.
   1151 
   1152 - build/tools/download-toolchain-sources.sh: Use 'master' branch by default
   1153   instead of the 'eclair' one.
   1154 
   1155 - build-toolchain.sh: Allow ad-hoc patching of toolchain sources when rebuilding
   1156   them. This is primarily to ease development. All you need to do is put a patch
   1157   under build/tools/toolchain-patches/&lt;foo&gt;/&lt;name&gt;.patch, and it will be applied
   1158   with 'patch -p1' into the &lt;foo&gt; directory of the unpacked toolchain sources
   1159   before the configure step.
   1160 
   1161 - docs/CPU-ARCH-ABIS.html: Mention the experimental 'x86' ABI.
   1162 
   1163 - build/core/mkdeps.sh: Removed obsolete script.
   1164 
   1165 - the NDK build script now only parses the Application.mk and Android.mk of
   1166   the applications listed by APP. The error messages when APP is empty or
   1167   malformed have also been improved.
   1168 
   1169 - removed the annoying 'the mangling of 'va_list' has changed in GCC 4.4'
   1170   warning when building with GCC 4.4.0 for ARM.
   1171 
   1172 - C Library header fixes:
   1173 
   1174     For all platforms:
   1175 
   1176         - &lt;arpa/inet.h&gt;: no longer includes &lt;netinet/in6.h&gt;.
   1177         - &lt;ctype.h&gt;: better inlining with -ansi option.
   1178         - &lt;mntent.h&gt;: add missing include for &lt;stdio.h&gt;.
   1179         - &lt;netinet/in.h&gt;: include &lt;netinet/in6.h&gt; and define in6addr_any +
   1180           in6addr_loopback.
   1181         - &lt;netinet/in6.h&gt;: add IPV6_JOIN_GROUP, IPV6_LEAVE_GROUP,
   1182           IN6ADDR_ANY_INIT, ipv6mr_interface.
   1183         - &lt;sys/epoll.h&gt;: add missing C++ inclusion guards.
   1184         - &lt;sys/resource.h&gt;: add missing rlim_t declaration.
   1185         - &lt;sys/system_properties.h&gt;: add missing C++ inclusion guards.
   1186         - &lt;time64.h&gt;: add missing C++ inclusion guards.
   1187         - &lt;netdb.h&gt;: move h_errno declaration inside C++ inclusion guards.
   1188 
   1189 - C Library changes:
   1190 
   1191     For android-8 (a.k.a. Android 2.2):
   1192 
   1193         - &lt;dlfcn.h&gt;: add DL_info and dladdr().
   1194         - &lt;err.h&gt;: add err(), warn() and other variants.
   1195         - &lt;regex.h&gt;, &lt;fts.h&gt;, &lt;sys/queue.h&gt;: added
   1196         - &lt;pthread.h&gt;: add pthread_condattr_t
   1197         - &lt;sched.h&gt;: added proper clone() declaration (and implementation).
   1198         - &lt;signal.h&gt;: added killpg().
   1199         - &lt;stdio.h&gt;: add fdprintf() and vfdprintf().
   1200         - &lt;stdlib.h&gt;: fix ptsname_r() signature in declaration. previous
   1201           implementation was broken anyway.
   1202         - &lt;unistd.h&gt;: add getusershell(), setusershell(), endusershell(),
   1203           ttyname(), ttyname_r(), TEMP_FAILURE_RETRY. Fix usleep() signature
   1204           (now returns int).
   1205         - &lt;wchar.h&gt;: add fake mbstowcs() and wcstombs().
   1206 
   1207   More details available under docs/system/libc/CHANGES.html
   1208 
   1209 -------------------------------------------------------------------------------
   1210 android-ndk-r3
   1211 
   1212 IMPORTANT BUG FIXES:
   1213 
   1214 - Fix build/host-setup.sh to execute as a Bourne shell script (again)
   1215 
   1216 - Make target shared libraries portable to systems that don't use the exact
   1217   same toolchain. This is needed due to differences in libgcc.a implementations
   1218   between gcc 4.2.1 and 4.4.0. This change ensures that generated machine
   1219   code doesn't depend on helper functions provided by the Android platform
   1220   runtime.
   1221 
   1222 
   1223 IMPORTANT CHANGES:
   1224 
   1225 - GCC 4.4.0 is now used by default by the NDK. It generates better code than
   1226   GCC 4.2.1, which was used in previous releases. However, the compiler's C++
   1227   frontend is also a lot more pedantic regarding certain template constructs
   1228   and will even refuse to build some of them.
   1229 
   1230   For this reason, the NDK also comes with GCC 4.2.1 prebuilt binaries, and
   1231   you can force its usage by defining NDK_TOOLCHAIN in your environment to
   1232   the value 'arm-eabi-4.2.1'. For example:
   1233 
   1234         export NDK_TOOLCHAIN=arm-eabi-4.2.1
   1235         make APP=hello-jni
   1236 
   1237   Note that only the 'armeabi' ABI is supported by the 4.2.1 toolchain. We
   1238   recommend switching to 4.2.1 *only* if you encounter compilation problems
   1239   with 4.4.0.
   1240 
   1241   The 4.2.1 prebuilt binaries will probably be removed from a future release
   1242   of the Android NDK, we thus *strongly* invite you to fix your code if such
   1243   problems happen.
   1244 
   1245 - Support for OpenGL ES 2.0. This is through the new 'android-5' platform to
   1246   reflect Android 2.0 (previously the Eclair branch). This is merely a copy
   1247   of android-4 that also includes headers and libraries for OpenGL ES 2.0.
   1248 
   1249   See the sample named "hello-gl2" for a *very* basic demonstration. Note that
   1250   OpenGL ES 2.0 is currently *not* available from Java, and must be used
   1251   through native code exclusively.
   1252 
   1253   IMPORTANT: OpenGL ES 2.0 is not supported in the Android emulator at this
   1254              time. Running/testing any native code that depends on it thus
   1255              requires a real device.
   1256 
   1257 - The NDK build script will now remove installed binaries from the application
   1258   project's path before starting the build. This ensures that:
   1259 
   1260   - if the build fails for some reason, a stale/obsolete file is not left in
   1261     your application project tree by mistake.
   1262 
   1263   - if you change the target ABI, a stale/obsolete file is not left into the
   1264     folder corresponding to the old ABI.
   1265 
   1266 
   1267 - Updated the STABLE-APIS.html document to clarify the OpenGL ES 1.0/1.1/2.0
   1268   issues regarding specific devices (i.e. 1.0 supported everywhere, 1.1 and
   1269   2.0 on specific devices only, need for &lt;uses-feature&gt; tag in manifest).
   1270 
   1271 
   1272 OTHER FIXES AND CHANGES:
   1273 
   1274 - Actually use the awk version detected by host-setup.sh during the build.
   1275 
   1276 - Only allow undefined symbols when LOCAL_ALLOW_UNDEFINED_SYMBOLS is set
   1277   to 'true', just like the documentation says it works. Also fix a typo
   1278   in CLEAR_VARS that prevented this variable from being cleared properly.
   1279 
   1280 - Simplified build/tools/make-release.sh, the --prebuilt-dir option is
   1281   gone, and --help will dump a clearer description of expected options
   1282   and input files.
   1283 
   1284 - Added --prebuilt-ndk=FILE option to build/tools/make-release.sh script to
   1285   package a new experimental NDK package archive from the current source tree
   1286   plus the toolchain binaries of an existing NDK release package. E.g.:
   1287 
   1288     build/tools/make-release.sh \
   1289        --prebuilt-ndk=/path/to/android-ndk-1.6_r1-linux-x86.zip
   1290 
   1291   will generate a new NDK package in /tmp/ndk-release that contains the most
   1292   up-to-date build scripts, plus the toolchain binaries from 1.6_r1 (which
   1293   are not in the git repository).
   1294 
   1295   Also added the --no-git option to collect all sources from the current
   1296   NDK root directory, instead of the list given by 'git ls-files'. This can
   1297   be useful if you don't want to checkout the whole 'platform/development'
   1298   project from repo and still work on the NDK.
   1299 
   1300   This change is to help people easily package experimental NDK releases to
   1301   test and distribute fixes and improvements.
   1302 
   1303 - Remove bash-isms from build/tools/build-toolchain.sh. Now it's possible to
   1304   build it with the 'dash' shell on Debian-based systems (tested on Ubuntu 8.04)
   1305 
   1306 - Remove bash-ism from build/tools/build-ndk-sysroot.sh
   1307 
   1308 - Refresh C library headers for all platforms:
   1309 
   1310     - make &lt;endian.h&gt; simply include &lt;sys/endian.h&gt;
   1311     - make &lt;stdint.h&gt; properly declare 64-bit integer types with a C99 compiler
   1312     - add missing &lt;sys/types.h&gt; to &lt;strings.h&gt;
   1313     - add GLibc-compatible macro aliases (st_atimensec, st_mtimensec and
   1314       st_ctimensec) to &lt;stat.h&gt;
   1315     - add missing declaration for tzset() in &lt;time.h&gt;
   1316 
   1317 - Added build/tools/download-toolchain-sources.sh, a script that allows you
   1318   to download the toolchain sources from the official open-source repository
   1319   at android.git.kernel.org and nicely package them into a tarball that can
   1320   later be used by build/tools/build-toolchain.sh to rebuild the prebuilt
   1321   binaries for your system.
   1322 
   1323 - Updated build/tools/build-toolchain.sh to support the tarballs generated
   1324   by download-toolchain-sources.sh with the --package=&lt;file&gt; option. This
   1325   also builds both gcc 4.2.1 and 4.4.0, adding support for armeabi-v7a to
   1326   gcc 4.4.0.
   1327 
   1328 -------------------------------------------------------------------------------
   1329 android-ndk-1.6_r1
   1330 
   1331 IMPORTANT BUG FIXES:
   1332 
   1333 - Fix build/host-setup.sh to:
   1334   * execute as a Bourne shell script
   1335   * remove unused host gcc dependency
   1336   * improve Windows host auto-detection
   1337   * add GNU Make version check
   1338   * add Nawk/Gawk check
   1339   * ensure that the script is run from $NDKROOT as build/host-setup.sh
   1340   * add --help, --verbose, --no-awk-check and --no-make-check options
   1341 
   1342 - Properly add sysroot library search path at build time. This makes a line
   1343   in Android.mk like:
   1344 
   1345      LOCAL_LDLIBS := -lz
   1346 
   1347   Actually work correctly, instead of having the linker complaining that it
   1348   could not find the corresponding libz.so library. Also clear LOCAL_LDLIBS
   1349   in $(CLEAR_VARS) script.
   1350 
   1351 
   1352 IMPORTANT CHANGES:
   1353 
   1354 - The 'sources' directory is gone. The NDK build system now looks for
   1355   $(APP_PROJECT_PATH)/jni/Android.mk by default. You can override this with
   1356   the new APP_BUILD_SCRIPT variable in Application.mk
   1357 
   1358   For example, the 'hello-jni' sample uses the following files:
   1359 
   1360     apps/hello-jni/project/jni/Android.mk
   1361     apps/hello-jni/project/jni/hello-jni.c
   1362 
   1363   The 'apps/&lt;name&gt;' directory is still needed in this release though.
   1364 
   1365 - Change LOCAL_CFLAGS / LOCAL_CPPFLAGS to work as in the full Android build
   1366   system. This means that:
   1367 
   1368     - LOCAL_CFLAGS   is now used for *both* C and C++ sources  (was only for C)
   1369     - LOCAL_CPPFLAGS is now used for C++ sources only (was for both C and C++)
   1370     - LOCAL_CXXFLAGS is used like LOCAL_CPPFLAGS but is considered obsolete.
   1371       (will disappear in next release)
   1372 
   1373   Also fixed APP_CPPFLAGS / APP_CFLAGS / APP_CXXFLAGS correspondingly.
   1374 
   1375 - Rename build/platforms/android-1.5 to build/platforms/android-3 to match
   1376   the Android API level instead of the marketing speak.
   1377 
   1378   Also add a new build/platforms/android-4, and make the build system select
   1379   which platform to use based on the content of the project file named
   1380   $(APP_PROJECT_PATH)/default.properties.
   1381 
   1382 - Add OpenGL ES 1.x headers and libraries to the android-4 stable APIs.
   1383   (NOTE: they are *not* available for android-3)
   1384 
   1385   Also provide a small port of the "San Angeles Observation" demo to show
   1386   how to make a simple Android application that uses them.
   1387 
   1388 
   1389 OTHER FIXES AND CHANGES
   1390 
   1391 - Ensure that the __ANDROID__ macro is always defined when building code
   1392   with the NDK. Normally, the macro must be defined by the toolchain
   1393   automatically to indicate that you're targeting the Android runtime.
   1394 
   1395   This works for the new arm-linux-androideabi toolchain, but there is
   1396   a bug in the way we built the arm-eabi one, so add the flag manually
   1397   through the NDK build script for it.
   1398 
   1399   Note that the ANDROID macro, is now deprecated. While it is still defined
   1400   by the NDK, you should modify your code to test against __ANDROID__ instead!
   1401 
   1402 - Generate thumb binaries by default.
   1403 
   1404 - Add support for LOCAL_ARM_MODE in Android.mk.
   1405 
   1406 - Add support for the '.arm' suffix in source file names to force the
   1407   compilation of a single source in ARM (32-bit) mode.
   1408 
   1409 - Generate proper unoptimized versions of binaries when APP_OPTIM := debug
   1410 
   1411 - Add support for LOCAL_C_INCLUDES in Android.mk
   1412 
   1413 - Fix compilation of assembler files (e.g. foo.S)
   1414 
   1415 -------------------------------------------------------------------------------
   1416 android-ndk-1.5_r1 released.
   1417 </pre></body></html>
   1418