diff options
author | David 'Digit' Turner <digit@google.com> | 2010-05-14 12:16:22 -0700 |
---|---|---|
committer | David 'Digit' Turner <digit@google.com> | 2010-05-14 12:20:51 -0700 |
commit | eae38344a15b28c9a6f5c77b7c326776af06aad7 (patch) | |
tree | 9b08f2950ccabac2ee7c3440acf249b92ad8e5c8 /docs | |
parent | 1e2d5412dd2ff828508ab6fb505b213647a46bd3 (diff) | |
download | ndk-eae38344a15b28c9a6f5c77b7c326776af06aad7.tar.gz |
Fix C headers for all platforms.
See docs/CHANGES.TXT for a detailed list of changes. These are mainly cosmetic
and to reflect new declarations for android-8.
Change-Id: I152dcee6ae6b1fd9368fe5d468443dd9fee459db
Diffstat (limited to 'docs')
-rw-r--r-- | docs/CHANGES.TXT | 37 | ||||
-rw-r--r-- | docs/system/libc/CHANGES.TXT | 174 |
2 files changed, 211 insertions, 0 deletions
diff --git a/docs/CHANGES.TXT b/docs/CHANGES.TXT index 84e1d3473..dc46b6ca0 100644 --- a/docs/CHANGES.TXT +++ b/docs/CHANGES.TXT @@ -119,6 +119,43 @@ OTHER FIXES & CHANGES: - removed the annoying 'the mangling of 'va_list' has changed in GCC 4.4' warning when building with GCC 4.4.0 for ARM. +- C Library header fixes: + + For all platforms: + + - <arpa/inet.h>: no longer includes <netinet/in6.h>. + - <ctype.h>: better inlining with -ansi option. + - <mntent.h>: add missing include for <stdio.h>. + - <netinet/in.h>: include <netinet/in6.h> and define in6addr_any + + in6addr_loopback. + - <netinet/in6.h>: add IPV6_JOIN_GROUP, IPV6_LEAVE_GROUP, + IN6ADDR_ANY_INIT, ipv6mr_interface. + - <sys/epoll.h>: add missing C++ inclusion guards. + - <sys/resource.h>: add missing rlim_t declaration. + - <sys/system_properties.h>: add missing C++ inclusion guards. + - <time64.h>: add missing C++ inclusion guards. + - <netdb.h>: move h_errno declaration inside C++ inclusion guards. + +- C Library changes: + + For android-8 (a.k.a. Android 2.2): + + - <dlfcn.h>: add DL_info and dladdr(). + - <err.h>: add err(), warn() and other variants. + - <regex.h>, <fts.h>, <sys/queue.h>: added + - <pthread.h>: add pthread_condattr_t + - <sched.h>: added proper clone() declaration (and implementation). + - <signal.h>: added killpg(). + - <stdio.h>: add fdprintf() and vfdprintf(). + - <stdlib.h>: fix ptsname_r() signature in declaration. previous + implementation was broken anyway. + - <unistd.h>: add getusershell(), setusershell(), endusershell(), + ttyname(), ttyname_r(), TEMP_FAILURE_RETRY. Fix usleep() signature + (now returns int). + - <wchar.h>: add fake mbstowcs() and wcstombs(). + + More details available under docs/system/libc/CHANGES.TXT + ------------------------------------------------------------------------------- android-ndk-r3 diff --git a/docs/system/libc/CHANGES.TXT b/docs/system/libc/CHANGES.TXT new file mode 100644 index 000000000..90806851a --- /dev/null +++ b/docs/system/libc/CHANGES.TXT @@ -0,0 +1,174 @@ +Bionic ChangeLog: +----------------- + +Differences between current and Android 2.1: + +- Add support for SH-4 CPU architecture ! + +- __atomic_swap(): use LDREX/STREX CPU instructions on ARMv6 and higher. + +- <arpa/telnet.h>: New header (declarations only, no implementation). + +- <err.h>: New header + implementation. GLibc compatibility. + +- <warn.h>: New header + implementation. GLibc compatibility. + +- <fts.h>: New header + implementation. + +- <mntent.h>: Add missing <stdio.h> include. + +- <regex.h>: New header + implementation. + +- <signal.h>: Added killpg() + +- <stdint.h>: Allow 64-bit type declarations on C99 builds. + +- <stdio.h>: Add fdprintf() and vfdprintf(). Note that GLibc provides + the confusing 'dprintf' and 'vdprintf()' functions instead. + +- <stdlib.h>: Fix ptsname_r(): the return type is int instead of char*. + The mistake comes from a GLibc man page bug (the man page listed a return + type of char*, while the implementation used int. Fixed in late 2009 only). + The Bionic implementation was incorrect. Technically, this is an ABI + breakage, but code that used this function probably never worked or + compiled properly anyway. + +- <strings.h>: Add missing <sys/types.h> include. + +- <sys/queue.h>: Added new header (no implementation - macro templates). + +- <sys/resource.h>: Add rlim_t proper definition. + +- <time64.h>: Add missing C++ header inclusion guards. + +- <unistd.h>: Add getusershell(), setusershell() and endusershell(), though + implementation are bogus. GLibc compatibility. + +- <wchar.h>: Add mbstowcs() and wcstombs() + +- add clone() implementation for ARM (x86 and SH-4 not working yet). + +- <sys/epoll.h>: <sys/system_properties.h>: Add missing C++ inclusion guards + +- fix getpwnam() and getpwgrp() to accept "app_0" as a valid user name. + +- fix sem_trywait() to return -1 and set errno to EAGAIN, instead of + returning EAGAIN directly. + +- fix sem_post() to wake up multiple threads when called rapidly in + succession. + +- DNS: partial implementation of RFC3484 (rule 1, 2, 5, 6, 8, 10 and + modified rule 9), for better address selection/sorting. + In the process, removed code that was previously used for "sortlist" + in /etc/resolv.conf. (resolv.conf is already ignored, so the latter + is a no-op for actual functionality.) + +- fix pthread_sigmask() to properly return an error code without touching + errno. Previous implementation returned -1 on error, setting errno, which + is not Posix compliant. + +- add sigaltstack() implementation for ARM. + +- <time.h>: Properly implement the 'timezone' and 'daylight' global variables + (they were not defined previously, though declared in the header). + +- <time.h>: Fix timezone management implementation to properly update + 'tm_gmtoff' field in 'struct tm' structure. + +- DNS: get rid of spurious random DNS queries when trying to resolve + an unknown domain name. Due to an initialization bug, a random DNS search + list was generated for each thread if net.dns.search is not defined. + +- <pthread.h>: Add pthread_condattr_init/destroy/setpshared/getpshared functions + to enable proper shared conditional variable initialization. + + Modify the pthread_mutex_t and pthread_cond_t implementation to use private + futexes for performance reasons. Mutexes and Condvars are no longer shareable + between processes by default anymore, unless you use PTHREAD_PROCESS_SHARED + with pthread_mutexattr_setpshared() and/or pthread_condattr_setpshared(). + +------------------------------------------------------------------------------- +Differences between Android 2.1 and 2.0.1: + +- zoneinfo: updated data tables to version 2009s + + +------------------------------------------------------------------------------- +Differences between Android 2.0.1 and 2.0: + +- abort(): ARM-specific hack to preserve the 'lr' register when abort() + is called (GCC does not preserve it by default since it thinks that + abort() never returns). This improves stack traces considerably. + + +------------------------------------------------------------------------------- +Differences between Android 2.0 and 1.6: + +- memcmp(), memcpy(): ARMv7 optimized versions. + +- pthread_mutexattr_setpshared(): implementation will not return ENOTSUP + if PTHREAD_PROCESS_SHARED is used, because our Mutex implementation can + work across multiple processes. + + *HOWEVER* it does not use "robust futexes" which means that held mutexes + *are not* automatically released by the kernel when the owner process + crashes or exits. This is only done to simplify communication between + two always-live system processes, DO NOT USE THIS IN APPLICATIONS ! + +- pthread_mutex_lock_timeout_np(): New Android-specific function to + perform a timed lock (). In case of timeout, it returns EBUSY. + +- pthread_cond_timedwait_monotonic_np(): Same as pthread_cond_timedwait() + but uses the monotonic clock(). Android-specific. + +- pthread_cond_timedwait_relative_np(): Same as pthread_cond_timedwait() + but uses a relative timeout instead. Android-specific. + +- <netinet/in.h>: Now includes <netinet/in6.h>. + +- <netinet/in6.h>: Added IPV6_JOIN_GROUP, IPV6_LEAVE_GROUP, IN6ADDR_ANY_INIT + and ipv6mr_interface definitions. + +- <time.h>: + * Add missing tzset() declaration. + * Add Android-specific strftime_tz(). + +- getaddrinfo(): + Only perform IPv6 lookup for AF_UNSPEC if we have IPv6 connectivity. + This saves one DNS query per lookup on non-IPv6 systems. + +- mktime(): Fix an infinite loop problen that appeared when switching to + GCC 4.4.0. + +- strftime(): fix incorrect handling of dates > 2038 due to 64-bit issue + in original code. + +------------------------------------------------------------------------------- +Differences between Android 1.6 and 1.5: + +- C runtime: Fix runtime initialization to be called before any static C++ + constructors. This allows these to use pthread functions properly. + +- __aeabi_atexit(): Fix implementation to properly call C++ static destructors + when the program exits (or when a shared library is unloaded). + +- <sys/stat.h>: added GLibc compatibility macros definitions: + + #define st_atimensec st_atime_nsec + #define st_mtimensec st_mtime_nsec + #define st_ctimensec st_ctime_nsec + +- getaddrinfo(): implementation will now allow numeric ports if ai_socktype is + set to ANY. This is to match the GLibc behaviour. + +- getservent(): and getservent_r() incorrectly returned the port in host-endian + order in the s_port field. It now returns it in big-endian order. + +- DNS: Allow underscore in the middle of DNS labels. While not really + standard, this extension is needed for some VPN configurations and is + supported by other operating systems. + +- DNS: Support for DNS domain search lists through the new net.dns.search + system property. The corresponding value must be a space-separated list of + domain suffixes. |