From 32382e37c75453c01e44b6610112ec80bec32340 Mon Sep 17 00:00:00 2001 From: Boris Frolikov Date: Wed, 7 Sep 2022 12:53:10 +0300 Subject: [PATCH 1/2] Implement mi_malloc_backtrace stub and test Signed-off-by: Boris Frolikov --- CMakeLists.txt | 2 +- include/mimalloc.h | 3 +++ src/alloc.c | 4 ++++ test/BUILD.gn | 4 ++++ test/test-backtrace.c | 9 +++++++++ 5 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 test/test-backtrace.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 38e54d89..a4530f50 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -381,7 +381,7 @@ endif() if (MI_BUILD_TESTS) enable_testing() - foreach(TEST_NAME api api-fill stress stats-print info mallinfo2 mallopt) + foreach(TEST_NAME api api-fill stress stats-print info mallinfo2 mallopt backtrace) add_executable(mimalloc-test-${TEST_NAME} test/test-${TEST_NAME}.c) target_compile_definitions(mimalloc-test-${TEST_NAME} PRIVATE ${mi_defines}) target_compile_options(mimalloc-test-${TEST_NAME} PRIVATE ${mi_cflags}) diff --git a/include/mimalloc.h b/include/mimalloc.h index 8574846c..b1db581f 100644 --- a/include/mimalloc.h +++ b/include/mimalloc.h @@ -397,6 +397,9 @@ mi_decl_export void mi_option_set(mi_option_t option, long value); mi_decl_export void mi_option_set_default(mi_option_t option, long value); mi_decl_export int mi_mallopt(int param, int value); +// Stubs +mi_decl_export ssize_t mi_malloc_backtrace(void *pointer, uintptr_t* frames, size_t frame_count); + // ------------------------------------------------------------------------------------------------------- // "mi" prefixed implementations of various posix, Unix, Windows, and C++ allocation functions. // (This can be convenient when providing overrides of these functions as done in `mimalloc-override.h`.) diff --git a/src/alloc.c b/src/alloc.c index 61878086..5733c343 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -953,6 +953,10 @@ void* mi_new_reallocn(void* p, size_t newcount, size_t size) { } } +ssize_t mi_malloc_backtrace(void *pointer, uintptr_t* frames, size_t frame_count) { + return 0; +} + #define cap_max(x, MAX_VALUE) ((x > MAX_VALUE) ? MAX_VALUE : x) #define cap(x) cap_max(x, INT_MAX) #define cap2(x) cap_max(x, SIZE_MAX) diff --git a/test/BUILD.gn b/test/BUILD.gn index c9ab64de..14737dbb 100644 --- a/test/BUILD.gn +++ b/test/BUILD.gn @@ -115,6 +115,9 @@ without_mimalloc_test("xmalloc-test-default") { sources = [ "perfomance/xmalloc-test.c" ] } +mimalloc_unittest("test-backtrace") { +} + group("mimalloc_test") { testonly = true deps = [ @@ -122,6 +125,7 @@ group("mimalloc_test") { ":bench-malloc-thread-default", ":test-api", ":test-api-fill", + ":test-backtrace", ":test-disable", ":test-info", ":test-mallinfo2", diff --git a/test/test-backtrace.c b/test/test-backtrace.c new file mode 100644 index 00000000..99db00c8 --- /dev/null +++ b/test/test-backtrace.c @@ -0,0 +1,9 @@ +#include "mimalloc.h" +#include "testhelper.h" + +int main(void) { + CHECK_BODY("test-mi_malloc_backtrace-stub", { + result = mi_malloc_backtrace(NULL, NULL, 0) == 0; + }); + return print_test_summary(); +} \ No newline at end of file From 4867941eca23573958a678bdb069923cefc3e8c3 Mon Sep 17 00:00:00 2001 From: Boris Frolikov Date: Wed, 7 Sep 2022 13:19:29 +0300 Subject: [PATCH 2/2] Fix test-mallinfo2 Signed-off-by: Boris Frolikov --- test/test-mallinfo2.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/test-mallinfo2.c b/test/test-mallinfo2.c index 1edf0985..d4c54e81 100644 --- a/test/test-mallinfo2.c +++ b/test/test-mallinfo2.c @@ -1,8 +1,8 @@ #include #include #include -#include #include +#include "mimalloc.h" #define ALLOC_NUM 100 @@ -10,7 +10,7 @@ void test_mallinfo2(void) { struct mallinfo2 mi2; - mi2 = mallinfo2(); + mi2 = mi_mallinfo2(); assert(mi2.hblks); assert(mi2.hblkhd);