Export two dlmalloc functions everywhere.

The functions dlmalloc_inspect_all and dlmalloc_trim get
exported on devices that use dlmalloc, so be consistent and
export them everywhere.

Bug: 21640784
Change-Id: I5b8796cd03c8f401d37d9c22823144f766f9c4c7
This commit is contained in:
Christopher Ferris 2015-06-05 17:12:17 -07:00
parent 966f84b11d
commit f9554a1776
2 changed files with 31 additions and 6 deletions

View File

@ -44,11 +44,13 @@
#define dlmalloc dlmalloc_real
#endif
/* Export two symbols used by the VM. */
__BEGIN_DECLS
int dlmalloc_trim(size_t) __LIBC_ABI_PUBLIC__;
void dlmalloc_inspect_all(void (*handler)(void*, void*, size_t, void*), void*) __LIBC_ABI_PUBLIC__;
__END_DECLS
/* These two symbols are exported on devices that use dlmalloc.
* In order to be consistent across all devices, they will
* be exported everywhere. Move the real symbols out of the way
* so that ndk_cruft.cpp can export these symbols.
*/
#define dlmalloc_inspect_all dlmalloc_inspect_all_real
#define dlmalloc_trim dlmalloc_trim_real
/* Include the proper definitions. */
#include "../upstream-dlmalloc/malloc.h"

View File

@ -340,7 +340,7 @@ extern "C" pid_t __pthread_gettid(pthread_t t) {
return pthread_gettid_np(t);
}
// Older versions of appportable used dlmalloc directly instead of malloc,
// Older versions of apportable used dlmalloc directly instead of malloc,
// so export this compatibility shim that simply calls malloc.
extern "C" void* dlmalloc(size_t size) {
return malloc(size);
@ -369,3 +369,26 @@ extern "C" void endusershell() { }
// This is never implemented in bionic, only needed for ABI compatibility with the NDK.
extern "C" void endpwent() { }
// Since dlmalloc_inspect_all and dlmalloc_trim are exported for systems
// that use dlmalloc, be consistent and export them everywhere.
#if defined(USE_JEMALLOC)
extern "C" void dlmalloc_inspect_all(void (*)(void*, void*, size_t, void*), void*) {
}
#else
extern "C" void dlmalloc_inspect_all_real(void (*)(void*, void*, size_t, void*), void*);
extern "C" void dlmalloc_inspect_all(void (*handler)(void*, void*, size_t, void*), void* arg) {
dlmalloc_inspect_all_real(handler, arg);
}
#endif
#if defined(USE_JEMALLOC)
extern "C" int dlmalloc_trim(size_t) {
return 0;
}
#else
extern "C" int dlmalloc_trim_real(size_t);
extern "C" int dlmalloc_trim(size_t pad) {
return dlmalloc_trim_real(pad);
}
#endif