From 11f4da7ea53a13b8bd26614ca7e418c22810e73a Mon Sep 17 00:00:00 2001 From: Daan Date: Sun, 9 Feb 2025 18:46:55 -0800 Subject: [PATCH 1/4] add simd test on windows --- azure-pipelines.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index fc00dc8c..2ab709ff 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -30,6 +30,10 @@ jobs: BuildType: release cmakeExtraArgs: -DCMAKE_BUILD_TYPE=Release MSBuildConfiguration: Release + Release SIMD: + BuildType: release-simd + cmakeExtraArgs: -DCMAKE_BUILD_TYPE=Release -DMI_OPT_SIMD=ON -DMI_WIN_USE_FIXED_TLS=ON + MSBuildConfiguration: Release Secure: BuildType: secure cmakeExtraArgs: -DCMAKE_BUILD_TYPE=Release -DMI_SECURE=ON From 84aadcb087fbca7a56f7df1275d7ea915fb85833 Mon Sep 17 00:00:00 2001 From: Daan Date: Sun, 9 Feb 2025 18:55:14 -0800 Subject: [PATCH 2/4] avoid link error with asan/c++ --- CMakeLists.txt | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 65777cc6..bb2dc001 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -691,17 +691,18 @@ if (MI_BUILD_TESTS) enable_testing() # static link tests - if(MI_BUILD_STATIC) - foreach(TEST_NAME api api-fill stress) - 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}) - target_include_directories(mimalloc-test-${TEST_NAME} PRIVATE include) + foreach(TEST_NAME api api-fill stress) + 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}) + target_include_directories(mimalloc-test-${TEST_NAME} PRIVATE include) + if(MI_BUILD_SHARED AND (MI_TRACK_ASAN OR MI_DEBUG_TSAN OR MI_DEBUG_UBSAN)) + target_link_libraries(mimalloc-test-${TEST_NAME} PRIVATE mimalloc ${mi_libraries}) + else() target_link_libraries(mimalloc-test-${TEST_NAME} PRIVATE mimalloc-static ${mi_libraries}) - - add_test(NAME test-${TEST_NAME} COMMAND mimalloc-test-${TEST_NAME}) - endforeach() - endif() + endif() + add_test(NAME test-${TEST_NAME} COMMAND mimalloc-test-${TEST_NAME}) + endforeach() # dynamic override test if(MI_BUILD_SHARED AND NOT (WIN32 OR MI_TRACK_ASAN OR MI_DEBUG_TSAN OR MI_DEBUG_UBSAN)) From a1cb38b70ebc1c9517cc003d52910d1de2d8d2b4 Mon Sep 17 00:00:00 2001 From: Daan Date: Sun, 9 Feb 2025 19:10:33 -0800 Subject: [PATCH 3/4] fix link error in debug mode in test --- test/test-stress.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/test-stress.c b/test/test-stress.c index 6fbd8d0e..d3b8bcc5 100644 --- a/test/test-stress.c +++ b/test/test-stress.c @@ -261,7 +261,9 @@ static void test_stress(void) { #if !defined(NDEBUG) || defined(MI_TSAN) if ((n + 1) % 10 == 0) { printf("- iterations left: %3d\n", ITER - (n + 1)); + #ifndef USE_STD_MALLOC mi_debug_show_arenas(); + #endif //mi_collect(true); //mi_debug_show_arenas(); } From 3e7875066b55daff598aa0fd782ffeb1b5957b8f Mon Sep 17 00:00:00 2001 From: daanx Date: Sun, 9 Feb 2025 19:22:26 -0800 Subject: [PATCH 4/4] add dynamic override test on windows --- CMakeLists.txt | 19 +++++++++++++------ test/test-stress.c | 12 +++++++++++- 2 files changed, 24 insertions(+), 7 deletions(-) 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();