diff --git a/CMakeLists.txt b/CMakeLists.txt index bb2dc001..99c20764 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -705,18 +705,25 @@ if (MI_BUILD_TESTS) endforeach() # dynamic override test - if(MI_BUILD_SHARED AND NOT (WIN32 OR MI_TRACK_ASAN OR MI_DEBUG_TSAN OR MI_DEBUG_UBSAN)) + if(MI_BUILD_SHARED AND NOT (MI_TRACK_ASAN OR MI_DEBUG_TSAN OR MI_DEBUG_UBSAN)) add_executable(mimalloc-test-stress-dynamic test/test-stress.c) target_compile_definitions(mimalloc-test-stress-dynamic PRIVATE ${mi_defines} "USE_STD_MALLOC=1") + if(WIN32) + target_compile_definitions(mimalloc-test-stress-dynamic PRIVATE "MI_LINK_VERSION=1") + endif() target_compile_options(mimalloc-test-stress-dynamic PRIVATE ${mi_cflags}) target_include_directories(mimalloc-test-stress-dynamic PRIVATE include) - target_link_libraries(mimalloc-test-stress-dynamic PRIVATE ${mi_libraries}) # pthread - if(APPLE) - set(LD_PRELOAD "DYLD_INSERT_LIBRARIES") + target_link_libraries(mimalloc-test-stress-dynamic PRIVATE mimalloc ${mi_libraries}) # mi_version + if(WIN32) + add_test(NAME test-stress-dynamic COMMAND ${CMAKE_COMMAND} -E env MIMALLOC_SHOW_STATS=1 $) else() - set(LD_PRELOAD "LD_PRELOAD") + if(APPLE) + set(LD_PRELOAD "DYLD_INSERT_LIBRARIES") + else() + set(LD_PRELOAD "LD_PRELOAD") + endif() + add_test(NAME test-stress-dynamic COMMAND ${CMAKE_COMMAND} -E env MIMALLOC_SHOW_STATS=1 ${LD_PRELOAD}=$ $) endif() - add_test(NAME test-stress-dynamic COMMAND ${CMAKE_COMMAND} -E env MIMALLOC_SHOW_STATS=1 ${LD_PRELOAD}=$ $) endif() endif() diff --git a/test/test-stress.c b/test/test-stress.c index 9a005a47..d23c7461 100644 --- a/test/test-stress.c +++ b/test/test-stress.c @@ -268,7 +268,17 @@ static void test_leak(void) { } #endif +#if defined(USE_STD_MALLOC) && defined(MI_LINK_VERSION) +#ifdef __cplusplus +extern "C" +#endif +int mi_version(void); +#endif + int main(int argc, char** argv) { + #ifdef MI_LINK_VERSION + mi_version(); + #endif #ifdef HEAP_WALK mi_option_enable(mi_option_visit_abandoned); #endif @@ -318,7 +328,7 @@ int main(int argc, char** argv) { #ifndef NDEBUG mi_debug_show_arenas(); mi_collect(true); - #endif + #endif mi_stats_print(NULL); #endif //bench_end_program();