From 373d778f6abf943f779328daa0a2b425d6469077 Mon Sep 17 00:00:00 2001 From: Yang Liu Date: Sun, 31 Aug 2025 00:10:10 +0800 Subject: [WRAPPER] Wrapped mallinfo2 for libc (#2983) --- src/wrapped/generated/functions_list.txt | 1 + src/wrapped/generated/wrappedlibctypes.h | 1 + src/wrapped/wrappedlibc.c | 16 ++++++++++++++++ src/wrapped/wrappedlibc_private.h | 1 + 4 files changed, 19 insertions(+) (limited to 'src') diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index a3b8aab8..140feef3 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -4619,6 +4619,7 @@ wrappedlibc: - pFp: - __deregister_frame_info - mallinfo + - mallinfo2 - vFpi: - __longjmp_chk - _longjmp diff --git a/src/wrapped/generated/wrappedlibctypes.h b/src/wrapped/generated/wrappedlibctypes.h index 980283af..f22b2ee7 100644 --- a/src/wrapped/generated/wrappedlibctypes.h +++ b/src/wrapped/generated/wrappedlibctypes.h @@ -145,6 +145,7 @@ typedef int32_t (*iFppipppp_t)(void*, void*, int32_t, void*, void*, void*, void* GO(_ZGTtnam, pFL_t) \ GO(__deregister_frame_info, pFp_t) \ GO(mallinfo, pFp_t) \ + GO(mallinfo2, pFp_t) \ GO(__longjmp_chk, vFpi_t) \ GO(_longjmp, vFpi_t) \ GO(_obstack_newchunk, vFpi_t) \ diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c index f5a2771f..742ae677 100644 --- a/src/wrapped/wrappedlibc.c +++ b/src/wrapped/wrappedlibc.c @@ -3190,6 +3190,22 @@ EXPORT void* my_mallinfo(x64emu_t* emu, void* p) return p; } +typedef struct mallinfo2 (*mallinfo2_fnc)(void); +EXPORT void* my_mallinfo2(x64emu_t* emu, void* p) +{ + static mallinfo2_fnc f = NULL; + static int inited = 0; + if(!inited) { + inited = 1; + f = (mallinfo2_fnc)dlsym(my_lib->w.lib, "mallinfo2"); + } + if(f) + *(struct mallinfo2*)p=f(); + else + memset(p, 0, sizeof(struct mallinfo2)); + return p; +} + #ifdef STATICBUILD void my_updateGlobalOpt() {} void my_checkGlobalOpt() {} diff --git a/src/wrapped/wrappedlibc_private.h b/src/wrapped/wrappedlibc_private.h index e5085322..d318f558 100644 --- a/src/wrapped/wrappedlibc_private.h +++ b/src/wrapped/wrappedlibc_private.h @@ -1250,6 +1250,7 @@ GO(__madvise, iFpLi) GOW(madvise, iFpLi) GOWM(makecontext, vFEppiV) GOWM(mallinfo, pFEp) +GOWM(mallinfo2, pFEp) GO(malloc, pFL) //GO(malloc_get_state, GOW(malloc_info, iFiS) -- cgit 1.4.1