05fc1d7050d5451aea08dc5f504d2670287b2d43 |
|
29-Jan-2015 |
Elliott Hughes <enh@google.com> |
Add missing includes. Change-Id: Ibf549266a19a67eb9158d341a69dddfb654be669
|
c189ffaaec45efb49e785517e504b41a5e57b088 |
|
27-Aug-2014 |
Elliott Hughes <enh@google.com> |
More cases where libc should use O_CLOEXEC. (cherry picked from commit f73183f1a34df22b62a3d0bbf82e18d5797c9cde) (cherry picked from commit 21ce3f506f3b54e4f57a37847375cef9f8aff57f) Change-Id: I70b240bd40ad8d2ba33ae7ab2618782709fd0d6a
|
21ce3f506f3b54e4f57a37847375cef9f8aff57f |
|
27-Aug-2014 |
Elliott Hughes <enh@google.com> |
More cases where libc should use O_CLOEXEC. Change-Id: Idfa111aeebc5deca2399dae919e8b72eb54c23c0 (cherry picked from commit f73183f1a34df22b62a3d0bbf82e18d5797c9cde)
|
f73183f1a34df22b62a3d0bbf82e18d5797c9cde |
|
27-Aug-2014 |
Elliott Hughes <enh@google.com> |
More cases where libc should use O_CLOEXEC. Change-Id: Idfa111aeebc5deca2399dae919e8b72eb54c23c0
|
91570ce987ef93f9ba2fa663a5fee1bd2525a2ba |
|
10-Jul-2014 |
Elliott Hughes <enh@google.com> |
Slim down static binaries by avoiding stdio. It's okay for a program to choose to drag in stdio, but it's unfortunate if even the minimal "int main() { return 42; }" drags in stdio... This brings the minimal static binary on ARM down from 78KiB to 46KiB. Given that we don't have a separate -lpthread it's not obvious to me that we can shave this down any further. I'm not sure whether this is a worthwhile change for that reason. (And the fact that dynamic binaries, the usual case, are unaffected either way.) Change-Id: I02f91dcff37d14354314a30b72fed2563f431c88
|
dda1c6c466c4f31de31d76c8be7e46c16b4b4209 |
|
10-Jul-2014 |
Christopher Ferris <cferris@google.com> |
Do not include libc_common in malloc debug code. The inclusion of the static libc_common library in the malloc_debug_XXX.so shared libraries causes constructors to be called twice. This doesn't seem to have caused any issues when setting the libc.debug.malloc property. However, jemalloc crashes because there are two jemalloc implementations, one in the static libc_common library and one in the shared library. Each implementation has created overlapping thread keys that are not the same. The crash comes because one of the jemalloc keys is actually used by the locale setting code. Thus if someone sets the locale, the jemalloc code crashes trying to access the same key. Change-Id: Iaac650a82d69064db148a6333e9403744f68b4a4
|
03eebcb6e8762e668a0d3af6bb303cccb88c5b81 |
|
13-Jun-2014 |
Christopher Ferris <cferris@google.com> |
Move common macros into bionic_macros.h. Bug: 15590152 Change-Id: I730636613ef3653f68c5ab1d43b53beaf8e0dc25
|
580b6e09febc967b5039ef5d148be883089d0eff |
|
13-Jun-2014 |
Christopher Ferris <cferris@google.com> |
Fix %u format that should have been %zu. Change-Id: Icedacf6783d6b0cf4783c838b3c4622d2e67f073
|
a403780538ac9d1a260e064df6599663f8cc4166 |
|
10-Jun-2014 |
Christopher Ferris <cferris@google.com> |
Put all allocation functions into dispatch table. Implement these new functions for all of the debug malloc types. Fix a number of bugs in the debug malloc functions related to overflow conditions. Fix a bug in dlpvalloc due to an overflow condition. Fix various other bugs in the debug malloc functions. Add new tests for malloc functions. Bug: 11225066 Change-Id: Idf50f389603e2157645565bc15cd9365eec2e9dd
|
8e52e8fe83632c667521c1c8e4f640e94c09baed |
|
04-Jun-2014 |
Elliott Hughes <enh@google.com> |
Fix debug malloc. Previously the dynamically-loaded part of the debug malloc implementation wanted to access hidden symbols in libc itself. Bug: 15426546 Change-Id: I6a366ef626854d1af1d705ca24842817b1c02a19
|
72bbd423579bb971dc06cdd3c06201faf3fe95e6 |
|
08-May-2014 |
Christopher Ferris <cferris@google.com> |
Support for jemalloc to replace dlmalloc. To use jemalloc, add MALLOC_IMPL = jemalloc in a board config file and you get the new version automatically. Update the pthread_create_key tests since jemalloc uses a few keys. Add a new test to verify memalign works as expected. Bug: 981363 Change-Id: I16eb152b291a95bd2499e90492fc6b4bd7053836
|
eb847bc8666842a3cfc9c06e8458ad1abebebaf0 |
|
10-Oct-2013 |
Elliott Hughes <enh@google.com> |
Fix x86_64 build, clean up intermediate libraries. The x86_64 build was failing because clone.S had a call to __thread_entry which was being added to a different intermediate .a on the way to making libc.so, and the linker couldn't guarantee statically that such a relocation would be possible. ld: error: out/target/product/generic_x86_64/obj/STATIC_LIBRARIES/libc_common_intermediates/libc_common.a(clone.o): requires dynamic R_X86_64_PC32 reloc against '__thread_entry' which may overflow at runtime; recompile with -fPIC This patch addresses that by ensuring that the caller and callee end up in the same intermediate .a. While I'm here, I've tried to clean up some of the mess that led to this situation too. In particular, this removes libc/private/ from the default include path (except for the DNS code), and splits out the DNS code into its own library (since it's a weird special case of upstream NetBSD code that's diverged so heavily it's unlikely ever to get back in sync). There's more cleanup of the DNS situation possible, but this is definitely a step in the right direction, and it's more than enough to get x86_64 building cleanly. Change-Id: I00425a7245b7a2573df16cc38798187d0729e7c4
|
ef0696d46ac76b1a9eb9038027ef5872fe1f3507 |
|
09-Oct-2013 |
Elliott Hughes <enh@google.com> |
Fix malloc debugging for LP64. Change-Id: Idd0b239f5c66d45de315d556271a5d13b8eb907c
|
405f8553cf19c583158d59ab44a5d668eade360d |
|
02-Oct-2013 |
Elliott Hughes <enh@google.com> |
Remove more assumptions that pointers are 32-bit. Change-Id: I2157e2fc4db7692b746c697982c3d028a056462a
|
885f3b9cad01b8158aadc55c159c17dbf34f622c |
|
22-May-2013 |
Christopher Ferris <cferris@google.com> |
Implement malloc_usable_size for debug impls. - Implemented chk_memalign. - Fixed a few bugs in leak_memalign. - Implemented {leak,fill,check,qemu}_malloc_usable_size. - Make malloc_usable_size update at run time. - Add malloc_test.cpp as a small set of tests for the malloc debug routines. - Fix the qemu routines since it's been broken since it moved to C++. - Add support for the %u format to the out_vformat in libc_logging.cpp. This is used by the emulator code. Tested using the bionic-unit-tests with setprop libc.debug.malloc set to 1, 5, and 10. I tested as much as possible on the emulator, but tracing doesn't appear to be working properly. Bug: 6143477 Merge change from internal master. (cherry-picked from commit 3d594c258045783fc9e1956ce7a4d91e302f011e) Change-Id: I4ae00fffba82315a8c283f35893fd554460722fb
|
3d594c258045783fc9e1956ce7a4d91e302f011e |
|
22-May-2013 |
Christopher Ferris <cferris@google.com> |
Implement malloc_usable_size for debug impls. - Implemented chk_memalign. - Fixed a few bugs in leak_memalign. - Implemented {leak,fill,check,qemu}_malloc_usable_size. - Make malloc_usable_size update at run time. - Add malloc_test.cpp as a small set of tests for the malloc debug routines. - Fix the qemu routines since it's been broken since it moved to C++. - Add support for the %u format to the out_vformat in libc_logging.cpp. This is used by the emulator code. Tested using the bionic-unit-tests with setprop libc.debug.malloc set to 1, 5, and 10. I tested as much as possible on the emulator, but tracing doesn't appear to be working properly. Bug: 6143477 Change-Id: Ieba99b58c2228c88d80afd264501004a4dadd212
|
7b4d77e400d321ccc7cdadd1cd225ebb1a69d358 |
|
04-Apr-2013 |
Elliott Hughes <enh@google.com> |
Make abort messages available to debuggerd. This adds __libc_fatal, cleans up the internal logging code a bit more, and switches suitable callers over to __libc_fatal. In addition to logging, __libc_fatal stashes the message somewhere that the debuggerd signal handler can find it before calling abort. In the debuggerd signal handler, we pass this address to debuggerd so that it can come back with ptrace to read the message and present it to the user. Bug: 8531731 (cherry picked from commit 0d787c1fa18c6a1f29ef9840e28a68cf077be1de) Change-Id: I5daeeaa36c1fc23f7f437d73a19808d9d558dd4d
|
0d787c1fa18c6a1f29ef9840e28a68cf077be1de |
|
04-Apr-2013 |
Elliott Hughes <enh@google.com> |
Make abort messages available to debuggerd. This adds __libc_fatal, cleans up the internal logging code a bit more, and switches suitable callers over to __libc_fatal. In addition to logging, __libc_fatal stashes the message somewhere that the debuggerd signal handler can find it before calling abort. In the debuggerd signal handler, we pass this address to debuggerd so that it can come back with ptrace to read the message and present it to the user. Bug: 8531731 Change-Id: I416ec1da38a8a1b0d0a582ccd7c8aaa681ed4a29
|
8f2a5a0b40fc82126c691d5c30131d908772aab7 |
|
15-Mar-2013 |
Elliott Hughes <enh@google.com> |
Clean up internal libc logging. We only need one logging API, and I prefer the one that does no allocation and is thus safe to use in any context. Also use O_CLOEXEC when opening the /dev/log files. Move everything logging-related into one header file. Change-Id: Ic1e3ea8e9b910dc29df351bff6c0aa4db26fbb58
|
1e980b6bc8315d00a07312b25486531247abd98c |
|
18-Jan-2013 |
Elliott Hughes <enh@google.com> |
Fix the duplication in the debugging code. We had two copies of the backtrace code, and two copies of the libcorkscrew /proc/pid/maps code. This patch gets us down to one. We also had hacks so we could log in the malloc debugging code. This patch pulls the non-allocating "printf" code out of the dynamic linker so everyone can share. This patch also makes the leak diagnostics easier to read, and makes it possible to paste them directly into the 'stack' tool (by using relative PCs). This patch also fixes the stdio standard stream leak that was causing a leak warning every time tf_daemon ran. Bug: 7291287 Change-Id: I66e4083ac2c5606c8d2737cb45c8ac8a32c7cfe8
|
c4d1fecc105063e68a5090a6900b63d1b9a24287 |
|
28-Aug-2012 |
Elliott Hughes <enh@google.com> |
Clean up warnings in the malloc_debug_* files. Also clean up cpplint.py-detected lint. Change-Id: Ia18e89c4c6878764f8d7ed34b8247e7a8d8fe88b
|