Index: llvm/cmake/config-ix.cmake =================================================================== --- llvm/cmake/config-ix.cmake +++ llvm/cmake/config-ix.cmake @@ -231,6 +231,7 @@ check_symbol_exists(lseek64 "sys/types.h;unistd.h" HAVE_LSEEK64) set(CMAKE_REQUIRED_DEFINITIONS "") check_symbol_exists(mallctl malloc_np.h HAVE_MALLCTL) +check_symbol_exists(mallinfo2 malloc.h HAVE_MALLINFO2) check_symbol_exists(mallinfo malloc.h HAVE_MALLINFO) check_symbol_exists(malloc_zone_statistics malloc/malloc.h HAVE_MALLOC_ZONE_STATISTICS) Index: llvm/lib/Support/Unix/Process.inc =================================================================== --- llvm/lib/Support/Unix/Process.inc +++ llvm/lib/Support/Unix/Process.inc @@ -31,7 +31,7 @@ #if HAVE_SIGNAL_H #include #endif -#if defined(HAVE_MALLINFO) +#if defined(HAVE_MALLINFO2) || defined(HAVE_MALLINFO) #include #endif #if defined(HAVE_MALLCTL) @@ -89,7 +89,11 @@ } size_t Process::GetMallocUsage() { -#if defined(HAVE_MALLINFO) +#if defined(HAVE_MALLINFO2) + struct mallinfo2 mi; + mi = ::mallinfo2(); + return mi.uordblks; +#elif defined(HAVE_MALLINFO) struct mallinfo mi; mi = ::mallinfo(); return mi.uordblks;