summaryrefslogtreecommitdiffstats
path: root/libc
Commit message (Collapse)AuthorAgeFilesLines
* Sync with upstream NetBSD lib/libc/regex.Elliott Hughes2015-10-194-50/+130
| | | | | | | Bug: http://b/22850181 Change-Id: I11a51a2031e68a953ccd5691da98c699c7d01904 (cherry-picked from commit 71927a82379f7a72559ea96e6678d6215090937f)
* Add back symbols to fix Greed for Glory franchise.Christopher Ferris2014-10-091-6/+8
| | | | | Bug: 17813018 Change-Id: Id939426ee5303117b9601e7915fcfec5024fc621
* Re-add dlmalloc for 32 bit.Christopher Ferris2014-10-092-3/+12
| | | | | | | | | It turns out that appportable has a version that calls dlmalloc directly. Re-add the dlmalloc symbol for 32 bit only as a compatibility shim that calls malloc. Bug: 17881362 Change-Id: I8f20963b0b8d323489dc083e4063779e0d1d7447
* Work around a bug in Immersion's libImmEmulatorJ.so.Elliott Hughes2014-10-072-2/+14
| | | | | | | | | | | | This library calls pthread_mutex_lock and pthread_mutex_unlock with a NULL pthread_mutex_t*. This gives them (and their users) one release to fix things. Bug: 17443936 (cherry picked from commit 7d3f553f989f830976efa92ddc3c84661d4d42aa) Change-Id: Ie26bbecd3a74d61113b51c18832872499b97ee86 (cherry picked from commit b5e7eba6d1b97e471996fcfe7dbde7cbba7512ef)
* Force export symbols on all x86 variants in libc.Christopher Ferris2014-10-063-5/+22
| | | | | | | | | | For silvermont, the __popcountsi2 symbol does not get exported by libc. But for atom, this symbol is exported. Since we already exported this symbol for previous releases, it's better to just follow through and force the export, but only for 32 bit. x86 64 bit will not export this symbol. Bug: 17681440 Change-Id: I6c62245f0960910f64baaaf6d9d090bf3ea5f435
* Reimplement clock(3) using clock_gettime(3)Alex Van Brunt2014-10-031-6/+7
| | | | | | | | | | | | | | | Unlike times(), clock_gettime() is implemented as a vDSO on many architectures. So, using clock_gettime() will return a more accurate time and do so with less overhead because it does have the overhead of calling into the kernel. It is also significantly more accurate because it measures the actual time in nanoseconds rather than the number of ticks (typically 1 millisecond or more). Bug: 17814435 (cherry picked from commit 8d0b2dbf2154d5da17ff09b1d4f864d281362ad2) Change-Id: Id4945d9f387330518f78669809639952e9227ed9
* Explain why clock(3) isn't broken.Elliott Hughes2014-10-031-0/+3
| | | | | | | | | Bug: 17441123 Bug: 17814435 (cherry picked from commit f83c208b82c78dad07f4065f63bdd354f5ef9951) Change-Id: I2065afe73b79a8d86404edee16e983625d902cdc
* Re-expose more stdio implementation details for LP32.Elliott Hughes2014-09-242-12/+9
| | | | | | | Keeps a variety of apps running. Bug: 17047819 Change-Id: I55882ec95f2b59a5df76e5a89c23aa315609e01d
* Fix incorrect parameter types for locale funcs.Dan Albert2014-09-245-8/+8
| | | | | | | | | strtoll(3), strtoull(3), wcstoll(3), and wcstoull(3) all take an _int_ as a base, not a size_t. This is an ABI compatibility issue. Bug: 17628622 Change-Id: I17f8eead34ce2112005899fc30162067573023ec (cherry picked from commit 3c5037f1b3b747e79d17a5f717d9f9c365132d33)
* Pull input.h from v3.16.1 kernel headers.Christopher Ferris2014-09-141-124/+139
| | | | | Bug: 17407564 Change-Id: Idcfc40a7254605280e3d5474c61ae1ab7b2b7b51
* Expose __swsetup for LP32 binary compatibility.Elliott Hughes2014-09-111-10/+6
| | | | | Bug: 17476127 Change-Id: I0ef1355ac913d782c268a638f88642d6cfc236c2
* Add pthread_gettid_np and re-expose __get_thread for LP32.Elliott Hughes2014-09-116-8/+46
| | | | | | | | | | | | | A lot of third-party code calls the private __get_thread symbol, often as part of a backport of bionic's pthread_rwlock implementation. Hopefully this will go away for LP64 (since you're guaranteed the real implementation there), but there are still APIs that take a tid and no way to convert between a pthread_t and a tid. pthread_gettid_np is a public API for that. To aid the transition, make __get_thread available again for LP32. Bug: 14079438 Change-Id: I43fabc7f1918250d31d4665ffa4ca352d0dbeac1
* Fix mips __fadvise64.S build failure.Elliott Hughes2014-09-112-3/+3
| | | | | | | | Bug: 12449798 (cherry picked from commit 9990b3973bdfcda5419c06886215147a878222f1) Change-Id: Iba92e2aa262666a59fc38b870dfd9f4082eeb628
* Merge "Add posix_fadvise(3)." into lmp-devElliott Hughes2014-09-1110-0/+205
|\
| * Add posix_fadvise(3).Elliott Hughes2014-09-1010-0/+205
| | | | | | | | | | Bug: 12449798 Change-Id: I07cbf3f670a0d1304b68148325a774f266b5c433
* | When comparing DNS server configs, also compare number of serversLorenzo Colitti2014-09-111-1/+16
|/ | | | | Bug: 16070602 Change-Id: I605f1cca50b08479ebcad290b3bd179f59be8a96
* Ensure __set_errno is still visible on LP32.Elliott Hughes2014-09-081177-3506/+1194
| | | | | | | | | | | | | | | | The use of the .hidden directive to avoid going via the PLT for __set_errno had the side-effect of actually making __set_errno hidden (which is odd because assembler directives don't usually affect symbols defined in a different file --- you can't even create a weak reference to a symbol that's defined in a different file). This change switches the system call stubs over to a new always-hidden __set_errno_internal and has a visible __set_errno on LP32 just for binary compatibility with old NDK apps. Bug: 17423135 Change-Id: I6b6d7a05dda85f923d22e5ffd169a91e23499b7b
* Merge "Don't expose non-standard basename_r and dirname_r in LP64." into lmp-devElliott Hughes2014-09-082-34/+25
|\
| * Don't expose non-standard basename_r and dirname_r in LP64.Elliott Hughes2014-09-052-34/+25
| | | | | | | | | | Bug: 17407423 Change-Id: I47fe499a4c396bf09d7b78fd828728d04777398b
* | Add arc4random_addrandom binary compatibility.Elliott Hughes2014-09-081-0/+5
| | | | | | | | | | | | | | | | This was in <stdlib.h> in older releases. It's no longer used, but we can preserve backwards compatibility by making it a no-op. Bug: 16205834 Change-Id: Idde7b46df4f253e39675600bcf82352879a716e7
* | Merge "Add dlmalloc_usable_size for 32 bit arches." into lmp-devChristopher Ferris2014-09-062-0/+14
|\ \ | |/ |/|
| * Add dlmalloc_usable_size for 32 bit arches.Christopher Ferris2014-09-052-0/+14
| | | | | | | | | | Bug: 17337831 Change-Id: I50c50559a5dfa083c85f064042bc0726718c988b
* | Fix pthread_attr_getstack__main_thread.Elliott Hughes2014-09-041-0/+53
|/ | | | | | | | | | | | | | | | There were two problems here: * This would fail when run with unlimited stack, because it didn't know that bionic reports unlimited stacks as 8MiB. * This would leave RLIMIT_STACK small, causing failures to exec (so the popen and system tests would fail). (cherry-pick of 27a9aed81978af792cb06035a1619c8141a5fb5b plus the new ScopeGuard.h from a3ad450a2e3fb6b3fe359683b247eba20896f646.) Bug: 17394276 Change-Id: I5b92dc64ca089400223b2d9a3743e9b9d57c1bc2
* Add back a dummy arc4random_stir for compatibility.Elliott Hughes2014-09-031-0/+5
| | | | | | | | The current arc4random implementation stirs itself as needed, but we need to keep an arc4random_stir symbol around for binary compatibility. Bug: 17291075 Change-Id: Iaf6171c3ec65c39c1868364d5b35ea280e29a363
* Merge "Upgrade bionic to tzdata2014g." into lmp-devElliott Hughes2014-09-021-0/+0
|\
| * Upgrade bionic to tzdata2014g.Elliott Hughes2014-09-021-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | From the release notes: Changes affecting future time stamps Turks & Caicos is switching from US eastern time to UTC-4 year-round, modeled as a switch from EST/EDT to AST on 2014-11-02 at 02:00. Changes affecting past time stamps Time in Russia or the USSR before 1926 or so has been corrected by a few seconds in the following zones: Asia/Irkutsk, Asia/Krasnoyarsk, Asia/Omsk, Asia/Samarkand, Asia/Tbilisi, Asia/Vladivostok, Asia/Yakutsk, Europe/Riga, Europe/Samara. For Asia/Yekaterinburg the correction is a few minutes. (Thanks to Vladimir Karpinsky.) The Portuguese decree of 1911-05-26 took effect on 1912-01-01. This affects 1911 time stamps in Africa/Bissau, Africa/Luanda, Atlantic/Azores, and Atlantic/Madeira. Also, Lisbon's pre-1912 GMT offset was -0:36:45 (rounded from -0:36:44.68), not -0:36:32. (Thanks to Stephen Colebourne for pointing to the decree.) Asia/Dhaka ended DST on 2009-12-31 at 24:00, not 23:59. A new file 'backzone' contains data which may appeal to connoisseurs of old time stamps, although it is out of scope for the tz database, is often poorly sourced, and contains some data that is known to be incorrect. The new file is not recommended for ordinary use and its entries are not installed by default. (Thanks to Lester Caine for the high-quality Jersey, Guernsey, and Isle of Man entries.) Some more zones have been turned into links, when they differed from existing zones only for older time stamps. As usual, these changes affect UTC offsets in pre-1970 time stamps only. Their old contents have been moved to the 'backzone' file. The affected zones are: Africa/Bangui, Africa/Brazzaville, Africa/Douala, Africa/Kinshasa, Africa/Libreville, Africa/Luanda, Africa/Malabo, Africa/Niamey, and Africa/Porto-Novo. Bug: 17277574 (cherry picked from commit 9685c30a2375635f7410e60eff2f0559f7e84df6) Change-Id: I6120be3a0ec76af2d07ca6f9ea6f83d81d215803
* | Make stdatomic.h work with gcc4.6 host compilerHans Boehm2014-09-021-11/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is needed to make L work correctly, and bionic tests pass again, after applying the equivalent of commit 00aaea364501b3b0abe58dae461136159df1e356 there. It makes the preexisting code that uses __sync implementations much more useful, although we should no longer be exercising that code in AOSP. Specifically fixes: We were invoking __has_extension and __has_builtin for GCC compilations. They're clang specific. Restructured the tests. The __sync implementation was not defining the LOCK_FREE macros. ATOMIC_VAR_INIT was using named field initializations. These are a C, not C++, feature, that is not supported by g++ 4.6. The stdatomic bionic test still failed with 4.6 and glibc with our questionable LOCK_FREE macro implementation. Don't run that piece with 4.6. In L, this is a prerequisite for fixing: Bug:16880454 Bug:16513433 Change-Id: I9b61e42307f96a114dce7552b6ead4ad1c544eab (cherry picked from commit 32429606bf696d3b2ca555f132a0d60c566d0bd0)
* | Undefine _Atomic before redefiningHans Boehm2014-09-021-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Stdatomic.h was potentially redefining _Atomic, in spite of a prior definition by <atomic>. This could cause g++ builds that included <stdatomic.h> with an available <atomic> header to break. A functional stdatomic.h is a prerequisite for fixing the following bugs. This is the middle of 3 AOSP updates to bionics stdatomic.h that are needded to get there. Bug:16880454 Bug:16513433 Change-Id: I562c7115118c0587d594d4d5b62d25101e47bfd8 (cherry picked from commit 3e4a0099a179d7acee63d78c8fc4c3cc7b0bae42)
* | Fix, generalize stdatomic.h; improve test.Hans Boehm2014-09-021-4/+10
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | We seem to use this stdatomic.h sometimes, and slightly different prebuilts at other times, making them all difficult to test, and making it unclear which one we're testing. This generalizes the bionic header so that it can be used directly as the prebuilt header as well. So long as they don't diverge again, that should somewhat improve test coverage. Use the correct builtin for atomic_is_lock_free. Fix atomic_flag_init. Turn on atomic tests even with __GLIBC__, since they now appear to pass. Include uchar.h in stdatomic.h where needed. Add a basic memory ordering test. Fix bit-rotted comments in bionic tests makefile. Prerequisite for fixing b/16880454 and Bug:16513433 Change-Id: If6a14c1075b379395ba5d93357d56025c0ffab68 (cherry picked from commit 00aaea364501b3b0abe58dae461136159df1e356)
* Use __GNUC_PREREQ rather than __GNUC_PREREQ__ to match glibc.Elliott Hughes2014-08-292-20/+20
| | | | | | | | Bug: 16874785 (cherry picked from commit e0c56efddf55ad40cb35b2c22e1dd9b4b50df159) Change-Id: I9c922ba019f648766fc399d1c4e35e789e25acd4
* Have pthread_attr_getstack for the main thread report RLIMIT_STACK...Elliott Hughes2014-08-271-11/+12
| | | | | | | | | | | | | ...rather than just what's already mapped in. This seems somewhat contrary to POSIX's "All pages within the stack described by stackaddr and stacksize shall be both readable and writable by the thread", but it's what glibc does. Bug: 17111575 (cherry picked from commit 9e4ffa7032eaab308876b8e3da86b05c3c613878) Change-Id: I73f219a569917b2e4546c09436d7ef5231facc07
* Merge "Fix pthread_getattr_np for the main thread." into lmp-devElliott Hughes2014-08-2714-233/+82
|\
| * Fix pthread_getattr_np for the main thread.Elliott Hughes2014-08-2614-233/+82
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On most architectures the kernel subtracts a random offset to the stack pointer in create_elf_tables by calling arch_align_stack before writing the auxval table and so on. On all but x86 this doesn't cause a problem because the random offset is less than a page, but on x86 it's up to two pages. This means that our old technique of rounding the stack pointer doesn't work. (Our old implementation of that technique was wrong too.) It's also incorrect to assume that the main thread's stack base and size are constant. Likewise to assume that the main thread has a guard page. The main thread is not like other threads. This patch switches to reading /proc/self/maps (and checking RLIMIT_STACK) whenever we're asked. Bug: 17111575 Signed-off-by: Fengwei Yin <fengwei.yin@intel.com> (cherry picked from commit 57b7a6110e7e8b446fc23cce4765ff625ee0a105) Change-Id: I87e679ee1c0db8092f2d1221c8e7c1461545c5a4
* | Use the default unwind code.Christopher Ferris2014-08-261-2/+3
|/ | | | | | | | | | This speeds up the debug malloc code by using the original unwinding code. The only catch is that it has to link in the libc++ arm unwind code or there will be crashes when attempting to unwind through libc++ compiled code. Bug: 16874447 Change-Id: Ifdbbcbd4137d668b25cf3c2bd59535e06ebfa5a7
* Fix some 32-bit-isms in <stdio.h>.Elliott Hughes2014-08-201-0/+12
| | | | | Bug: 17157793 Change-Id: I8290e240b92e5617f4c12c0eacad6e622e677b6a
* Expose android_set_abort_message().Dan Albert2014-08-193-4/+43
| | | | | | | | | Removes the leading underscores from __android_set_abort_message() and moves its declaration into a public header file. Bug: 17059126 Change-Id: I470c79db47ec783ea7a54b800f8b78ecbe7479ab (cherry picked from commit ce6b1abbb1da797e716d8ec03da4e3b6304fd11d) (cherry picked from commit 3a25ab952befbe908f6df45805683ebe3bf65863)
* Hide C++ stuff in libc. Put it back in libstdc++.Dan Albert2014-08-181-3/+58
| | | | | | Bug: 17062445 Change-Id: I027b186719654c2865b08c3fa83f90fa00c1e838 (cherry picked from commit fd5ee9aebc0a43c7f36a0778c7f416b39ddb870e)
* Merge "Fix leak_realloc, copy entire allocation." into lmp-devChristopher Ferris2014-08-161-33/+31
|\
| * Fix leak_realloc, copy entire allocation.Christopher Ferris2014-08-151-33/+31
| | | | | | | | | | Bug: 16874447 Change-Id: Ie54a73fd75529961195fa5173d9116d0ae897b03
* | Have stdatomic.h punt to C++ atomic when possibleHans Boehm2014-08-151-0/+93
|/ | | | | | | | | | | | | | This is an alternate, somewhat simpler, fix that makes it safe to include both <atomic> and <stdatomic.h> from C++ code in either order. It means that C code consistently uses one implementation of atomics and C++ another. We still have to make sure that those two implementations interoperate correctly at runtime; in particular, any flavor of atomic object needs to be represented exactly like the underlying type, with the proper alignment constraint. Bug:17007799 Change-Id: Iffcfc5220d8fa150f89dd083a121b24d23f268fc (cherry picked from commit 019d3958118b7dc3ec8444ad2accca50c268b737)
* Merge "Change name of MB_CUR_MAX implementation function." into lmp-devDan Albert2014-08-142-3/+3
|\
| * Change name of MB_CUR_MAX implementation function.Dan Albert2014-08-142-3/+3
| | | | | | | | | | | | | | | | Glibc calls theirs __ctype_get_mb_cur_max. Make ours match to cut down on differences between bionic and glibc. Bug: 11156955 Change-Id: Ib7231f01aa9676dff30aea0af25d597bfe07bc73
* | Merge "Move mtctxres.c to libc_dns.a." into lmp-devDan Albert2014-08-141-1/+1
|\ \
| * | Move mtctxres.c to libc_dns.a.Dan Albert2014-08-141-1/+1
| |/ | | | | | | | | | | | | | | Has the effect of making ___mtctxres hidden. Bug: 11156955 Change-Id: I5aa5f49344ad5ecb33f48737430561b329bcbb0d (cherry picked from commit 891ec7a6e46e60d7dfa1cf229e14a8e8634e272b)
* | Merge "malloc_usable_size returns the original size." into lmp-devChristopher Ferris2014-08-141-0/+4
|\ \ | |/ |/|
| * malloc_usable_size returns the original size.Christopher Ferris2014-08-141-0/+4
| | | | | | | | | | Bug: 16874447 Change-Id: Ie3ce683fd1f58b837b8ea91dc798e561b8593356
* | Label pages mapped by linker_allocatorDmitriy Ivanov2014-08-132-5/+27
|/ | | | | | | (cherry picked from commit 51a22a12ab370933a35463f5c81223132ec64dcb) Bug: 17013324 Change-Id: I345c9d0fecc29d3626c5be01cc3c0ed1583ac361
* Hide __libc_malloc_dispatch.Dan Albert2014-08-121-2/+1
| | | | | | | | Now that -Bsymbolic is fixed, we can hide __libc_malloc_dispatch without breaking ASAN. Bug: 11156955 Change-Id: Ia2fc9b046a74e666b33aa6c6c5435f70a63b8021
* Fix our x86 PIC_PROLOGUE.Elliott Hughes2014-08-091-3/+3
| | | | | | | | | | | | | The old definition only worked for functions that didn't use numbered local labels. Upstream uses '666' not only as some kind of BSD in-joke, but also because there's little likelihood of any function having labels that high. There's a wider question about whether we actually want to go via the PLT at all in this code, but that's a question for another day. Bug: 16906712 Change-Id: I3cd8ecc448b33f942bb6e783931808ef39091489
* Merge "Make __set_errno hidden in asm." into lmp-devDan Albert2014-08-091159-0/+2318
|\