diff --git a/libc/Android.bp b/libc/Android.bp index 6ba7cce9b3..26ffc73b66 100644 --- a/libc/Android.bp +++ b/libc/Android.bp @@ -51,6 +51,8 @@ libc_common_flags = [ // Clang's exit-time destructor registration hides __dso_handle, but // __dso_handle needs to have default visibility on ARM32. See b/73485611. "-Wexit-time-destructors", + + "-DH_MALLOC_PREFIX", ] // Define some common cflags @@ -64,9 +66,17 @@ cc_defaults { cppflags: [], include_dirs: [ "bionic/libc/async_safe/include", - "external/jemalloc/include", ], + multilib: { + lib32: { + include_dirs: ["external/jemalloc/include"], + }, + lib64: { + include_dirs: ["external/hardened_malloc/"], + }, + }, + stl: "none", system_shared_libs: [], sanitize: { @@ -1577,11 +1587,6 @@ cc_library_static { name: "libc_ndk", defaults: ["libc_defaults"], srcs: libc_common_src_files + ["bionic/malloc_common.cpp"], - multilib: { - lib32: { - srcs: libc_common_src_files_32, - }, - }, arch: { arm: { srcs: [ @@ -1613,9 +1618,18 @@ cc_library_static { "libc_syscalls", "libc_tzcode", "libm", - "libjemalloc", "libstdc++", ], + + multilib: { + lib32: { + srcs: libc_common_src_files_32, + whole_static_libs: ["libjemalloc"], + }, + lib64: { + whole_static_libs: ["libhardened_malloc"], + }, + }, } // ======================================================== @@ -1705,7 +1719,11 @@ cc_library_static { // ======================================================== cc_library_static { defaults: ["libc_defaults"], - srcs: ["bionic/jemalloc_wrapper.cpp"], + multilib: { + lib32: { + srcs: ["bionic/jemalloc_wrapper.cpp"], + }, + }, cflags: ["-fvisibility=hidden"], name: "libc_malloc", @@ -1768,9 +1786,17 @@ cc_library { ], whole_static_libs: [ "libc_common", - "libjemalloc", ], + multilib: { + lib32: { + whole_static_libs: ["libjemalloc"], + }, + lib64: { + whole_static_libs: ["libhardened_malloc"], + }, + }, + nocrt: true, arch: { diff --git a/libc/bionic/malloc_common.cpp b/libc/bionic/malloc_common.cpp index 1ea4ac1a3c..c86fbdaeac 100644 --- a/libc/bionic/malloc_common.cpp +++ b/libc/bionic/malloc_common.cpp @@ -46,8 +46,13 @@ #include #include +#ifdef __LP64__ +#include "h_malloc.h" +#define Malloc(function) h_ ## function +#else #include "jemalloc.h" #define Malloc(function) je_ ## function +#endif static constexpr MallocDispatch __libc_malloc_default_dispatch __attribute__((unused)) = {