David 'Digit' Turner | d6bf8f9 | 2010-01-21 15:03:26 -0800 | [diff] [blame] | 1 | Bionic ChangeLog: |
| 2 | ----------------- |
| 3 | |
| 4 | Differences between current and Android 2.1: |
| 5 | |
| 6 | - Add support for SH-4 CPU architecture ! |
| 7 | |
| 8 | - __atomic_swap(): use LDREX/STREX CPU instructions on ARMv6 and higher. |
| 9 | |
| 10 | - <arpa/telnet.h>: New header (declarations only, no implementation). |
| 11 | |
| 12 | - <err.h>: New header + implementation. GLibc compatibility. |
| 13 | |
| 14 | - <warn.h>: New header + implementation. GLibc compatibility. |
| 15 | |
| 16 | - <fts.h>: New header + implementation. |
| 17 | |
| 18 | - <mntent.h>: Add missing <stdio.h> include. |
| 19 | |
| 20 | - <regex.h>: New header + implementation. |
| 21 | |
| 22 | - <signal.h>: Added killpg() |
| 23 | |
| 24 | - <stdint.h>: Allow 64-bit type declarations on C99 builds. |
| 25 | |
| 26 | - <stdio.h>: Add fdprintf() and vfdprintf(). Note that GLibc provides |
| 27 | the confusing 'dprintf' and 'vdprintf()' functions instead. |
| 28 | |
| 29 | - <stdlib.h>: Fix ptsname_r(): the return type is int instead of char*. |
| 30 | The mistake comes from a GLibc man page bug (the man page listed a return |
| 31 | type of char*, while the implementation used int. Fixed in late 2009 only). |
| 32 | The Bionic implementation was incorrect. Technically, this is an ABI |
| 33 | breakage, but code that used this function probably never worked or |
| 34 | compiled properly anyway. |
| 35 | |
| 36 | - <strings.h>: Add missing <sys/types.h> include. |
| 37 | |
| 38 | - <sys/queue.h>: Added new header (no implementation - macro templates). |
| 39 | |
| 40 | - <sys/resource.h>: Add rlim_t proper definition. |
| 41 | |
| 42 | - <time64.h>: Add missing C++ header inclusion guards. |
| 43 | |
| 44 | - <unistd.h>: Add getusershell(), setusershell() and endusershell(), though |
| 45 | implementation are bogus. GLibc compatibility. |
| 46 | |
| 47 | - <wchar.h>: Add mbstowcs() and wcstombs() |
| 48 | |
David 'Digit' Turner | 294dd0b | 2010-02-12 12:18:37 -0800 | [diff] [blame^] | 49 | - add clone() implementation for ARM (x86 and SH-4 not working yet). |
| 50 | |
| 51 | - <sys/epoll.h>: <sys/system_properties.h>: Add missing C++ inclusion guards |
| 52 | |
| 53 | - fix getpwnam() and getpwgrp() to accept "app_0" as a valid user name. |
| 54 | |
| 55 | - fix sem_trywait() to return -1 and set errno to EAGAIN, instead of |
| 56 | returning EAGAIN directly. |
David 'Digit' Turner | d6bf8f9 | 2010-01-21 15:03:26 -0800 | [diff] [blame] | 57 | |
| 58 | ------------------------------------------------------------------------------- |
| 59 | Differences between Android 2.1 and 2.0.1: |
| 60 | |
| 61 | - zoneinfo: updated data tables to version 2009s |
| 62 | |
| 63 | |
| 64 | ------------------------------------------------------------------------------- |
| 65 | Differences between Android 2.0.1 and 2.0: |
| 66 | |
| 67 | - abort(): ARM-specific hack to preserve the 'lr' register when abort() |
| 68 | is called (GCC does not preserve it by default since it thinks that |
| 69 | abort() never returns). This improves stack traces considerably. |
| 70 | |
| 71 | |
| 72 | ------------------------------------------------------------------------------- |
| 73 | Differences between Android 2.0 and 1.6: |
| 74 | |
| 75 | - memcmp(), memcpy(): ARMv7 optimized versions. |
| 76 | |
| 77 | - pthread_mutexattr_setpshared(): implementation will not return ENOTSUP |
| 78 | if PTHREAD_PROCESS_SHARED is used, because our Mutex implementation can |
| 79 | work across multiple processes. |
| 80 | |
| 81 | *HOWEVER* it does not use "robust futexes" which means that held mutexes |
| 82 | *are not* automatically released by the kernel when the owner process |
| 83 | crashes or exits. This is only done to simplify communication between |
| 84 | two always-live system processes, DO NOT USE THIS IN APPLICATIONS ! |
| 85 | |
| 86 | - pthread_mutex_lock_timeout_np(): New Android-specific function to |
| 87 | perform a timed lock (). In case of timeout, it returns EBUSY. |
| 88 | |
| 89 | - pthread_cond_timedwait_monotonic_np(): Same as pthread_cond_timedwait() |
| 90 | but uses the monotonic clock(). Android-specific. |
| 91 | |
| 92 | - pthread_cond_timedwait_relative_np(): Same as pthread_cond_timedwait() |
| 93 | but uses a relative timeout instead. Android-specific. |
| 94 | |
| 95 | - <netinet/in.h>: Now includes <netinet/in6.h>. |
| 96 | |
| 97 | - <netinet/in6.h>: Added IPV6_JOIN_GROUP, IPV6_LEAVE_GROUP, IN6ADDR_ANY_INIT |
| 98 | and ipv6mr_interface definitions. |
| 99 | |
| 100 | - <time.h>: |
| 101 | * Add missing tzset() declaration. |
| 102 | * Add Android-specific strftime_tz(). |
| 103 | |
| 104 | - getaddrinfo(): |
| 105 | Only perform IPv6 lookup for AF_UNSPEC if we have IPv6 connectivity. |
| 106 | This saves one DNS query per lookup on non-IPv6 systems. |
| 107 | |
| 108 | - mktime(): Fix an infinite loop problen that appeared when switching to |
| 109 | GCC 4.4.0. |
| 110 | |
| 111 | - strftime(): fix incorrect handling of dates > 2038 due to 64-bit issue |
| 112 | in original code. |
| 113 | |
| 114 | ------------------------------------------------------------------------------- |
| 115 | Differences between Android 1.6 and 1.5: |
| 116 | |
| 117 | - C runtime: Fix runtime initialization to be called before any static C++ |
| 118 | constructors. This allows these to use pthread functions properly. |
| 119 | |
| 120 | - __aeabi_atexit(): Fix implementation to properly call C++ static destructors |
| 121 | when the program exits (or when a shared library is unloaded). |
| 122 | |
| 123 | - <sys/stat.h>: added GLibc compatibility macros definitions: |
| 124 | |
| 125 | #define st_atimensec st_atime_nsec |
| 126 | #define st_mtimensec st_mtime_nsec |
| 127 | #define st_ctimensec st_ctime_nsec |
| 128 | |
| 129 | - getaddrinfo(): implementation will now allow numeric ports if ai_socktype is |
| 130 | set to ANY. This is to match the GLibc behaviour. |
| 131 | |
| 132 | - getservent(): and getservent_r() incorrectly returned the port in host-endian |
| 133 | order in the s_port field. It now returns it in big-endian order. |
| 134 | |
| 135 | - DNS: Allow underscore in the middle of DNS labels. While not really |
| 136 | standard, this extension is needed for some VPN configurations and is |
| 137 | supported by other operating systems. |
| 138 | |
| 139 | - DNS: Support for DNS domain search lists through the new net.dns.search |
| 140 | system property. The corresponding value must be a space-separated list of |
| 141 | domain suffixes. |