From b16d1e5b01fb5c9630d4cdfb6b599d73893b6ab7 Mon Sep 17 00:00:00 2001 From: stesen Date: Sun, 2 Jan 2022 23:57:06 +0800 Subject: [PATCH] replace deprecated libc API mallinfo with mallinfo2 Signed-off-by: stesen Change-Id: I57d8b4a68631b4203755eae91c89059f9a7a73ad --- libpandabase/os/unix/mem.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/libpandabase/os/unix/mem.cpp b/libpandabase/os/unix/mem.cpp index cc4e10f..803467f 100644 --- a/libpandabase/os/unix/mem.cpp +++ b/libpandabase/os/unix/mem.cpp @@ -260,14 +260,27 @@ size_t GetNativeBytesFromMallinfo() LOG(INFO, RUNTIME) << "Get native bytes from mallinfo with ASAN or TSAN. Return default value"; #else #if defined(__GLIBC__) || defined(PANDA_TARGET_MOBILE) - struct mallinfo info = mallinfo(); + // For GLIBC, uordblks is total size of space which is allocated by malloc // For MOBILE_LIBC, uordblks is total size of space which is allocated by malloc or mmap called by malloc for // non-small allocations +#if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 33 + struct mallinfo2 info = mallinfo2(); + mallinfo_bytes = info.uordblks; +#else + struct mallinfo info = mallinfo(); mallinfo_bytes = static_cast(info.uordblks); +#endif // __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 33 + #if defined(__GLIBC__) + // For GLIBC, hblkhd is total size of space which is allocated by mmap called by malloc for non-small allocations +#if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 33 + mallinfo_bytes += info.hblkhd; +#else mallinfo_bytes += static_cast(info.hblkhd); +#endif // __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 33 + #endif // __GLIBC__ #else mallinfo_bytes = DEFAULT_NATIVE_BYTES_FROM_MALLINFO;