• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html><body><pre>Android NDK ChangeLog:
2
3-------------------------------------------------------------------------------
4android-ndk-r8e
5
6IMPORTANT CHANGES:
7
8- NDK now delivers additional 64-bit host toolchain set (package name suffix
9  *-x86_64.*)
10  1. The ndk-build script uses 64-bit toolchain if it's present and your OS
11     supports it.  If you install both 32-bit and 64-bit toolchain on 64-bit
12     OS, you may export NDK_HOST_32BIT=1 or add it to the command-line to
13     always use the 32-bit host toolchain.
14  2. For standalone: add to make-standalone-toolchain.sh "--system=linux-x86_64"
15     on Linux or "--system=darwin-x86_64" on MacOSX to generate 64-bit host
16     toolchain instead of the default 32-bit
17
18  See NDK-BUILD.html
19
20- Added Clang 3.2 compiler.  Since GCC 4.6 is still the default, you need to
21  explicitly enable it:
22  1. For ndk-build: Either export NDK_TOOLCHAIN_VERSION=clang3.2 (or
23     NDK_TOOLCHAIN_VERSION=clang which picks the most recent among the
24     clang compilers in the package) or add it in Application.mk.
25  2. For standalone: Add "--llvm-version=3.2" to make-standalone-toolchain.sh
26     and replace CC and CXX in your makefile with &lt;tool-path&gt;/bin/clang
27     and &lt;tool-path&gt;/bin/clang++.
28
29- Added static code analyzer for Linux/MacOSX hosts
30  1. For ndk-build, either export NDK_ANALYZE=1 or add it to the command-line.
31  2. For standalone, please refer to ndk-build for example to run scan-build
32     using /path/to/standalone/bin/&lt;arch&gt;/analyzer.
33
34  This feature is experimental now but welcome to try and report issues.
35
36- Added MCLinker for for Linux/MacOSX hosts.  Since ld.gold is the default
37  where available, you need to add -fuse-ld=mcld in LOCAL_LDFLAGS or
38  APP_LDFLAGS to explicitly enable it.
39
40  This feature is experimental now but welcome to try and report issues.
41  Please find project page: https://code.google.com/p/mclinker/
42
43- ndk-build now uses topological sort for module dependencies, ie.
44  it automatically sorts out the order of libraries specified in
45  LOCAL_STATIC_LIBRARIES, LOCAL_WHOLE_STATIC_LIBRARIES and
46  LOCAL_SHARED_LIBRARIES.
47
48  See http://b.android.com/39378
49  and an example in tests/build/topological-sort.
50
51
52IMPORTANT BUG FIXES:
53
54- Fixed build script to build all toolchains in -O2.  Toolchains
55  in previous releases were incorrectly built without optimization.
56
57- Fixed build script which unconditionally builds Clang/llvm for MacOSX
58  in 64-bit
59
60- Fixed GCC 4.6/4.7 ICE gen_thumb_movhi_clobber at config/arm/arm.md:5832
61  See http://b.android.com/52732
62
63- Fixed GCC/ARM 4.6/4.7 fails to link code using 64-bit atomic built-in
64  functions
65  See http://b.android.com/41297
66
67- Fixed GCC 4.7 linker error reads like
68  .../arm-linux-androideabi/bin/ld: error: DIV usage mismatch between
69  out/target/product/generic/obj/STATIC_LIBRARIES/ds_intermediates/ds.a(ak.o)
70  and output
71
72  See http://sourceware.org/ml/binutils/2012-12/msg00202.html
73
74- Fixed GCC 4.7 ICE in build_data_member_initialization, at
75  cp/semantics.c:5790
76
77- Fixed GCC 4.7 ICE in redirect_eh_edge_1, at tree-eh.c:2214
78  See http://b.android.com/52909
79
80- Fixed a GCC 4.7 segfault
81  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55245
82
83- Fixed to &lt;chrono&gt; clock resolution and enable steady_clock
84  See http://b.android.com/39680
85
86- Fixed to enable _GLIBCXX_HAS_GTHREADS for GCC 4.7 libstdc++
87  See http://b.android.com/41770 and http://b.android.com/41859
88
89- Fixed X86 MXX/SSE code fails to link due to missing posix_memalign
90  See https://android-review.googlesource.com/#/c/51872
91
92- Fixed GCC4.7/X86 segfault in i386.c distance_non_agu_define_in_bb()
93  See https://android-review.googlesource.com/#/c/50383
94
95- Fixed GCC4.7/X86 to resotre earlier cmov behavior
96  See http://gcc.gnu.org/viewcvs?view=revision&revision=193554
97
98- More fixes to handle NULL return value of setlocale() in
99  libstdc++/GCC4.7
100  See http://b.android.com/46718
101
102- Fixed ld.gold runtime undefined reference to __exidx_start/_end
103  See https://android-review.googlesource.com/#/c/52134
104
105- Fixed Clang3.1 ICE using Eigen library
106  See http://b.android.com/41246
107
108- Fixed Clang3.1 ICE including &lt;chrono&gt; in C++11 mode
109  See http://b.android.com/39600
110
111- Fixed Clang3.1 ICE when generating object code for a method
112  call to a uniform initialized rvalue
113  See http://b.android.com/41387
114
115- Fixed Clang3.1/X86 stack realignment
116  See https://android-review.googlesource.com/#/c/52154
117
118- Fixed GDB SIGILL when debugging on platform 4.1.2
119  See http://b.android.com/40941
120
121- Fixed GDB cannot set "source:line" breakpoints when symbols contain
122  frankenpaths
123  See http://b.android.com/42448
124
125- Fixed GDB read_program_header for MIPS PIE executables
126  See https://android-review.googlesource.com/#/c/49592
127
128- Fixed STLport segfault in uncaught_exception()
129  See https://android-review.googlesource.com/#/c/50236
130
131- Fixed STLport Bus error in exception handling due
132  to unaligned access of DW_EH_PE_udata2, 4 and 8.
133
134- Fixed Gabi++ nothrow new[] infinite recursion.
135  See http://b.android.com/52833
136
137- Fixed Gabi++ wrong offset to EH pointer
138  See https://android-review.googlesource.com/#/c/53446
139
140- Removed Gabi++ redundant free on exception object
141  See https://android-review.googlesource.com/#/c/53447
142
143
144OTHER BUG FIXES:
145
146- Fix NDK headers
147  1. Remove redundant definitions of size_t, ssize_t, and ptrdiff_t
148  2. Fixed MIPS and ARM fenv.h
149  3. Fixed stddef.h to not re-define offsetof already exists
150     in toolchain
151  4. Fixed elf.h to contain Elf32_auxv_t and Elf64_auxv_t
152     See http://b.android.com/38441
153  5. Fixed the #ifdef C++ in OpenSLES_AndroidConfiguration.h
154     See http://b.android.com/53163
155
156- Fixed STLport to abort after OOM instead of (silent) exit
157
158- Fixed 'system' and 'Gabi++' headers to be able to compile
159  with API level &lt; 9
160
161- Fixed cpufeatures to not parse /proc/self/auxv
162  See http://b.android.com/43055
163
164- Fixed ld.gold to not depending on host libstdc++, and in case
165  of windows, library libgcc_sjlj_1.dll
166
167- Fixed Clang3.1 which emits inconsistent register list in .vsave
168  and fails assembler. eg.
169   .vsave  {d8, d9, d10, d11, d12, d13, d14, s20, s21, s22}
170  See https://android-review.googlesource.com/#/c/49930
171
172- Fixed Clang3.1 to be able to compile libgabi++ and pass test-stlport
173  on MIPS
174  See https://android-review.googlesource.com/#/c/51961
175
176- Fixed Clang3.1 to only enable exception by default for C++,
177  not for C
178
179- Misc fixes in Clang3.1 to pass most GNU exception tests
180
181- Fixed script clang/clang++ in standalone NDK compiler to
182  detect -cc1 and don't specify "-target" when found
183
184- Fixed ndk-build to observe NDK_APP_OUT set in Application.mk
185
186- Fixed X86 libc.so/lib.a missing sigsetjmp/siglongjmp already
187  declared in setjmp.h
188  See http://b.android.com/19851
189
190- Patched GCC 4.4.3/4.6/4.7 libstdc++ to work with Clang in C++11
191  See http://clang.llvm.org/cxx_status.html
192
193- Fixed cygwin path in argument passed to HOST_AWK
194
195- Fixed ndk-build warning in windows when running from project's jni/
196  directory.
197  See See http://b.android.com/40192
198
199- Fixed ndk-build won't build if makefile has tailing whitespace in
200  LOCAL_PATH definition
201  See See http://b.android.com/42841
202
203
204OTHER CHANGES:
205
206- Enabled threading support in GCC/MIPS toolchain
207
208- Unhided GCC EH helpers __cxa_begin_cleanup and __cxa_type_match
209  in GNU libstdc++
210
211  See tests/build/b8247455-hidden-cxa/jni/Android.mk
212
213- Gabi++ and STLport static libraries are now built with hidden
214  visibility except for EH helpers
215
216- STLport in ARM is now built in thumb mode
217
218- Added support for std::set_new_handler in Gabi++
219  See http://b.android.com/52805
220
221- Enabled FUTEX in GNU libstdc++
222
223- ndk-build no longer copies prebuilt static library to project's
224  obj/local/&lt;abi&gt;/directory
225  See http://b.android.com/40302
226
227- Removed __ARM_ARCH_5*__ from ARM toolchains/*/setup.mk
228  See http://b.android.com/21132
229
230- Built additional GNU libstdc++ libaries in thumb mode for ARM
231
232- Enabled MIPS floating-point madd/msub/nmadd/nmsub/recip/rsqrt
233  instructions with 32-bit FPU
234
235- Enabled graphite in GCC 4.6 and 4.7.  Allow more loop optimizations:
236  -fgraphite, -fgraphite-identity, -floop-block, -floop-flatten,
237  -floop-interchange, -floop-strip-mine, -floop-parallelize-all,
238  and -ftree-loop-linear
239
240  See http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
241
242- Enabled polly for clang3.1/3.2 on Linux/MacOSX 32-bit hosts which analyzes
243  and optimizes memory access pattern
244
245  See http://polly.llvm.org
246
247- Enabled -flto in GCC 4.7, 4.6, clang3.2 and Clang3.1 on linux (Clang LTO
248  via LLVMgold.so, ie. no MIPS because it doesn't have ld.gold)
249
250- Enabled --plugin and --plugin-opt for ld.gold in GCC 4.6/4.7
251
252- Enabled --text-reorder for ld.gold in GCC 4.7
253
254- GNU libstdc++ is now configured with _GLIBCXX_USE_C99_MATH which will undef
255  isinf, etc (*1), in bionic header.  If you have code which does the following
256     #include <math.h>
257       ... use isinf
258     #include <cmath>
259     #include <math.h>
260       ... use isinf // fails
261  The 2nd use of isinf may fail because cmath undefined isinf
262
263  (*1) Math macro in bionic undefined by cmath: fpclassify, isfinite, isinf,
264       isnan, isnormal, isgreater, isgreaterequal, isless, islessequal,
265       islessgreater, isunordered, signbit
266
267- Added APP_LDFLAGS.  See ANDROID-MK.html.
268
269- Allow NDK_LOG=0, NDK_HOST_32BIT=0 to disable NDK_LOG and host 32-bit toolchain,
270  respectively.
271
272- Changed the default GCC/X86 -march=/-mtune= from pentiumpro/generic to i686/atom
273
274- Misc toolchain build script enhancements:
275  1. Fixed a race condition in build-gcc.sh mingw build which used to prevent
276     high degree of parallel build
277  2. build-gabi++.sh and build-stlport.sh can now run from NDK package
278     See http://b.android.com/52835
279  3. Fixed run-tests.sh in MSys
280  4. Better 64-bit host toolchain and canadian build supports
281  5. Updated build-mingw64-toolchain.sh for modern versions
282  6. Option to build libgnustl_static.a and stlport_static.a without hidden
283     visibility
284
285
286-------------------------------------------------------------------------------
287android-ndk-r8d
288
289IMPORTANT CHANGES:
290
291- Added GCC 4.7 compiler.  Since GCC 4.6 is still the default,
292  you need to explicitly enable it:
293  1. For ndk-build: Either export NDK_TOOLCHAIN_VERSION=4.7 or add it
294     in Application.mk.
295  2. For standalone: Use "--toolchain=" option in make-standalone-toolchain.sh.
296     eg. "--toolchain=arm-linux-androideabi-4.7"
297
298  This feature is experimental now but welcome to try and report issues.
299
300- Added stlport exception support via gabi++.  Note that the new gabi++
301  depends on dlopen, etc, meaning that:
302  1. libstlport_static.a can no longer be used in "static" executable (-static,
303     only possible with standalone toolchain).  "dynamic" executable (eg.
304     include $(BUILD_EXECUTABLE)) can link fine because compiler impliciently adds -ldl
305  2. If your project links with "-nostdlib -Wl,--no-undefined", you need to provide
306     your own -ldl
307
308  See CPLUSPLUS-SUPPORT.html.
309
310  This feature is experimental now and works better with GCC 4.6/4.7
311  than with GCC 4.4.3 and clang3.1.  Welcome to try and report issues.
312
313- Add -mstack-protector-guard= option for x86 to choose between "global"
314  (default, compatible with older bionic) and "tls" (new %gs:20) for
315  -fstack-protector, -fstack-protector-all, and -fstack-protector-strong
316  (GCC 4.6+).  Note that this alone doesn't enable any -fstack-protector*
317
318- Add android_setCpu() to sources/android/cpufeatures/cpu-features.c
319  when auto-detection via /proc isn't possible in and after JB
320  See http://code.google.com/p/chromium/issues/detail?id=164154
321
322
323IMPORTANT BUG FIXES:
324
325- Fixed un-needed rebuild of object files via ndk-build
326  See http://code.google.com/p/android/issues/detail?id=39810
327
328- Fixed r8c linker fail in MacOSX 10.6.x with error reads:
329
330    dyld: lazy symbol binding failed: Symbol not found: _memmem
331    Referenced from: ...../arm-linux-androideabi/bin/ld
332    Expected in: /usr/lib/libSystem.B.dylib
333
334  r8c was packaged on 10.7 machine which produced binaries not
335  compatible with 10.6 SDK/NDK still supports.  Will build it
336  on 10.6 from now on.
337
338- Removed '-x c++' from clang++ in standalone.
339  See http://code.google.com/p/android/issues/detail?id=39089
340
341- Fixed issues using NDK_TOOLCHAIN_VERSION=clang3.1 in cygwin
342  See http://code.google.com/p/android/issues/detail?id=39585
343
344- Fixed make-standalone-toolchain.sh to create standalone toolchain
345  on cygwin and MinGW, which works for all cygwin, MingGW, and CMD.exe.
346  See http://code.google.com/p/android/issues/detail?id=39915 and
347  http://code.google.com/p/android/issues/detail?id=39585 (again)
348
349- Added  missing SL_IID_ANDROIDBUFFERQUEUESOURCE in android-14 for
350  ARM/X86.  See http://code.google.com/p/android/issues/detail?id=40625
351
352- Fixed x86 cpu detection for MOVBE
353  See http://code.google.com/p/android/issues/detail?id=39317
354
355- Fixed an issue preventing STL dependencies to C++ sources not
356  in .cpp extension.
357
358- Fixed GCC 4.6 ARM ICE at reload1.c:1061
359  See http://code.google.com/p/android/issues/detail?id=20862
360
361- Fixed GCC 4.4.3 ARM ICE at emit-rtl.c:1954
362  See http://code.google.com/p/android/issues/detail?id=22336
363
364- Fixed GCC 4.4.3 ARM ICE at postreload.c:396
365  See http://code.google.com/p/android/issues/detail?id=22345
366
367- Fixed GCC 4.6/4.7 elides lambdas
368  See http://code.google.com/p/android/issues/detail?id=35933
369
370
371OTHER BUG FIXES:
372
373- Fixed NDK headers
374  1. Fixed __WINT_TYPE__ and wint_t to be the same type
375  2. Corrected typo in &lt;android/bitmap.h&gt;
376     See http://code.google.com/p/android/issues/detail?id=15134
377  3. Corrected typo in &lt;errno.h&gt;
378     See http://code.google.com/p/android/issues/detail?id=15134
379  4. Check the presence of __STDC_VERSION__ in &lt;sys/cdefs.h&gt;
380     See http://code.google.com/p/android/issues/detail?id=14627
381  5. Re-org headers byteswap.h and dirent.h
382  6. Fixed limits.h to include page.h which provides PAGE_SIZE
383     See http://code.google.com/p/android/issues/detail?id=39983
384  7. Fixed return type of glGetAttribLocation and glGetUniformLocation
385     from int to GLint.
386  8. Fixed __BYTE_ORDER for x86
387     See http://code.google.com/p/android/issues/detail?id=39824
388
389- Fixed ndk-build to not overwrite -Os with -O2 in ARM
390
391- Fixed to allow overwriting HOST_AWK, HOST_SED, and HOST_MAKE.
392
393- Fixed ld.gold issue on fsck_msdos build linking objects built by ICC
394
395- Fixed ARM EHABI support in clang conforming to spec.
396
397- Fixed GDB to shorten the time spending on walking target's link map upon
398  solib events.  See http://code.google.com/p/android/issues/detail?id=38402
399
400- Fixed missing libgcc.a when linking shared libraries
401
402
403OTHER CHANGES:
404
405- Backported 64-bit built-in atomic functions for ARM to GCC 4.6
406
407- Documentation for audio output latency, other misc docs/ fixes
408
409- Non-void functions in debug build by Clang now raise SIGILL on path w/o
410  return statement
411
412- make-standalone-toolchain.sh now accepts surffix "-clang3.1" which is
413  equivalent to adding "--llvm-version=3.1" on GCC 4.6 toolchain.
414
415- Changed GCC and Clang bug report URL to http://source.android.com/source/report-bugs.html
416
417- Added ARM ELF support to llvm-objdump.
418
419- Suppressed warning "treating c input as c++" in clang.
420
421- Only 32-bit of libiberty.a is built (placed at lib32/)
422
423
424-------------------------------------------------------------------------------
425android-ndk-r8c
426
427IMPORTANT CHANGES:
428
429- Added Clang 3.1 compiler.  Since GCC 4.6 is still the default,
430  you need to explicitly enable it:
431  1. For ndk-build: Either export NDK_TOOLCHAIN_VERSION=clang3.1 or add it
432     in Application.mk.
433  2. For standalone: Add "--llvm-version=3.1" to make-standalone-toolchain.sh
434     and replace CC and CXX in your makefile with &lt;tool-path&gt;/bin/clang
435     and &lt;tool-path&gt;/bin/clang++.
436
437  See STANDALONE-TOOLCHAIN.html for details.
438  This feature is experimental now but welcome to try and report issues.
439
440- Gold linker ld.gold is now available in Windows toolchain.  Gold is also the
441  default linker for ARM/X86 on all hosts.  You may override it to use ld.bfd
442  linker by adding LOCAL_LDFLAGS += -fuse-ld=bfd in Android.mk, or pass
443  -fuse-ld=bfd to g++/clang++ commandline which does the linking.
444
445- ndk-build[.cmd] and ndk-gdb now check and bail out if NDK path contains space.
446
447- Changes in API level
448  1. Projects with android-10 .. 13 specified in APP_PLATFORM, project.properties or
449     default.properties will link against android-9 instead of android-14.
450  2. Executable in project with android-16 (Jelly Bean) or higher is compiled
451     with -fPIE (position-independent executables).  A new APP_PIE allow manual control
452     of this behavior.  See APPLICATION-MK.html for details.  Note that all API level
453     above 14 still link against platforms/android-14. ie. no new platforms/android-N
454     is added.
455  3. ndk-build now warns about the adjusted API level is larger than android:minSdkVersion
456     in project's AndroidManifest.xml.
457
458- ARM: Updated 'cpu-features' helper library to include 9 more ARM-specific features
459
460  See sources/android/cpufeatures/cpu-features.h for details.
461
462- X86: long double is still a distinct type but it's 8-byte in size now (same as double)
463
464- APP_ABI=armeabi-v7a:
465  1. -march=armv7-a is also passed to linker to link v7-specific libraries and crt*.o
466  2. -mfpu=vfpv3-d16 is added by ndk-build instead of -mfpu=vfp in the previous releases.
467
468
469IMPORTANT BUG FIXES:
470
471- Fixed an issue when make-standalone-toolchain.sh is run under root privilege resulting
472  in standalone toolchain inaccessible to some.
473  1. All files/executables attributes in NDK release package are set to readable/executable to all
474  2. The ownership/group of file libstdc++.a is now preserved when copied
475
476  See http://code.google.com/p/android/issues/detail?id=35279
477
478- Removed redundant \r from Windows prebuilt echo.exe. The redundant \r in gdb.setup fails
479  GDB because it incorrectly becomes part of the path.
480
481  See http://code.google.com/p/android/issues/detail?id=36054
482
483- Fixed windows parallel builds that sometimes failed due to timing issues in the host-mkdir
484  implementation.
485
486  See http://code.google.com/p/android/issues/detail?id=25875
487
488- Fixed GCC 4.4.3 GNU libstdc++ to NOT merge typeinfo names by default.
489
490  See
491    toolchain repo gcc/gcc-4.4.3/libstdc++-v3/libsupc++/typeinfo
492    http://code.google.com/p/android/issues/detail?id=22165
493    https://groups.google.com/forum/#!msg/android-ndk/FlnuAOIKHOo/kLEwaBso7KYJ%5B1-25%5D
494
495- Fixed crash on null context in GCC 4.6 cp/mangle.c::write_unscoped_name, where gcc
496  may crash when context == NULL and dereferenced in TREE_CODE
497
498- Fixed GCC 4.4.3 crashes on NEON specific typedef for float
499
500  See http://code.google.com/p/android/issues/detail?id=34613
501
502- Fixed the STLport internal _IteWrapper::operator*() implementation where stale
503  stack location holding the dereferenced value is returned and leads to runtime crashes
504
505  See http://code.google.com/p/android/issues/detail?id=38630
506
507- ARM: Fixed ARM GCC 4.4.3/4.6 g++ to not warn about "the mangling of &lt;va_list&gt; has
508  changed in GCC 4.4".  Switch -Wno-psabi is no longer needed to workaround.
509
510- ARM: Fix an issue when project with .arm/.neon suffixes in LOCAL_SRC_FILES also
511  uses APP_STL.  With APP_STL, ndk-build searches for C++ file in LOCAL_SRC_FILES before
512  adding STL header/lib paths to compilation.  Fix ndk-build to filter out .arm and .neon
513  suffixes before the search, otherwise item in LOCAL_SRC_FILESfile like myfile.cpp.arm.neon
514  won't be considered C++.
515
516- ARM: Fixed binutils-2.21/ld.bfd to be capable of linking object from older binutils w/o
517  tag_FP_arch, which used to produce error message reads
518
519    BFD (GNU Binutils) 2.21 assertion fail
520         ...../binutils/binutils-2.21/bfd/elf32-arm.c:10190
521
522  The root cause is that ARM's binutils-2.21/ld.bfd performs sanity check and asserts
523  when "tag_FP_arch==0 && tag_ABI_HardFP_use !=0".  This can happen in object using FP
524  linked by older binutils when tag_FP_arch isn't produced at all (thus gets the default
525  "zero" in new linker).
526
527  See http://code.google.com/p/android/issues/detail?id=35209
528
529- ARM: Removed warning when binutils-2.19/ld links prebuilt object by newer binutils-2.21
530  which reads
531
532    Unknown EABI object attribute 44
533
534  The reason is that all prebuilt crt*.o and C++ STL are built with later GCC 4.6/binutils-2.21
535  and contain new tag "DIV_use" with value set to "Not allowed".  This tag can be safely ignored
536  by the original GCC4.4.3/binutils-2.19 toolchain since it is only for sanity check.
537
538- ARM: Fixed an issue in GNU stdc++ compilation with both -mthumb and -march=armv7-a, by
539  making make-standalone-toolchain.sh to also populate headers/libs in sub-directory
540  "armv7-a/thumb".
541
542  See http://code.google.com/p/android/issues/detail?id=35616
543
544- ARM: Fix error: unresolvable R_ARM_THM_CALL relocation
545
546  See
547    http://code.google.com/p/android/issues/detail?id=35342
548    https://groups.google.com/forum/?fromgroups#!topic/android-ndk/HaLycHImqL8
549
550- ARM: Fixed internal compiler error at "reload1.c:3633".  The reason is that ARM back-end
551  expects wrong operand type when sign-extend from char.
552
553  Back port fix from http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50099
554
555- ARM: Fixed internal compiler error with negative shift amount.
556    int foo(int a, int b)
557    {
558        return a | (b &lt;&lt; -3);
559    }
560
561  See http://gcc.gnu.org/ml/gcc-patches/2011-10/msg00594.html
562
563- X86: Fixed -fstack-protector, which is also the default for ndk-build x86 ABI
564
565- MIPS: Fixed stlport endianess by setting _STLP_LITTLE_ENDIAN to 1 when compiling
566  MIPS' libstlport_*
567
568- MIPS: Fixed GCC __builtin_unreachable issue compiling LLVM
569
570  See Bug 54369: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54369
571
572- MIPS: Backport fix to bug 50380: cc1 hangs eating 100% CPU
573
574  See
575    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50380
576    http://gcc.gnu.org/viewcvs/trunk/gcc/cse.c?r1=177852&r2=182498&pathrev=182498
577
578- GDB: Disable python support in gdb-7.x at build, otherwise gdb-7.x/configure may
579  pick up whatever python in host and build gdb with hard-wired dependency to specific
580  version of python.
581
582  See http://code.google.com/p/android/issues/detail?id=36120
583
584- GDB: Fixed ndk-gdb when APP_ABI contains "all" and matches none of known architecture
585
586  See http://code.google.com/p/android/issues/detail?id=35392
587
588- GDB: Fixed Windows pathname support.  Keep ':' if it looks like it could be part of
589  a Windows path starting with a drive letter.
590
591  See
592    http://sourceware.org/ml/gdb/2011-06/msg00030.html
593    http://sourceware.org/bugzilla/show_bug.cgi?id=12843
594
595- GDB: Fixed add HW breakpoint support for ARM in gdbserver
596
597  See http://sourceware.org/ml/gdb-patches/2011-09/msg00200.html
598
599- GDB: Fixed to only read current solibs when linker is consistent.  Speeds up solib
600  event handling.
601
602  See http://code.google.com/p/android/issues/detail?id=37677
603
604- GDB: Fixed to make repeated attempts to find solib breakpoint.  GDB will retry enable_break()
605  during every call to svr4_current_sos() until it succeeds.
606
607  See https://android-review.googlesource.com/#/c/43563
608
609- GDB: Fixed an issue where gdb cannot stop on breakpoints placed on dlopen-ed
610  libraries.
611
612  See http://code.google.com/p/android/issues/detail?id=34856
613
614- GDB: Fixed SIGILL in dynamic linker when calling dlopen(), on system
615  where /system/bin/linker is stripped of symbols and rtld_db_dlactivity()
616  is implemented as Thumb, due to not preserving LSB of sym_addr
617
618  See http://code.google.com/p/android/issues/detail?id=37147
619
620
621OTHER BUG FIXES:
622
623- Fixed NDK headers
624  1. Fixed arch-mips/include/asm/* previously incorrectly cleaned from original kernel
625     See https://android-review.googlesource.com/#/c/43335
626  2. Replace struct member data "__unused" with "__linux_unused" in linux/sysctl.h
627     and linux/icmp.h to avoid conflict with "#define __unused" in sys/cdefs.h
628  3. Fixed fenv.h to enclosed C functions with __BEGIN_DECLS/__END_DECLS
629  4. Removed unimplemented functions in malloc.h
630  5. Fixed stdint.h.  See http://code.google.com/p/android/issues/detail?id=1952
631  6. Fixed preprocessor macros in &lt;arch&gt;/include/machine/*
632  7. Replaced link.h for mips with new version for all platforms
633  8. Remove linux-unistd.h
634  9. Move GLibc-specific macros LONG_LONG_MIN, LONG_LONG_MAX and ULONG_LONG_MAX from
635     &lt;pthread.h&gt; to &lt;limits.h&gt;.
636
637- Fixed a buffer overflow in ndk-stack-parser.
638
639- Fixed _STLP_USE_EXCEPTIONS, when not defined, to omit all declarations
640  and uses of __Named_exception.  Compile and use __Named_exception only
641  when STLport is being allowed to use exceptions.
642
643- Fixed to build Linux-only NDK packages (invoked as follow) w/o also building windows
644
645    ./build/tools/make-release.sh --force --systems=linux-x86
646
647- Fixed libc.so to not export atexit() and __do_handler.  These symbols are exported
648  on ARM by the system version of the C library to support legacy native libraries.
649  NDK-generated should never reference them directly. Instead, each shared library or
650  executable should embed its own version of these symbols, provided by crtbegin_*.o
651
652  If your project is linked with "-nostdlib -Wl,--no-undefined", you need to provide
653  your own __dso_handle because crtbegin_so.o isn't linked.  The content of __dso_handle
654  doesn't matter.  eg.
655
656    extern "C" {
657      extern void *__dso_handle __attribute__((__visibility__ ("hidden")));
658      void *__dso_handle;
659    }
660
661- ARM: Fixed symbol decoder (used in objdump) for plt entries to generate more
662  readable form function@plt
663
664- X86: Removed the following symbols introduced in GCC 4.6/libgcc.a from X86's libc.so
665
666    __aeabi_idiv0, __aeabi_ldiv0, __aeabi_unwind_cpp_pr1, and __aeabi_unwind_cpp_pr2
667
668- MIPS: Removed unused .ctors, .dtors, and .eh_frame in MIPS crt*_so.S.
669
670- GDB: ndk-gdb now only takes the last line of output for ndk-build DUMP_XXXX.  This
671  ensures that if Application.mk or Android.mk do print something with $(info ...),
672  it doesn't get injected into the result of DUMP_XXX.
673
674  See https://groups.google.com/d/msg/android-ndk/-/ew0lTWGr1UEJ
675
676
677OTHER CHANGES:
678
679- Removed arch-x86 and arch-mips headers from platforms/android-{3,4,5,8}.
680  Those headers are incomplete to begin with, since both X86 and MIPS ABIs are only
681  supported at API &ge; 9
682
683- Simplified c++ include path in standalone package, eg. change
684
685    &lt;path&gt;/arm-linux-androideabi/include/c++/4.6.x-google
686  to
687    &lt;path&gt;/include/c++/4.6/
688
689  See http://code.google.com/p/android/issues/detail?id=35279
690
691- Enhanced ndk-build to recognize more C++ file extensions by default:
692
693    .cc .cp .cxx .cpp .CPP .c++ .C
694
695  You may still use LOCAL_CPP_EXTENSION to override it
696
697- Fixed an issue in samples/san-angeles about black/freeze frame
698  at re-launch.
699
700- Replaced deprecated APIs in NDK samples
701  1. hello-gl2 from android-5 to android-7
702  2. native-activity from android-9 to android-10
703  3. native-audio from android-9 to android-10
704  4. native-plasma from android-9 to android-10
705
706  See http://code.google.com/p/android/issues/detail?id=20017
707
708- Added new branding for Android executables with a simpler scheme in section
709  .note.android.ident (defined in crtbegin_static/dynamic.o) so that debugging
710  tools can act accordingly.
711
712  The structure member and values are defined as follows:
713
714  static const struct {
715    int32_t namesz;  /* = 8,  sizeof ("Android") */
716    int32_t descsz;  /* = 1 * sizeof(int32_t) */
717    int32_t type;    /* = 1, ABI_NOTETYPE */
718    char name[sizeof "Android"];  /* = "Android" */
719    int32_t android_api; /* = 3, 4, 5, 8, 9, 14 */
720  }
721
722  Previous branding in section .note.ABI-tag is deprecated.
723
724- Added a new script run-tests-all.sh which calls run-tests.sh and standalone/run.sh
725  with various conditions.  Script run-tests.sh w/o --abi is also enhanced to compile
726  most of tests for all supported ABI and run on all attached devices
727
728
729-------------------------------------------------------------------------------
730android-ndk-r8b
731
732IMPORTANT BUG FIXES:
733
734- Fixed LOCAL_SHORT_COMMANDS issues on darwin-x86 and windows cygwin environment
735  and for static libraries.  List file generation is sped up, and it is no longer
736  regenerated and causes whole project to be rebuilt every time.
737
738- Fixed several issues in ndk-gdb
739
740    * to pass flags "-e", "-d", "-s" to adb more consistently
741
742    * to accept device serial name containing space
743
744    * to also pull /system/bin/link, so gdb on host can set a breakpoint in
745      __dl_rtld_db_dlactivity and be aware of linker activity (eg. rescan solib symbols
746      when dlopen() is called)
747
748- Fixed "ndk-build clean" in windows which failed to remove ./libs/*/lib*.so
749
750- Fixed ndk-build.cmd to return non-zero ERRORLEVEL when make fails
751
752- Fixed libc.so to no longer incorrectly export __exidx_start and __exidx_end symbols
753
754- Fixed SEGV when unwinding stack pasts __libc_init for ARM and MIPS.
755
756  Fixed __start (in crtbegin_dynamic/static.o) to "call __libc_init" instead of
757  "jump __libc_init", otherwise stack unwinding past __libc_init may get wrong return
758  address and crash the program or do wield things.  With "call", return address is pushed
759  on stack and unwinding stops correctly at _start.  Note that __libc_init never returns, so
760  this fix wonʼt affect normal program execution.  But just in case it "does" return,
761  jump to address 0 and halt.
762
763
764IMPORTANT CHANGES:
765
766- GCC 4.6 toolchain
767
768  Add GCC 4.6 toolchain (binutils 2.21 with gold + GDB 7.3.x) to co-exists with
769  the original GCC 4.4.3 toolchain (binutils 2.19 + GDB 6.6).  Note:
770
771    * GCC 4.6 is the default.  You may set NDK_TOOLCHAIN_VERSION=4.4.3 in Application.mk
772      to select the original one.
773
774    * Gold linker support is only available for ARM and x86 architectures on linux-86
775      and  darwin-x86 hosts.  It's not turned on by default.  Add
776      "LOCAL_LDFLAGS += -fuse-ld=gold" in Android.mk to enable it.
777
778    * You will need the new GDB to debug program compiled with -fPIE (including
779      binaries in Jelly Bean image)
780
781    * The binutils 2.21 ld also contain back-port of fixes from 2.22
782
783      * Fixed "ld --gc-sections" which incorrectly retain zombie references to external
784        libraries.  See http://sourceware.org/bugzilla/show_bug.cgi?id=13177 for detail.
785
786      * Fuxed ARM "strip" to preserve the original p_align and p_flags in GNU_RELRO section
787        if they are valid.  Otherwise program built with -fPIE can't be debugged.
788        http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf.c.diff?cvsroot=src&r1=1.552&r2=1.553
789
790    * Sincos optimization is not enabled for compatibility with old platforms which don't have
791      it.
792
793- NX and relro/bind_now protections are enabled by default
794
795  Add "--noexecstack" for assembler and "-z noexecstack" for linker to enable NX
796  protection against buffer overflow attacks by enabling NX bit on stack and heap.
797
798  Add "-z relro -z now" for linker to harden internal data sections after linking
799  against security vulnerabilities due to memory corruption.  See
800
801  http://www.akkadia.org/drepper/nonselsec.pdf (section 6)
802  http://tk-blog.blogspot.com/2009/02/relro-not-so-well-known-memory.html
803
804  For those who really needs it, these features can be disabled by
805  1. Passing "--execstack" to assembler and "-z execstack" to linker to
806     disable NX protection.
807     Passing "-z norelro -z lazy" to linker to disable second protection.
808  2. In NDK jni/Android.mk, set the following
809     LOCAL_DISABLE_NO_EXECUTE=true: to disable "--noexecstack" and "-z noexecstack"
810     LOCAL_DISABLE_RELRO=true: to disable "-z relro -z now"
811  see $NDK/docs/ANDROID-MK.html for details
812
813- Brand executables with .note.ABI-tag section
814
815  Brand Android executable with .note.ABI-tag (in crtbegin_static/dynamic.o) for debugging
816  tools to act accordingly.  The structure member and values are defined as follow.
817
818  static const struct {
819    int32_t	namesz;  /* = 4,  sizeof ("GNU") */
820    int32_t	descsz;  /* = 6 * sizeof(int32_t) */
821    int32_t	type;    /* = 1 */
822    char	name[sizeof "GNU"];  /* = "GNU" */
823    int32_t	os;      /* = 0 */
824    int32_t	major;   /* = 2 */
825    int32_t	minor;   /* = 6 */
826    int32_t	teeny;   /* = 15 */
827    int32_t	os_variant;  /* = 1 */
828    int32_t	android_api; /* = 3, 4, 5, 8, 9, 14 */
829  }
830
831
832OTHER BUG FIXES:
833
834- Backport several patches to fix MIPS issues.
835
836    * http://sourceware.org/bugzilla/show_bug.cgi?id=12637
837      mips-linux-gnu: relocation truncated to fit: R_MIPS_TLS_LDM
838
839    * http://sourceware.org/bugzilla/show_bug.cgi?id=12845
840      ld segfaults when using --gc-sections
841
842    * http://sourceware.org/ml/binutils/2011-05/msg00198.html
843      Refix MIPS GOT_PAGE counting
844
845    * Follow warning symbol link in mips_elf_count_got_symbols.
846
847    * Follow warning symbol link in mips_elf_allocate_lazy_stub.
848
849    * Move MIPS .dynamic to the data segment, so that it is writable.
850      Replace hard-coded 4096 with symbols for correct segment sizes for MIPS.
851
852    * Remove -mno-shared as default in MIPS toolchain.  -fPIC (or -fpic if supported)
853      is default for Android toolchain.  Without explicitly specifying one of
854      -mshared, -fpic, -fPIC, -fpie, or -fPIE, MIPS compiler adds -mno-shared
855      which turns off PIC.  Fixed it not to add -mno-shared as default.
856
857- Fixed wrong package names in samples hello-jni and two-libs so tests project
858  underneath can compile
859
860
861OTHER CHANGES:
862
863- New binaries locations
864
865    * gdbserver is moved from toolchain/&lt;arch-os-ver&gt;/prebuilt/gdbserver to
866      prebuilt/android-&lt;arch&gt;/gdbserver/gdbserver
867
868    * x86 toolchain prefix is renamed from i686-android-linux- to i686-linux-android-
869
870    * sources/cxx-stl/gnu-libstdc++/include and lib are moved to
871      sources/cxx-stl/gnu-libstdc++/4.4.3 when compiled with 4.4.3 GCC, or
872      sources/cxx-stl/gnu-libstdc++/4.6 when compiled with 4.6 GCC
873
874    * libbfd.a and libintl.a are moved from lib/ to lib32/
875
876- Header if_dl.h is removed from all platforms and architectures. AF_LINK and sockaddr_dl
877    it describes are specpfic to BSD (ie. don't exist in Linux)
878
879- Various scripts to rebuild/test NDK toolchain
880
881    * Add build-mingw64-toolchain.sh to generate a new Linux-hosted toolchain that generates
882      Win32 and Win64 executables.
883
884    * Speed up download-toolchain-sources.sh by "clone" but only "checkout" the directories
885      that we need to build the NDK toolchain binaries.
886
887    * New build-host-gcc.sh and build-host-gdb.sh
888
889    * Add tests/check-release.sh to check the content of a given NDK installation directory,
890      or an existing NDK package.
891
892    * Rewrite standalone tests: tests/standalone/run.sh
893
894
895-------------------------------------------------------------------------------
896android-ndk-r8
897
898IMPORTANT BUG FIXES:
899
900- Fixed a typo in GAbi++ implementation where result of dynamic_cast&lt;D&gt;(b)
901  of base class object 'b' to derived class D is adjusted wrong
902  (in the opposite direction from base class). See
903  http://code.google.com/p/android/issues/detail?id=28721
904
905- Fixed an issue in make-standalone-toolchain.sh which fails to copy
906  libsupc++.*.
907
908
909IMPORTANT CHANGES:
910
911- Added support for the mips ABI.
912
913  This release of the Android NDK contains support for 'mips' ABI.
914  To generate machine runs on MIPS-based Android devices, please add 'mips' to
915  APP_ABI definition in your Application.mk, or 'all' to generate binaries for
916  all currently supported ABI.  See docs/CPU-MIPS.html for details.
917
918- You can build a standalone mips toolchain using the
919  --toolchain=mipsel-linux-android-4.4.3 option when calling
920  make-standalone-toolchain.sh. See docs/STANDALONE-TOOLCHAIN.html for more details.
921
922
923OTHER BUG FIXES:
924
925- Fixed ndk-build.cmd to ensure that ndk-build.cmd works correctly even if
926  the user has redefined the SHELL environment variable (which can happen under
927  the hood when installing a variety of development tools on Windows)
928
929
930-------------------------------------------------------------------------------
931android-ndk-r7c
932
933This release of the NDK includes an important fix for Tegra2-based devices,
934and a few additional fixes and improvements:
935
936IMPORTANT BUG FIXES:
937
938- Fixed GNU STL armeabi-v7a binaries to not crash on non-NEON devices.
939  The files provided with NDK r7b where not configured properly, resulting
940  in crashes on Tegra2-based devices and others when trying to use certain
941  floating-point functions (e.g., cosf, sinf, expf).
942
943
944IMPORTANT CHANGES:
945
946- Added support for custom output directories through the NDK_OUT
947  environment variable. When defined, this variable is used to store all
948  intermediate generated files, instead of $PROJECT_PATH/obj.
949
950  The variable is also recognized by ndk-gdb.
951
952- Added support for building modules with hundreds or even thousand of source
953  files by defining LOCAL_SHORT_COMMANDS to true in your Android.mk.
954
955  This change forces the NDK build system to put most linker or archiver
956  options into list files, to work-around command-line length limitations
957  (particularly on Windows). See docs/ANDROID-MK.html for details.
958
959
960OTHER BUG FIXES:
961
962- Fixed android_getCpuCount() implementation in the cpufeatures helper
963  library. The previous implementation only listed the cores that were
964  active the first time the function was called. This behavior could
965  provide results that were too low on devices that disable and enable
966  cores dynamically.
967
968-------------------------------------------------------------------------------
969android-ndk-r7b
970
971IMPORTANT BUG FIXES:
972
973- Updated &lt;sys/atomics.h&gt; to avoid correctness issues on some multi-core
974  ARM-based devices. Rebuild your unmodified sources with this version of the
975  NDK and this problem should completely be eliminated. For more details, read
976  docs/ANDROID-ATOMICS.html.
977
978- Reverted to binutils 2.19 to try to fix debugging issues that
979  appeared in NDK r7 (which switched to binutils 2.20.1).
980
981- Fixed ndk-build on 32-bit Linux. A packaging error put a 64-bit version
982  of the 'awk' executable under prebuilt/linux-x86/bin in NDK r7.
983
984- Fixed native Windows build (ndk-build.cmd). Other build modes were not
985  affected. The fixes include:
986
987    * Removed an infinite loop / stack overflow bug that happened when trying
988      to call ndk-build.cmd from a directory that was _not_ the top of your
989      project path (e.g. any sub-directory of it).
990
991    * Fixed a problem where the auto-generated dependency files were ignored.
992      This meant that updating a header didn't trigger recompilation of sources
993      that included it.
994
995    * Fixed a problem where special characters in files or paths, other than
996      spaces and quotes, were not correctly handled.
997
998- Fixed the standalone toolchain to generate proper binaries when using
999  -lstdc++ (i.e. linking against the GNU libstdc++ C++ runtime). You should
1000  use -lgnustl_shared if you want to link against the shared library
1001  version or -lstdc++ for the static version.
1002
1003  See docs/STANDALONE-TOOLCHAIN.html for more details about this fix.
1004
1005- Fixed gnustl_shared on Cygwin. The linker complained that it couldn't find
1006  libsupc++.a while the file was at the right location.
1007
1008- Fixed cygwin C++ link when not using any specific C++ runtime through
1009  APP_STL.
1010
1011OTHER CHANGES:
1012
1013- When your application uses the GNU libstdc++ runtime, the compiler will
1014  no longer forcibly enable exceptions and RTTI. This change results in smaller
1015  code. If you need these features, you need to do either one of these:
1016
1017     1/ Enable exceptions and/or RTTI explicitly in your modules or
1018        Application.mk. (recommended)
1019
1020     2/ Define APP_GNUSTL_FORCE_CPP_FEATURES to 'exceptions', 'rtti' or both
1021        in your Application.mk. See docs/APPLICATION-MK.html for more details.
1022
1023- ndk-gdb now works properly when your application has private services
1024  running in independent processes. It debugs the main application process,
1025  instead of the first process listed by 'ps', which is usually a service
1026  process.
1027
1028- Fixed a rare bug where NDK r7 would fail to honor the LOCAL_ARM_MODE value
1029  and always compile certain source files (but not all) to 32-bit instructions.
1030
1031- stlport: Refresh the sources to match the Android platform version. This
1032  update fixes a few minor bugs:
1033
1034   - Fixed instantiation of an incomplete type.
1035   - Fixed minor == versus = typo
1036   - Use memmove instead of memcpy in string::assign
1037   - Added better handling of IsNANorINF, IsINF, IsNegNAN, etc..
1038
1039  For complete details, see the commit log.
1040
1041- stlport: Removed 5 un-necessary static initializers from the library.
1042
1043- The GNU libstdc++ libraries for armeabi-v7a were mistakenly compiled for
1044  armeabi instead. This had no impact on correctness, but using the right
1045  ABI should provide for slightly better performance.
1046
1047- the 'cpu-features' helper library was updated to report three optional
1048  x86 CPU features (SSSE3, MOVBE and POPCNT). See docs/CPU-FEATURES.html
1049  for more details.
1050
1051- docs/NDK-BUILD.html was updated to mention NDK_APPLICATION_MK instead
1052  of NDK_APP_APPLICATION_MK to select a custom Application.mk file.
1053
1054- cygwin: ndk-build no longer creates an empty "NUL" file in the current
1055  directory when invoked.
1056
1057- cygwin: better automatic dependency detection. It previously didn't work
1058  properly in the following case:
1059
1060    - When the cygwin drive prefix was not /cygdrive
1061    - When using drive-less mounts, e.g. when Cygwin would translate /home
1062      to \\server\subdir instead of C:\Some\Dir.
1063
1064- cygwin: ndk-build does not try to use the native Windows tools under
1065  $NDK/prebuilt/windows/bin with certain versions of Cygwin and/or
1066  GNU Make.
1067
1068-------------------------------------------------------------------------------
1069android-ndk-r7
1070
1071IMPORTANT CHANGES:
1072
1073- New official NDK APIs for Android 4.0 (a.k.a. API level 14),
1074  which adds the following native features to the platform:
1075
1076     - Native multimedia API based on the Khronos Group OpenMAX AL&#0153;
1077       1.0.1 Standard.  New headers &lt;OMXAL/OpenMAXAL.h&gt; and
1078       &lt;OMXAL/OpenMAXAL_Android.h&gt; are provided to allow
1079       applications targeting this API level to perform multimedia output
1080       directly from native code using a new Android-specific buffer
1081       queue interface.  For more details, see docs/openmaxal/index.html
1082       and http://www.khronos.org/openmax/.
1083
1084     - Updated the native audio API based on the Khronos Group OpenSL ES
1085       1.0.1&#0153; Standard.  API Level 14 can now decode compressed
1086       audio (e.g. MP3, AAC, Vorbis) to PCM.  For more details, see
1087       docs/opensles/index.html and http://www.khronos.org/opensles/.
1088
1089- CCache support. To speed up large rebuilds, simply define the NDK_CCACHE
1090  environment variable to 'ccache' (or the path to your ccache binary), as in:
1091
1092        export NDK_CCACHE=ccache
1093
1094  The NDK build system will automatically use it when compiling any source
1095  file. For more information about CCache, see http://ccache.samba.org
1096
1097- You can now set your APP_ABI to 'all' to indicate that you want to build
1098  your NDK modules for all the ABIs supported by your given NDK release.
1099
1100  This means that either one of these two lines in your Application.mk are
1101  equivalent with this release:
1102
1103        APP_ABI := all
1104        APP_ABI := armeabi armeabi-v7a x86
1105
1106  This also works if you define APP_ABI on the command-line, as in:
1107
1108        ndk-build APP_ABI=all
1109
1110  Which is a quick way to check that your project builds for all supported
1111  ABIs without changing its Application.mk file.
1112
1113- Shorter paths to source and object files used in build commands.
1114  When invoking $NDK/ndk-build from your project path, the paths to the
1115  source, object and binary files passed to the build commands will be
1116  significantly shorter now because they are now passed relative to the
1117  current directory.
1118
1119  This is useful when building projects with a lot of source files, to
1120  avoid limits on the maximum command line length supported by your host
1121  operating system.
1122
1123  The behaviour is unchanged if you invoked ndk-build from a sub-directory
1124  of your project tree, or if you define NDK_PROJECT_PATH to point to a
1125  specific directory.
1126
1127- New LOCAL_CPP_FEATURES variable in Android.mk, used to declare which C++
1128  features (RTTI or Exceptions) your module uses. This is especially handy
1129  if you have prebuilt modules that depend on them since this will ensure
1130  the final link will work correctly.
1131
1132  See docs/ANDROID-MK.html and docs/CPLUSPLUS-SUPPORT.html for more details
1133
1134- WARNING: VERY EXPERIMENTAL!!
1135
1136     You can now build your NDK sources on Windows *without* Cygwin.
1137     Simply call the script 'ndk-build.cmd' from the Windows cmd.exe
1138     command-line, when in your project path.
1139
1140     The script takes exactly the same arguments than the original
1141     ndk-build one.
1142
1143     Note that the Windows NDK package comes with its own prebuilt
1144     binaries for GNU Make, Awk and other tools required by the build,
1145     i.e. you shouldn't need to install anything else to get a working
1146     build system.
1147
1148     IMPORTANT: ndk-gdb doesn't work. You still need Cygwin to debug
1149                at the moment!
1150
1151     This feature is still very experimental, but feel free to try it
1152     and report issues on the public forum (android-ndk@googlegroups.com)
1153     or the public bug database (http://b.android.com).
1154
1155     Note that all samples and unit tests successfully compile with it.
1156
1157IMPORTANT BUG FIXES:
1158
1159- Imported shared libraries are now installed by default to the target
1160  installation location (i.e. libs/%lt;abi%gt;) if APP_MODULES is not
1161  defined in your Application.mk.
1162
1163  This means that if a top-level module "foo" imports a module "bar", then
1164  both libfoo.so and libbar.so will be copied to the install location.
1165
1166  Previously, only libfoo.so was, unless you listed 'bar' in your APP_MODULES
1167  too.
1168
1169  If you define APP_MODULES explicitly, the behaviour is unchanged.
1170
1171- Static library imports are now properly transitive. If top-level module
1172  'foo' imports static library 'bar' which imports static library 'zoo',
1173  the libfoo.so will now be linked against both libbar.a and libzoo.a.
1174
1175- ndk-gdb now works correctly for activities with multiple categories
1176  in their MAIN intent filters.
1177
1178OTHER CHANGES:
1179
1180- docs/STABLE-APIS.html: Added missing documentation listing EGL
1181  as a supported stable API, starting from API level 9.
1182
1183- Add a new C++ support runtime named "gabi++". More details about it
1184  are available in the updated docs/CPLUSPLUS-SUPPORT.html.
1185
1186- The STLport C++ runtimes now support RTTI (no exceptions yet though).
1187
1188- Add a new C++ support runtime named "gnustl_shared" corresponding to the
1189  shared library version of GNU libstdc++ v3 (GPLv3 license). See more
1190  info at docs/CPLUSPLUS-SUPPORT.html
1191
1192- You can now list several file extensions in LOCAL_CPP_EXTENSION. As in:
1193
1194        LOCAL_CPP_EXTENSION := .cpp .cxx
1195
1196  To compile both foo.cpp and bar.cxx as C++ sources.
1197
1198- Refreshed the EGL and OpenGLES Khronos headers to support more extensions.
1199  Note that this does *not* change the NDK ABIs for the corresponding
1200  libraries, since each extension must be probed at runtime by the client
1201  application.
1202
1203  Which extensions are available depends on your actual device (and GPU
1204  drivers), not the version of the platform it provides.
1205
1206  The header changes simply add new constants and types to make it easier
1207  to use the extensions why they have been probed with eglGetProcAddress() or
1208  glGetProcAddress(). Here is the list of newly supported extensions:
1209
1210    GLES 1.x
1211    --------
1212    GL_OES_vertex_array_object
1213    GL_OES_EGL_image_external
1214    GL_APPLE_texture_2D_limited_npot
1215    GL_EXT_blend_minmax
1216    GL_EXT_discard_framebuffer
1217    GL_EXT_multi_draw_arrays
1218    GL_EXT_read_format_bgra
1219    GL_EXT_texture_filter_anisotropic
1220    GL_EXT_texture_format_BGRA8888
1221    GL_EXT_texture_lod_bias
1222    GL_IMG_read_format
1223    GL_IMG_texture_compression_pvrtc
1224    GL_IMG_texture_env_enhanced_fixed_function
1225    GL_IMG_user_clip_plane
1226    GL_IMG_multisampled_render_to_texture
1227    GL_NV_fence
1228    GL_QCOM_driver_control
1229    GL_QCOM_extended_get
1230    GL_QCOM_extended_get2
1231    GL_QCOM_perfmon_global_mode
1232    GL_QCOM_writeonly_rendering
1233    GL_QCOM_tiled_rendering
1234
1235    GLES 2.0
1236    --------
1237    GL_OES_element_index_uint
1238    GL_OES_get_program_binary
1239    GL_OES_mapbuffer
1240    GL_OES_packed_depth_stencil
1241    GL_OES_texture_3D
1242    GL_OES_texture_float
1243    GL_OES_texture_float_linear
1244    GL_OES_texture_half_float_linear
1245    GL_OES_texture_npot
1246    GL_OES_vertex_array_object
1247    GL_OES_EGL_image_external
1248    GL_AMD_program_binary_Z400
1249    GL_EXT_blend_minmax
1250    GL_EXT_discard_framebuffer
1251    GL_EXT_multi_draw_arrays
1252    GL_EXT_read_format_bgra
1253    GL_EXT_texture_format_BGRA8888
1254    GL_EXT_texture_compression_dxt1
1255    GL_IMG_program_binary
1256    GL_IMG_read_format
1257    GL_IMG_shader_binary
1258    GL_IMG_texture_compression_pvrtc
1259    GL_IMG_multisampled_render_to_texture
1260    GL_NV_coverage_sample
1261    GL_NV_depth_nonlinear
1262    GL_QCOM_extended_get
1263    GL_QCOM_extended_get2
1264    GL_QCOM_writeonly_rendering
1265    GL_QCOM_tiled_rendering
1266
1267    EGL:
1268    ----
1269    EGL_ANDROID_recordable
1270    EGL_NV_system_time
1271
1272- docs/NATIVE-ACTIVITY.HTML: Fixed typo, the minimum API level
1273  should be 9, not 8 for native activities.
1274
1275- removed many unwanted exported symbols from the link-time shared
1276  system libraries provided by the NDK. This ensures that code generated
1277  with the standalone toolchain doesn't risk to accidentally depend
1278  on a non-stable ABI symbol (e.g. any libgcc.a symbol that changes
1279  each time the toolchain used to build the platform is changed).
1280
1281- download-toolchain-sources.sh: Script was updated to download the toolchain
1282  sources from android.googlesource.com, the new location for AOSP servers.
1283
1284-------------------------------------------------------------------------------
1285android-ndk-r6b
1286
1287This is a bug-fix release for NDK r6, no new features are provided.
1288
1289IMPORTANT BUG FIXES:
1290
1291- Fixed the multi-architecture build, i.e. when using APP_ABI="armeabi x86"
1292
1293- Fixed location of prebuilt STLport binaries in the NDK release package.
1294  (A bug in the packaging script placed them in the wrong location).
1295
1296- Fixed atexit() usage in shared libraries with the x86 standalone toolchain.
1297
1298- Fixed make-standalone-toolchain.sh --arch=x86 (it failed to copy the
1299  proper GNU libstdc++ binaries to the right location).
1300
1301- Fixed standalone toolchain linker warnings about missing definition and
1302  size for '__dso_handle' symbol (arm only).
1303
1304- Fixed the inclusion order of $(SYSROOT)/usr/include for x86 builds,
1305  see http://code.google.com/p/android/issues/detail?id=18540
1306
1307- Fixed the definitions of ptrdiff_t and size_t in x86-specific system
1308  when used with the x86 standalone toolchain.
1309
1310-------------------------------------------------------------------------------
1311android-ndk-r6
1312
1313IMPORTANT CHANGES:
1314
1315- Official support for the x86 ABI.
1316
1317  This release of the Android NDK now provides support for the 'x86' ABI.
1318  This allows you to generate machine code that runs on future x86-based
1319  Android devices.
1320
1321  Note that by default, code is still generated for ARM-based devices.
1322  You can however add 'x86' to your APP_PLATFORM definition in your
1323  Application.mk. For example, the following line instructs ndk-build
1324  to build your code for three distinct ABIs:
1325
1326    APP_ABI := armeabi armeabi-v7a x86
1327
1328  Unless you rely on ARM-based assembly sources, you shouldn't need to touch
1329  your Android.mk files to build x86 machine code.
1330
1331  For all details regarding x86 support, please read the new documentation
1332  file named docs/CPU-X86.html.
1333
1334  Don't hesitate to file NDK bugs related to x86 at http://b.android.com
1335
1336- You can build a standalone x86 toolchain using the --toolchain=x86-4.4.3
1337  option when calling make-standalone-toolchain.sh. See
1338  docs/STANDALONE-TOOLCHAIN.html for more details.
1339
1340- The new 'ndk-stack' tool can be used to translate stack traces
1341  (as reported by adb logcat in case of crash in native code) into
1342  something more readable, i.e. containing function / source file /
1343  line number information corresponding to each stack frame.
1344
1345  For more information and usage example, see the new documentation
1346  file docs/NDK-STACK.html
1347
1348OTHER FIXES &amp; CHANGES:
1349
1350- The arm-eabi-4.4.0, which had been deprecated since NDK r5, has been
1351  finally removed from the NDK distribution.
1352
1353- Support a project.properties file in the application's directory
1354  instead of default.properties. This is in preparation for future SDK Tools
1355  changes.
1356
1357-------------------------------------------------------------------------------
1358android-ndk-r5c
1359
1360This release fixes a few bugs in r5b. There are no new features.
1361
1362IMPORTANT BUG FIXES:
1363
1364- Fixed a typo that prevented LOCAL_WHOLE_STATIC_LIBRARIES to work correctly
1365  with the new toolchain. Also properly document this variable in
1366  docs/ANDROID-MK.html.
1367
1368- Fixed a bug where code linked against gnustl_static would crash when run
1369  on Android platform releases older than 2.2.
1370
1371- &lt;android/input.h&gt;: Two functions in this header file, introduced
1372  by API level 9 (a.k.a. 2.3) were incorrect and have been fixed. While
1373  this breaks the source API, the binary interface to the system is
1374  unchanged.
1375
1376  The functions missing a third 'history_index' parameter. They correct
1377  definition is now:
1378
1379      float AMotionEvent_getHistoricalRawX(const AInputEvent* motion_event,
1380                                           size_t pointer_index,
1381                                           size_t history_index);
1382
1383      float AMotionEvent_getHistoricalRawY(const AInputEvent* motion_event,
1384                                           size_t pointer_index,
1385                                           size_t history_index);
1386
1387- Updated the android-9 C library arm binary to correctly expose at link time
1388  new functions that were added to it in Gingerbread (e.g. pthread_rwlock_init).
1389
1390- Fixed a bug that made gdbserver crash on misc. Honeycomb devices (e.g.
1391  the Motorola Xoom).
1392
1393OTHER FIXES &amp; CHANGES:
1394
1395- Object files are now always linked in the order they appear in
1396  LOCAL_SRC_FILES. This was not the case previously because the files
1397  were grouped by source extensions instead.
1398
1399- download-toolchain-sources.sh: Fixed a silly bug that prevented the
1400  --git-date option to work properly when downloading the master branch.
1401
1402- Fix an issue where a module could import itself, resulting in an infinite
1403  loop in GNU Make.
1404
1405- When import-module fails, it now prints the list of directories
1406  that were searched. This is useful to check that the NDK_MODULE_PATH
1407  definition used by the build system is correct.
1408
1409- When import-module succeeds, it now prints the directory where the module
1410  was found to the log (visible with NDK_LOG=1).
1411
1412- &lt;pthread.h&gt;: Fixed the definition of PTHREAD_RWLOCK_INITIALIZER for
1413  android-9 API level and higher.
1414
1415- Fixed a bug where LOCAL_ARM_NEON was defined to true would make the build
1416  fail (typo in build/core/build-binary.mk)
1417
1418- Fixed a bug that prevented the compilation of .s assembly files
1419  (.S files were ok).
1420
1421- Speed-up the build of debuggable applications when there is a very
1422  large number of include directories in a project.
1423
1424- ndk-gdb: Better detection of 'adb shell' failures (improves error messages).
1425
1426- ndk-build: Fix a rare bug that appeared when trying to perform parallel
1427  builds of debuggable projects.
1428
1429
1430-------------------------------------------------------------------------------
1431android-ndk-r5b
1432
1433This release fixes a few bugs in r5. There are no new features.
1434
1435IMPORTANT BUG FIXES:
1436
1437- Fix a compiler bug in the arm-linux-androideabi-4.4.3 toolchain.
1438  The previous binary generated invalid thumb instruction sequences when
1439  dealing with signed chars. This problem was first reported on the
1440  android-ndk forum and fixed by the following change in the toolchain
1441  sources:
1442
1443        https://review.source.android.com/#change,19474
1444
1445- docs/CPLUSPLUS-SUPPORT.html: Add missing documentation for the
1446  "gnustl_static" value for APP_STL, that allows you to link against
1447  a static library version of GNU libstdc++.
1448
1449- ndk-build: Fix a bug that created inconsistent dependency files when a
1450  compilation error occurred on Windows, preventing building properly after
1451  the error was fixed in the source code.
1452
1453- ndk-build: Fix a Cygwin-specific bug where using very short paths for
1454  the Android NDK installation or the project path could lead to the
1455  generation of invalid dependency files, making incremental builds
1456  impossible.
1457
1458- Fix a typo that prevented the cpufeatures library to work correctly
1459  with the new NDK toolchain.
1460
1461- Linux toolchain binaries now run on Ubuntu 8.04 or higher.
1462  More specifically, the r5 binaries did require GLibc 2.11 on the host
1463  system, and refused to run with previous releases due to an ABI mismatch
1464  in the GNU C Library. The r5b binaries are generated with a special
1465  toolchain that instead targets GLibc 2.7 or higher.
1466
1467- GNU libstdc++ will not crash anymore when printing floating-point values
1468  through i/o streams.
1469
1470OTHER FIXES &amp; CHANGES:
1471
1472- ndk-build: Speed-up the Cygwin build by avoiding calling "cygpath -m"
1473  from GNU Make for each and every source or object file. This was a problem
1474  for users with very large source trees.
1475
1476  In case this doesn't work properly, define NDK_USE_CYGPATH=1 in your
1477  environment to use 'cygpath -m' as usual.
1478
1479  Also, if 'cygpath' is not in your path, completely ignore it
1480  (seems to be enough to run the NDK under MSys).
1481
1482- ndk-build: Handle installation paths containing spaces when checking
1483  cygwin installation. Before that, the script complained that the user
1484  was using an incorrect version of GNU Make (even if he had the right one).
1485
1486- Fixed a typo that prevented several NDK_MODULE_PATH to work properly when
1487  it contained multiple directories separated with ":"
1488
1489- prebuilt-common.sh: Make the script check the compiler directly for 64-bit
1490  generated machine code, instead of relying on the host tag. That should
1491  allow the 32-bit toolchain to rebuild properly on Snow Leopard.
1492
1493- prebuilt-common.sh: Fix the toolchain rebuild scripts to work when
1494  using a 32-bit host toolchain.
1495
1496- &lt;netinet/in.h&gt;: Add missing declaration for INET_ADDRSTRLEN
1497- &lt;netinet/in6.h&gt;: Add missing declaration for IN6_IS_ADDR_MC_NODELOCAL
1498  and IN6_IS_ADDR_MC_GLOBAL.
1499
1500- &lt;asm/byteorder.&gt;: Replaced 'asm' with '__asm__' to allow compilation
1501  with -std=c99. See https://review.source.android.com/#change,20076
1502
1503- standalone toolchain: The -fpic flag is now the default for the
1504  arm-linux-androideabi toolchain, instead of -fPIC. This avoids a performance
1505  degradation when compared to the old android-eabi configuration.
1506
1507  This only affects users of the standalone toolchain. The NDK build script
1508  always enforced -fpic implicitly.
1509
1510-------------------------------------------------------------------------------
1511android-ndk-r5
1512
1513IMPORTANT BUG FIXES:
1514
1515- Allow dlclose() to properly call static C++ destructors when unloading
1516  a shared library. This requires changes in both the C library and the
1517  build system. IMPORTANT: This feature is only available for API level 9.
1518
1519- Fix packaging error for system libraries of level 5 and 8. The libraries
1520  bundled with the NDK and used at link time were not the correct version,
1521  and this prevented linking against certain symbols appropriately.
1522
1523- ndk-gdb: do not start activity unless --start or --launch is used.
1524  (the documentation was correct, the implementation wrong)
1525
1526- The system headers for all API levels have been cleaned up and will
1527  not provide the declarations of functions that are not available in
1528  the corresponding system libraries.
1529
1530IMPORTANT CHANGES:
1531
1532- Support for API level 9, (a.k.a. Android 2.3) which adds the following
1533  native features to the platform:
1534
1535     - Native audio API based on the Khronos Group OpenSL ES&#0153; 1.0.1 Standard.
1536       New headers &lt;SLES/OpenSLES.h&gt; and &lt;SLES/OpenSLES_Android.h&gt;
1537       are provided to allow applications targeting this API level to perform
1538       audio input, output and processing directly from native code.
1539
1540     - Native activity support, i.e. the ability to build applications that
1541       are coded entirely in C or C++. More precisely, such applications still
1542       run inside a VM, and will have to access most of the platform's features
1543       using JNI (i.e. native code calling VM methods). However, this also
1544       comes with a series of headers and libraries to implement the following
1545       directly from native code:
1546
1547          - activity lifecycle management.
1548          - user input handling (touch, keyboard, trackball, ...).
1549          - window management (including accessing the pixel buffer).
1550          - sensor listeners (e.g. accelerometer, compass, ...).
1551          - hardware configuration management.
1552          - easily reading assets out of an APK from native code.
1553          - access to the storage manager, a new feature of Android X.X
1554            that allows one to provide Opaque Binary Objects containing
1555            large amounts of data outside of the APK.
1556
1557       See the documentation in docs/STABLE-APIS.html for more details.
1558
1559       Note that most of these new features are targeted at game developers.
1560
1561- Improved gdbserver binary to allow debugging _threaded_ programs properly
1562  with ndk-gdb (the previous binary could only set breakpoints on the main
1563  thread).
1564
1565  IMPORTANT: THIS ONLY WORKS IF YOU RUN ON ANDROID 2.3 OR HIGHER.
1566
1567  The root cause of the problem is a platform bug that was only fixed in
1568  2.3. If you try to debug on a previous platform, the gdbserver binary
1569  will only be able to set breakpoints on the main thread.
1570
1571  For more information, see the specific section in docs/NDK-GDB.html.
1572
1573- Easier debuggable builds: just invoke ndk-build while defining the
1574  NDK_DEBUG variable to 1, as in:
1575
1576      $NDK/ndk-build NDK_DEBUG=1
1577
1578  This will have the same result that setting the android:debuggable="true"
1579  in the &lt;application&gt; element of your AndroidManifest.xml file. See the
1580  file docs/NDK-BUILD.html for more details.
1581
1582  Note that you will need to use the SDKr8 build tools to use this feature
1583  properly!
1584
1585- Refresh of system C++ headers:
1586
1587     - Headers have been moved out of the platform directory hierarchy.
1588       This is to prevent conflicts with other STLs like STLport or the
1589       GNU libstdc++ which provide their own version of the headers, but
1590       does not affect your builds.
1591
1592     - The list of headers has grown to include the following:
1593
1594            cassert, cctype, cerrno, cfloat, climits, cmath,
1595            csetjmp, csignal, cstddef, cstdint, cstdio, cstdlib,
1596            cstring, ctime, cwchar, new, typeinfo, utility
1597
1598    Note that they still correspond to our minimal C++ runtime, no new feature
1599    was introduced here.
1600
1601- Support for C++ exceptions and RTTI. See docs/CPLUSPLUS-SUPPORT.html for
1602  all details (and limitations).
1603
1604- STLport implementation: Add sources and prebuilt binaries for a port of
1605  the STLport C++ Standard Library (www.stlport.org), and an easy way to use
1606  it at build time by defining APP_STL in your Application.mk. See
1607  docs/APPLICATION-MK.html and docs/CPLUSPLUS-SUPPORT.html for all details.
1608
1609- GNU libstdc++ implementation: Available as a static library that you can
1610  select for your application through APP_STL. See docs/CPLUSPLUS-SUPPORT.html
1611  for all details.
1612
1613- Add support for prebuilt libraries with the PREBUILT_SHARED_LIBRARY and
1614  PREBUILT_STATIC_LIBRARIES build scripts. See the new documentation
1615  file named docs/PREBUILTS.html for explanations and usage examples.
1616
1617- Support for module exports: A module can now define a set of compiler or
1618  linker flags that will be automatically 'imported' by any other module that
1619  depends on it, through LOCAL_STATIC_LIBRARIES or LOCAL_SHARED_LIBRARIES.
1620
1621  This is achieved with the help of new Android.mk variables named
1622  LOCAL_EXPORT_CFLAGS, LOCAL_EXPORT_CPPFLAGS, LOCAL_EXPORT_C_INCLUDES and
1623  LOCAL_EXPORT_LDLIBS. See docs/ANDROID-MK.html for mode documentation, and
1624  a 'samples/module-exports' for a sample project that uses this.
1625
1626- Add support to specify a different file name for generated files, through
1627  the new LOCAL_MODULE_FILENAME variable. See docs/ANDROID-MK.html for an
1628  example.
1629
1630- Add support for module imports, through the NDK_MODULE_PATH environment
1631  variable and the new 'import-module' function. This allows you to avoid
1632  hard-coding the path of third-party modules into your project files.
1633
1634  See docs/IMPORT-MODULE.html for details.
1635
1636- Add the content of LOCAL_C_INCLUDES to gdb.setup to make native debugging
1637  easier. Also fixes an issue that prevented clean parallel builds of
1638  debuggable applications to work correctly. This fixes an error message that
1639  said:
1640
1641      /bin/sh: &lt;project&gt;/libs/armeabi/gdb.setup: No such file or directory
1642
1643  When doing a "ndk-build -j&lt;number&gt;", with &lt;number&gt; bigger than 1.
1644
1645- Add support for assembly-level source filtering. See the description of
1646  LOCAL_FILTER_ASM in docs/ANDROID-MK.html for more details. This can be useful
1647  for certain kinds of obfuscation tasks.
1648
1649- This NDK comes with a new toolchain (named arm-linux-androideabi-4.4.3)
1650  which provides many benefits, including:
1651
1652     - Better code generation than the previous one (gcc-4.4.0)
1653     - On Windows, the binaries do not depend on Cygwin anymore.
1654     - The ability to use it as a stand-alone cross-compiler
1655       (see docs/STANDALONE-TOOLCHAIN.html for all details).
1656
1657  The binaries for gcc-4.4.0 are still provided for backwards compatibility.
1658  Use NDK_TOOLCHAIN=arm-eabi-4.4.0 in your environment to force its usage.
1659  Note that it is now deprecated and will be removed in a future NDK release.
1660
1661  IMPORTANT: The old toolchain doesn't properly support exceptions, RTTI,
1662             STLport and GNU libstdc++.
1663
1664  The binaries for the already-deprecated gcc-4.2.1 have been removed.
1665
1666- The 'cpufeatures' library has been updated to provide better architecture
1667  and features detection (including a work-around for buggy ARMv6 kernels
1668  which report an architecture version of 7).
1669
1670  The library is now also available as an import module, to simplify its
1671  usage in your build scripts. See the updated docs/CPU-FEATURES.html file
1672  for details.
1673
1674  NOTE: Please update your Android.mk to use module imports as soon as
1675        possible. The location $NDK/source/cpufeatures/ is deprecated
1676        and will be removed in a future NDK release. Avoid referencing
1677        it directly in your build scripts!
1678
1679OTHER FIXES AND CHANGES:
1680
1681- Reduced the size of generated binaries by using --strip-unneeded
1682  instead of --strip-debug. This gets rid of mor symbol table entries
1683  in release shared libraries and executables, without impacting
1684  runtime execution.
1685
1686- Fix bad automatic dependency tracking when using multiple source
1687  sub-directories.
1688
1689- The path to system headers is now included last in the compilation command
1690  line. This prevents conflicts with source code that define their own headers
1691  with similar names (e.g. a custom "err.h" was ignored, because the system
1692  &lt;err.h&gt; was used instead).
1693
1694- Update documentation for 'my-dir' function to explain that, due to the
1695  way GNU Make works, it really returns the path of the last included
1696  Makefile (instead of the current one). Also provide examples on how
1697  to deal with it.
1698
1699- make-release.sh: Now has an --out-dir=&lt;path&gt; option to specify the
1700  output directory where the packages are going to be copied. Also
1701  ensure that generated packages have go+r permissions.
1702
1703- ndk-build will now properly escape arguments. This means that something
1704  like this:
1705
1706     ndk-build  MY_CFLAGS="-DFOO -DBAR"
1707
1708  will now work correctly.
1709
1710- Add --git-http option to download-toolchain-sources.sh and
1711  rebuild-all-prebuilt.sh in order to download sources from
1712  android.git.kernel.org through HTTP.
1713
1714- ndk-gdb: properly launch activities for which name does not contain any dot.
1715
1716- ndk-gdb: add --delay=&lt;timeout&gt; option to specify a delay in seconds
1717  between activity launch and gdbserver attach. This is needed because certain
1718  activities can take a long time to properly launch. The default delay is
1719  also increased to 2 seconds (instead of 1).
1720
1721- build/tools/build-gcc.sh: copy the sysroot to the build directory. This
1722  avoids the generated toolchain binaries from hard-coding host build paths.
1723
1724- Platform files are now under $NDK/platforms instead of $NDK/build/platforms
1725
1726- Toolchain files are now under $NDK/toolchains instead of
1727  $NDK/build/toolchains and $NDK/build/prebuilt.
1728
1729- Release and debug objects are stored under two different directories now
1730  (i.e. obj/local/&lt;abi&gt;/objs and obj/local/&lt;abi&gt;/objs-debug). This
1731  prevents rebuilding *everything* when you switch between these two modes,
1732  which can be a real time-saver for complex projects.
1733
1734- Fixed a bug that duplicated the LOCAL_LDFLAGS in the final link command
1735  when LOCAL_ALLOW_UNDEFINED_SYMBOLS was not set to 'true'
1736
1737-------------------------------------------------------------------------------
1738android-ndk-r4b
1739
1740This release fixes a few bugs in r4 scripts. There are no new features.
1741
1742OTHER FIXES &amp; CHANGES:
1743
1744- build/tools/rebuild-all-prebuilt.sh: mktemp expects 'XXXXXX' instead of 'XXX'.
1745  Fix the script (and others in the same directory) to do that properly.
1746
1747- ndk-gdb: check the target device's API level, and dump an error message if
1748  it is not at least 8 (Android 2.2 a.k.a. Froyo). Fix script to properly
1749  remove control characters like '\r' from adb shell's output. Also fix
1750  script to work properly with OS X's BSD awk.
1751
1752- ndk-build: Make AndroidManifest.xml optional. Now the build scripts will try
1753  to look for jni/Android.mk if no manifest is found. If you don't use this,
1754  you can also define NDK_PROJECT_PATH to point to your tree.
1755
1756  Also, on Windows, check that a Cygwin-compatible make executable is being
1757  used, and dump a readable help message to solve the issue if this is not
1758  the case.
1759
1760- Place generated binaries under $PROJECT_PATH/obj/ instead of
1761  $PROJECT_PATH/bin/ndk/. The 'bin' directory is sometimes cleaned
1762  by the JDT, resulting in the inability to properly load symbol versions
1763  of the shared libraries when running ndk-gdb.
1764
1765- Warn when sources with unsupported extensions are used in LOCAL_SRC_FILES.
1766  Previous behaviour was to silently ignore them.
1767
1768- Set the optimization mode to 'debug' automatically if the manifest sets
1769  android:debuggable to 'true'. You can override this by using
1770  'APP_OPTIM := release' in your Application.mk, or by adding '-O2' to
1771  your LOCAL_CFLAGS.
1772
1773  Note that even in release mode, the NDK build scripts will produce
1774  binaries with symbols under obj/local/&lt;abi&gt;/ that will be used for
1775  debugging with gdb. However, the debugger will have a harder time to
1776  print proper local variable values that have been optimized out or
1777  even set breakpoints properly.
1778
1779-------------------------------------------------------------------------------
1780android-ndk-r4
1781
1782IMPORTANT BUG FIXES:
1783
1784- The &lt;fenv.h&gt; header was not placed in the correct location and could not
1785  be found by normal builds.
1786
1787IMPORTANT CHANGES:
1788
1789- On Windows, Cygwin 1.7 or higher is now required. The NDK will not
1790  work properly with Cygwin 1.5 which is now officially obsolete
1791  anyway.
1792
1793- Simplified build system: You no longer need to run build/host-setup.sh
1794  or modify anything under $NDK_ROOT/apps/. Instead, just invoke the
1795  new 'ndk-build' script from your application's project directory, or
1796  one of its sub-directories.
1797
1798  See docs/OVERVIEW.html and docs/NDK-BUILD.html for more details.
1799
1800  NOTE: For compatibility purpose, you can still define projects
1801        through $NDK_ROOT/apps/&lt;name&gt; though.
1802
1803        However, not that sample applications have moved from
1804        'apps/&lt;name&gt;/project' to 'samples/&lt;name&gt;' and now must
1805        be built with 'ndk-build'. The source code of pre-existing
1806        samples didn't change though.
1807
1808- Easy native debugging support when running debuggable applications
1809  on Android 2.2 or higher, through the new 'ndk-gdb' helper script.
1810  See docs/NDK-GDB.html for details.
1811
1812- Support for hardware FPU. This is through the new 'armeabi-v7a' ABI
1813  corresponding to ARMv7-a class devices.
1814
1815  Note that by default, the NDK will still generate machine code for the old
1816  'armeabi' ABI (ARMv5TE based) which is supported by all official Android
1817  system images to date.
1818
1819  You will need to define APP_ABI in your Application.mk file to change this.
1820  See docs/APPLICATION-MK.html
1821
1822  More details about ABIs is now available in docs/CPU-ARCH-ABIS.html
1823
1824- A small static library named 'cpufeatures' is provided with source code
1825  and can be used at runtime to determine the CPU features supported by the
1826  target device. It should run on all Android platforms, starting from 1.5.
1827
1828  For more information, see docs/CPU-FEATURES.html
1829
1830- Support for the optional ARM Advanced SIMD (a.k.a. NEON) instruction set
1831  extension through the use the LOCAL_ARM_NEON variable in Android.mk, or
1832  the '.neon' suffix when listing source files.
1833
1834  Neon is an *optional* instruction set extension, and not all Android ARMv7
1835  devices will support it. You will need to use the 'cpufeatures' library to
1836  determine if such code can be used at runtime, and provide alternate code
1837  paths if this is not the case. This is similar to MMX/SSE/3DNow on x86
1838  platforms.
1839
1840  For more information, see docs/CPU-ARM-NEON.html
1841
1842- Added a new sample (hello-neon) to demonstrate usage of 'cpufeatures'
1843  and NEON intrinsics and build support.
1844
1845- Added &lt;android/bitmap.h&gt;, a new stable API available from android-8
1846  (a.k.a. Android 2.2) to reliably access the pixel buffer of an
1847  android.graphics.Bitmap object from native code. See docs/STABLE-API.html
1848  and the new sample program under 'samples/bitmap-plasma' for details
1849  and usage example.
1850
1851- Support the NX (No Execute) security feature, where special sections
1852  are added to the generated shared libraries to instruct the kernel
1853  that code shall not be executed from the heap and stack by default.
1854
1855  See docs/ANDROID-MK.html to see how to disable this, plus reference
1856  links for more information.
1857
1858OTHER FIXES AND CHANGES:
1859
1860- support the .s extension for raw assembly sources (.S is already supported
1861  but the input files are parsed by the C-preprocessor before being sent to
1862  the assembler).
1863
1864- build/host-setup.sh has been removed. There is no need for a 'setup' step
1865  when using the NDK for the first time. All host-specific autodetection and
1866  basic tool sanity checking have been moved to the build scripts themselves.
1867
1868- APP_MODULES in Application.mk is now optional. If not defined, the NDK
1869  will simply build _all_ the modules that are declared from your Android.mk.
1870
1871  You can still use APP_MODULES to restrict the set of modules you want to
1872  build. Note that the NDK now computes the transitive dependencies of these
1873  modules for you now. See docs/APPLICATION-MK.html for details.
1874
1875- docs/STABLE-APIS.html: Add missing section for Dynamic Linker Library
1876  (libdl.so). It is actually supported by all API levels.
1877
1878- build/tools/download-toolchain-sources.sh: Use 'master' branch by default
1879  instead of the 'eclair' one.
1880
1881- build-toolchain.sh: Allow ad-hoc patching of toolchain sources when rebuilding
1882  them. This is primarily to ease development. All you need to do is put a patch
1883  under build/tools/toolchain-patches/&lt;foo&gt;/&lt;name&gt;.patch, and it will be applied
1884  with 'patch -p1' into the &lt;foo&gt; directory of the unpacked toolchain sources
1885  before the configure step.
1886
1887- docs/CPU-ARCH-ABIS.html: Mention the experimental 'x86' ABI.
1888
1889- build/core/mkdeps.sh: Removed obsolete script.
1890
1891- the NDK build script now only parses the Application.mk and Android.mk of
1892  the applications listed by APP. The error messages when APP is empty or
1893  malformed have also been improved.
1894
1895- removed the annoying 'the mangling of 'va_list' has changed in GCC 4.4'
1896  warning when building with GCC 4.4.0 for ARM.
1897
1898- C Library header fixes:
1899
1900    For all platforms:
1901
1902        - &lt;arpa/inet.h&gt;: no longer includes &lt;netinet/in6.h&gt;.
1903        - &lt;ctype.h&gt;: better inlining with -ansi option.
1904        - &lt;mntent.h&gt;: add missing include for &lt;stdio.h&gt;.
1905        - &lt;netinet/in.h&gt;: include &lt;netinet/in6.h&gt; and define in6addr_any +
1906          in6addr_loopback.
1907        - &lt;netinet/in6.h&gt;: add IPV6_JOIN_GROUP, IPV6_LEAVE_GROUP,
1908          IN6ADDR_ANY_INIT, ipv6mr_interface.
1909        - &lt;sys/epoll.h&gt;: add missing C++ inclusion guards.
1910        - &lt;sys/resource.h&gt;: add missing rlim_t declaration.
1911        - &lt;sys/system_properties.h&gt;: add missing C++ inclusion guards.
1912        - &lt;time64.h&gt;: add missing C++ inclusion guards.
1913        - &lt;netdb.h&gt;: move h_errno declaration inside C++ inclusion guards.
1914
1915- C Library changes:
1916
1917    For android-8 (a.k.a. Android 2.2):
1918
1919        - &lt;dlfcn.h&gt;: add DL_info and dladdr().
1920        - &lt;err.h&gt;: add err(), warn() and other variants.
1921        - &lt;regex.h&gt;, &lt;fts.h&gt;, &lt;sys/queue.h&gt;: added
1922        - &lt;pthread.h&gt;: add pthread_condattr_t
1923        - &lt;sched.h&gt;: added proper clone() declaration (and implementation).
1924        - &lt;signal.h&gt;: added killpg().
1925        - &lt;stdio.h&gt;: add fdprintf() and vfdprintf().
1926        - &lt;stdlib.h&gt;: fix ptsname_r() signature in declaration. previous
1927          implementation was broken anyway.
1928        - &lt;unistd.h&gt;: add getusershell(), setusershell(), endusershell(),
1929          ttyname(), ttyname_r(), TEMP_FAILURE_RETRY. Fix usleep() signature
1930          (now returns int).
1931        - &lt;wchar.h&gt;: add fake mbstowcs() and wcstombs().
1932
1933  More details available under docs/system/libc/CHANGES.html
1934
1935-------------------------------------------------------------------------------
1936android-ndk-r3
1937
1938IMPORTANT BUG FIXES:
1939
1940- Fix build/host-setup.sh to execute as a Bourne shell script (again)
1941
1942- Make target shared libraries portable to systems that don't use the exact
1943  same toolchain. This is needed due to differences in libgcc.a implementations
1944  between gcc 4.2.1 and 4.4.0. This change ensures that generated machine
1945  code doesn't depend on helper functions provided by the Android platform
1946  runtime.
1947
1948
1949IMPORTANT CHANGES:
1950
1951- GCC 4.4.0 is now used by default by the NDK. It generates better code than
1952  GCC 4.2.1, which was used in previous releases. However, the compiler's C++
1953  frontend is also a lot more pedantic regarding certain template constructs
1954  and will even refuse to build some of them.
1955
1956  For this reason, the NDK also comes with GCC 4.2.1 prebuilt binaries, and
1957  you can force its usage by defining NDK_TOOLCHAIN in your environment to
1958  the value 'arm-eabi-4.2.1'. For example:
1959
1960        export NDK_TOOLCHAIN=arm-eabi-4.2.1
1961        make APP=hello-jni
1962
1963  Note that only the 'armeabi' ABI is supported by the 4.2.1 toolchain. We
1964  recommend switching to 4.2.1 *only* if you encounter compilation problems
1965  with 4.4.0.
1966
1967  The 4.2.1 prebuilt binaries will probably be removed from a future release
1968  of the Android NDK, we thus *strongly* invite you to fix your code if such
1969  problems happen.
1970
1971- Support for OpenGL ES 2.0. This is through the new 'android-5' platform to
1972  reflect Android 2.0 (previously the Eclair branch). This is merely a copy
1973  of android-4 that also includes headers and libraries for OpenGL ES 2.0.
1974
1975  See the sample named "hello-gl2" for a *very* basic demonstration. Note that
1976  OpenGL ES 2.0 is currently *not* available from Java, and must be used
1977  through native code exclusively.
1978
1979  IMPORTANT: OpenGL ES 2.0 is not supported in the Android emulator at this
1980             time. Running/testing any native code that depends on it thus
1981             requires a real device.
1982
1983- The NDK build script will now remove installed binaries from the application
1984  project's path before starting the build. This ensures that:
1985
1986  - if the build fails for some reason, a stale/obsolete file is not left in
1987    your application project tree by mistake.
1988
1989  - if you change the target ABI, a stale/obsolete file is not left into the
1990    folder corresponding to the old ABI.
1991
1992
1993- Updated the STABLE-APIS.html document to clarify the OpenGL ES 1.0/1.1/2.0
1994  issues regarding specific devices (i.e. 1.0 supported everywhere, 1.1 and
1995  2.0 on specific devices only, need for &lt;uses-feature&gt; tag in manifest).
1996
1997
1998OTHER FIXES AND CHANGES:
1999
2000- Actually use the awk version detected by host-setup.sh during the build.
2001
2002- Only allow undefined symbols when LOCAL_ALLOW_UNDEFINED_SYMBOLS is set
2003  to 'true', just like the documentation says it works. Also fix a typo
2004  in CLEAR_VARS that prevented this variable from being cleared properly.
2005
2006- Simplified build/tools/make-release.sh, the --prebuilt-dir option is
2007  gone, and --help will dump a clearer description of expected options
2008  and input files.
2009
2010- Added --prebuilt-ndk=FILE option to build/tools/make-release.sh script to
2011  package a new experimental NDK package archive from the current source tree
2012  plus the toolchain binaries of an existing NDK release package. E.g.:
2013
2014    build/tools/make-release.sh \
2015       --prebuilt-ndk=/path/to/android-ndk-1.6_r1-linux-x86.zip
2016
2017  will generate a new NDK package in /tmp/ndk-release that contains the most
2018  up-to-date build scripts, plus the toolchain binaries from 1.6_r1 (which
2019  are not in the git repository).
2020
2021  Also added the --no-git option to collect all sources from the current
2022  NDK root directory, instead of the list given by 'git ls-files'. This can
2023  be useful if you don't want to checkout the whole 'platform/development'
2024  project from repo and still work on the NDK.
2025
2026  This change is to help people easily package experimental NDK releases to
2027  test and distribute fixes and improvements.
2028
2029- Remove bash-isms from build/tools/build-toolchain.sh. Now it's possible to
2030  build it with the 'dash' shell on Debian-based systems (tested on Ubuntu 8.04)
2031
2032- Remove bash-ism from build/tools/build-ndk-sysroot.sh
2033
2034- Refresh C library headers for all platforms:
2035
2036    - make &lt;endian.h&gt; simply include &lt;sys/endian.h&gt;
2037    - make &lt;stdint.h&gt; properly declare 64-bit integer types with a C99 compiler
2038    - add missing &lt;sys/types.h&gt; to &lt;strings.h&gt;
2039    - add GLibc-compatible macro aliases (st_atimensec, st_mtimensec and
2040      st_ctimensec) to &lt;stat.h&gt;
2041    - add missing declaration for tzset() in &lt;time.h&gt;
2042
2043- Added build/tools/download-toolchain-sources.sh, a script that allows you
2044  to download the toolchain sources from the official open-source repository
2045  at android.git.kernel.org and nicely package them into a tarball that can
2046  later be used by build/tools/build-toolchain.sh to rebuild the prebuilt
2047  binaries for your system.
2048
2049- Updated build/tools/build-toolchain.sh to support the tarballs generated
2050  by download-toolchain-sources.sh with the --package=&lt;file&gt; option. This
2051  also builds both gcc 4.2.1 and 4.4.0, adding support for armeabi-v7a to
2052  gcc 4.4.0.
2053
2054-------------------------------------------------------------------------------
2055android-ndk-1.6_r1
2056
2057IMPORTANT BUG FIXES:
2058
2059- Fix build/host-setup.sh to:
2060  * execute as a Bourne shell script
2061  * remove unused host gcc dependency
2062  * improve Windows host auto-detection
2063  * add GNU Make version check
2064  * add Nawk/Gawk check
2065  * ensure that the script is run from $NDKROOT as build/host-setup.sh
2066  * add --help, --verbose, --no-awk-check and --no-make-check options
2067
2068- Properly add sysroot library search path at build time. This makes a line
2069  in Android.mk like:
2070
2071     LOCAL_LDLIBS := -lz
2072
2073  Actually work correctly, instead of having the linker complaining that it
2074  could not find the corresponding libz.so library. Also clear LOCAL_LDLIBS
2075  in $(CLEAR_VARS) script.
2076
2077
2078IMPORTANT CHANGES:
2079
2080- The 'sources' directory is gone. The NDK build system now looks for
2081  $(APP_PROJECT_PATH)/jni/Android.mk by default. You can override this with
2082  the new APP_BUILD_SCRIPT variable in Application.mk
2083
2084  For example, the 'hello-jni' sample uses the following files:
2085
2086    apps/hello-jni/project/jni/Android.mk
2087    apps/hello-jni/project/jni/hello-jni.c
2088
2089  The 'apps/&lt;name&gt;' directory is still needed in this release though.
2090
2091- Change LOCAL_CFLAGS / LOCAL_CPPFLAGS to work as in the full Android build
2092  system. This means that:
2093
2094    - LOCAL_CFLAGS   is now used for *both* C and C++ sources  (was only for C)
2095    - LOCAL_CPPFLAGS is now used for C++ sources only (was for both C and C++)
2096    - LOCAL_CXXFLAGS is used like LOCAL_CPPFLAGS but is considered obsolete.
2097      (will disappear in next release)
2098
2099  Also fixed APP_CPPFLAGS / APP_CFLAGS / APP_CXXFLAGS correspondingly.
2100
2101- Rename build/platforms/android-1.5 to build/platforms/android-3 to match
2102  the Android API level instead of the marketing speak.
2103
2104  Also add a new build/platforms/android-4, and make the build system select
2105  which platform to use based on the content of the project file named
2106  $(APP_PROJECT_PATH)/default.properties.
2107
2108- Add OpenGL ES 1.x headers and libraries to the android-4 stable APIs.
2109  (NOTE: they are *not* available for android-3)
2110
2111  Also provide a small port of the "San Angeles Observation" demo to show
2112  how to make a simple Android application that uses them.
2113
2114
2115OTHER FIXES AND CHANGES
2116
2117- Ensure that the __ANDROID__ macro is always defined when building code
2118  with the NDK. Normally, the macro must be defined by the toolchain
2119  automatically to indicate that you're targeting the Android runtime.
2120
2121  This works for the new arm-linux-androideabi toolchain, but there is
2122  a bug in the way we built the arm-eabi one, so add the flag manually
2123  through the NDK build script for it.
2124
2125  Note that the ANDROID macro, is now deprecated. While it is still defined
2126  by the NDK, you should modify your code to test against __ANDROID__ instead!
2127
2128- Generate thumb binaries by default.
2129
2130- Add support for LOCAL_ARM_MODE in Android.mk.
2131
2132- Add support for the '.arm' suffix in source file names to force the
2133  compilation of a single source in ARM (32-bit) mode.
2134
2135- Generate proper unoptimized versions of binaries when APP_OPTIM := debug
2136
2137- Add support for LOCAL_C_INCLUDES in Android.mk
2138
2139- Fix compilation of assembler files (e.g. foo.S)
2140
2141-------------------------------------------------------------------------------
2142android-ndk-1.5_r1 released.
2143</pre></body></html>
2144