From d5e1a62a7cebd4585a7f9de07f5acba15394fcf9 Mon Sep 17 00:00:00 2001 From: Daan Leijen Date: Mon, 16 Dec 2024 22:51:30 -0800 Subject: [PATCH 1/6] add windows arm64 target to vs2022 --- bin/readme.md | 6 +- ide/vs2022/mimalloc-override-test.vcxproj | 82 ++++++++++ ide/vs2022/mimalloc-override.vcxproj | 107 ++++++++++++ ide/vs2022/mimalloc-test-api.vcxproj | 65 ++++++++ ide/vs2022/mimalloc-test-stress.vcxproj | 65 ++++++++ ide/vs2022/mimalloc-test.vcxproj | 64 ++++++++ ide/vs2022/mimalloc.sln | 188 ++++++++++++---------- ide/vs2022/mimalloc.vcxproj | 113 +++++++++++++ test/main-override.cpp | 8 +- test/test-stress.c | 2 +- 10 files changed, 613 insertions(+), 87 deletions(-) diff --git a/bin/readme.md b/bin/readme.md index 9b121bda..a699a2cd 100644 --- a/bin/readme.md +++ b/bin/readme.md @@ -15,7 +15,7 @@ There are four requirements to make the overriding work robustly: (or use the `/INCLUDE:mi_version` switch on the linker). See the `mimalloc-override-test` project for an example on how to use this. -3. The `mimalloc-redirect.dll` (or `mimalloc-redirect32.dll`) must be put +3. The `mimalloc-redirect.dll` (or `mimalloc-redirect32.dll`, or `mimalloc-redirect-arm64.dll`) must be put in the same folder as the main `mimalloc-override.dll` at runtime (as it is a dependency of that DLL). The redirection DLL ensures that all calls to the C runtime malloc API get redirected to mimalloc functions (which reside in `mimalloc-override.dll`). @@ -40,7 +40,9 @@ if they are linked with the dynamic C runtime (`ucrtbase.dll`) -- just put the ` into the import table (and put `mimalloc-redirect.dll` in the same folder) Such patching can be done for example with [CFF Explorer](https://ntcore.com/?page_id=388). -The `minject` program can also do this from the command line, use `minject --help` for options: +The `minject` program can also do this from the command line +(or `minject32` for 32-bit PE files, or `minject-arm64` on arm64 Windows). +Use `minject --help` for options: ``` > minject --help diff --git a/ide/vs2022/mimalloc-override-test.vcxproj b/ide/vs2022/mimalloc-override-test.vcxproj index a3c56f7b..ff5d53d0 100644 --- a/ide/vs2022/mimalloc-override-test.vcxproj +++ b/ide/vs2022/mimalloc-override-test.vcxproj @@ -1,10 +1,18 @@ + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -42,12 +50,23 @@ true v143 + + Application + true + v143 + Application false v143 true + + Application + false + v143 + true + @@ -62,9 +81,15 @@ + + + + + + $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ @@ -78,10 +103,18 @@ $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ $(ProjectDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + + $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ + $(ProjectDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ $(ProjectDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + + $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ + $(ProjectDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + Level3 @@ -128,6 +161,30 @@ + + + Level3 + Disabled + true + true + ..\..\include + MultiThreadedDebugDLL + Sync + Default + false + + + Console + + + kernel32.lib;%(AdditionalDependencies) + + + + + + + Level3 @@ -176,6 +233,31 @@ + + + Level3 + MaxSpeed + true + true + true + true + ..\..\include + _MBCS;%(PreprocessorDefinitions);NDEBUG + MultiThreadedDLL + + + true + true + Console + + + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + diff --git a/ide/vs2022/mimalloc-override.vcxproj b/ide/vs2022/mimalloc-override.vcxproj index 4383d886..16a48740 100644 --- a/ide/vs2022/mimalloc-override.vcxproj +++ b/ide/vs2022/mimalloc-override.vcxproj @@ -1,10 +1,18 @@  + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -41,11 +49,21 @@ true v143 + + DynamicLibrary + true + v143 + DynamicLibrary false v143 + + DynamicLibrary + false + v143 + @@ -60,9 +78,15 @@ + + + + + + $(SolutionDir)..\..\out\msvc-$(Platform)\$(Configuration)\ @@ -82,12 +106,24 @@ .dll mimalloc-override + + $(SolutionDir)..\..\out\msvc-$(Platform)\$(Configuration)\ + $(SolutionDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + .dll + mimalloc-override + $(SolutionDir)..\..\out\msvc-$(Platform)\$(Configuration)\ $(SolutionDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ .dll mimalloc-override + + $(SolutionDir)..\..\out\msvc-$(Platform)\$(Configuration)\ + $(SolutionDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + .dll + mimalloc-override + Level3 @@ -144,6 +180,34 @@ copy mimalloc-redirect.dll to the output directory + + + Level3 + Disabled + true + true + ../../include + MI_DEBUG=4;MI_SHARED_LIB;MI_SHARED_LIB_EXPORT;MI_MALLOC_OVERRIDE;%(PreprocessorDefinitions); + MultiThreadedDebugDLL + false + CompileAsCpp + + + $(ProjectDir)\..\..\bin\mimalloc-redirect-arm64.lib;%(AdditionalDependencies) + + + + + Default + false + + + COPY /Y "$(ProjectDir)..\..\bin\mimalloc-redirect-arm64.dll" "$(OutputPath)" + + + copy mimalloc-redirect-arm64.dll to the output directory + + Level3 @@ -208,6 +272,39 @@ copy mimalloc-redirect.dll to the output directory + + + Level3 + MaxSpeed + true + true + true + ../../include + MI_SHARED_LIB;MI_SHARED_LIB_EXPORT;MI_MALLOC_OVERRIDE;%(PreprocessorDefinitions);NDEBUG + AssemblyAndSourceCode + $(IntDir) + false + MultiThreadedDLL + CompileAsCpp + false + CPUExtensionRequirementsARMv81 + + + true + true + $(ProjectDir)\..\..\bin\mimalloc-redirect-arm64.lib;%(AdditionalDependencies) + + + Default + false + + + COPY /Y "$(ProjectDir)..\..\bin\mimalloc-redirect-arm64.dll" "$(OutputPath)" + + + copy mimalloc-redirect-arm64.dll to the output directory + + @@ -226,13 +323,17 @@ false false false + false false + false true true true + true true + true @@ -240,7 +341,9 @@ true true true + true true + true @@ -252,7 +355,9 @@ true true true + true true + true @@ -260,7 +365,9 @@ true true true + true true + true diff --git a/ide/vs2022/mimalloc-test-api.vcxproj b/ide/vs2022/mimalloc-test-api.vcxproj index d9b9cae4..babe7f96 100644 --- a/ide/vs2022/mimalloc-test-api.vcxproj +++ b/ide/vs2022/mimalloc-test-api.vcxproj @@ -1,10 +1,18 @@ + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -42,12 +50,23 @@ true v143 + + Application + true + v143 + Application false v143 true + + Application + false + v143 + true + @@ -62,9 +81,15 @@ + + + + + + $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ @@ -78,10 +103,18 @@ $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ $(ProjectDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + + $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ + $(ProjectDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ $(ProjectDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + + $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ + $(ProjectDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + Level3 @@ -106,6 +139,18 @@ Console + + + Level3 + Disabled + true + true + ..\..\include + + + Console + + Level3 @@ -140,15 +185,35 @@ Console + + + Level3 + MaxSpeed + true + true + true + true + ..\..\include + %(PreprocessorDefinitions);NDEBUG + + + true + true + Console + + true true true + true true + true false + false diff --git a/ide/vs2022/mimalloc-test-stress.vcxproj b/ide/vs2022/mimalloc-test-stress.vcxproj index c7e820df..c033aaeb 100644 --- a/ide/vs2022/mimalloc-test-stress.vcxproj +++ b/ide/vs2022/mimalloc-test-stress.vcxproj @@ -1,10 +1,18 @@ + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -42,12 +50,23 @@ true v143 + + Application + true + v143 + Application false v143 true + + Application + false + v143 + true + @@ -62,9 +81,15 @@ + + + + + + $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ @@ -78,10 +103,18 @@ $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ $(ProjectDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + + $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ + $(ProjectDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ $(ProjectDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + + $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ + $(ProjectDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + Level3 @@ -106,6 +139,18 @@ Console + + + Level3 + Disabled + true + true + ..\..\include + + + Console + + Level3 @@ -140,12 +185,32 @@ Console + + + Level3 + MaxSpeed + true + true + true + true + ..\..\include + %(PreprocessorDefinitions);NDEBUG + CPUExtensionRequirementsARMv81 + + + true + true + Console + + false false + false false false + false diff --git a/ide/vs2022/mimalloc-test.vcxproj b/ide/vs2022/mimalloc-test.vcxproj index 506dd7d4..bfd72287 100644 --- a/ide/vs2022/mimalloc-test.vcxproj +++ b/ide/vs2022/mimalloc-test.vcxproj @@ -1,10 +1,18 @@ + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -42,12 +50,23 @@ true v143 + + Application + true + v143 + Application false v143 true + + Application + false + v143 + true + @@ -62,9 +81,15 @@ + + + + + + $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ @@ -78,10 +103,18 @@ $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ $(ProjectDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + + $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ + $(ProjectDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ $(ProjectDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + + $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ + $(ProjectDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + Level3 @@ -108,6 +141,19 @@ Console + + + Level3 + Disabled + true + true + ..\..\include + stdcpp17 + + + Console + + Level3 @@ -144,6 +190,24 @@ Console + + + Level3 + MaxSpeed + true + true + true + true + ..\..\include + _MBCS;%(PreprocessorDefinitions);NDEBUG + stdcpp17 + + + true + true + Console + + {abb5eae7-b3e6-432e-b636-333449892ea6} diff --git a/ide/vs2022/mimalloc.sln b/ide/vs2022/mimalloc.sln index 6ff01d3b..e4a6538b 100644 --- a/ide/vs2022/mimalloc.sln +++ b/ide/vs2022/mimalloc.sln @@ -1,81 +1,107 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29709.97 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mimalloc", "mimalloc.vcxproj", "{ABB5EAE7-B3E6-432E-B636-333449892EA6}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mimalloc-test", "mimalloc-test.vcxproj", "{FEF7858F-750E-4C21-A04D-22707CC66878}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mimalloc-override", "mimalloc-override.vcxproj", "{ABB5EAE7-B3E6-432E-B636-333449892EA7}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mimalloc-override-test", "mimalloc-override-test.vcxproj", "{FEF7868F-750E-4C21-A04D-22707CC66879}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mimalloc-test-stress", "mimalloc-test-stress.vcxproj", "{FEF7958F-750E-4C21-A04D-22707CC66878}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mimalloc-test-api", "mimalloc-test-api.vcxproj", "{FFF7958F-750E-4C21-A04D-22707CC66878}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {ABB5EAE7-B3E6-432E-B636-333449892EA6}.Debug|x64.ActiveCfg = Debug|x64 - {ABB5EAE7-B3E6-432E-B636-333449892EA6}.Debug|x64.Build.0 = Debug|x64 - {ABB5EAE7-B3E6-432E-B636-333449892EA6}.Debug|x86.ActiveCfg = Debug|Win32 - {ABB5EAE7-B3E6-432E-B636-333449892EA6}.Debug|x86.Build.0 = Debug|Win32 - {ABB5EAE7-B3E6-432E-B636-333449892EA6}.Release|x64.ActiveCfg = Release|x64 - {ABB5EAE7-B3E6-432E-B636-333449892EA6}.Release|x64.Build.0 = Release|x64 - {ABB5EAE7-B3E6-432E-B636-333449892EA6}.Release|x86.ActiveCfg = Release|Win32 - {ABB5EAE7-B3E6-432E-B636-333449892EA6}.Release|x86.Build.0 = Release|Win32 - {FEF7858F-750E-4C21-A04D-22707CC66878}.Debug|x64.ActiveCfg = Debug|x64 - {FEF7858F-750E-4C21-A04D-22707CC66878}.Debug|x64.Build.0 = Debug|x64 - {FEF7858F-750E-4C21-A04D-22707CC66878}.Debug|x86.ActiveCfg = Debug|Win32 - {FEF7858F-750E-4C21-A04D-22707CC66878}.Debug|x86.Build.0 = Debug|Win32 - {FEF7858F-750E-4C21-A04D-22707CC66878}.Release|x64.ActiveCfg = Release|x64 - {FEF7858F-750E-4C21-A04D-22707CC66878}.Release|x64.Build.0 = Release|x64 - {FEF7858F-750E-4C21-A04D-22707CC66878}.Release|x86.ActiveCfg = Release|Win32 - {FEF7858F-750E-4C21-A04D-22707CC66878}.Release|x86.Build.0 = Release|Win32 - {ABB5EAE7-B3E6-432E-B636-333449892EA7}.Debug|x64.ActiveCfg = Debug|x64 - {ABB5EAE7-B3E6-432E-B636-333449892EA7}.Debug|x64.Build.0 = Debug|x64 - {ABB5EAE7-B3E6-432E-B636-333449892EA7}.Debug|x86.ActiveCfg = Debug|Win32 - {ABB5EAE7-B3E6-432E-B636-333449892EA7}.Debug|x86.Build.0 = Debug|Win32 - {ABB5EAE7-B3E6-432E-B636-333449892EA7}.Release|x64.ActiveCfg = Release|x64 - {ABB5EAE7-B3E6-432E-B636-333449892EA7}.Release|x64.Build.0 = Release|x64 - {ABB5EAE7-B3E6-432E-B636-333449892EA7}.Release|x86.ActiveCfg = Release|Win32 - {ABB5EAE7-B3E6-432E-B636-333449892EA7}.Release|x86.Build.0 = Release|Win32 - {FEF7868F-750E-4C21-A04D-22707CC66879}.Debug|x64.ActiveCfg = Debug|x64 - {FEF7868F-750E-4C21-A04D-22707CC66879}.Debug|x64.Build.0 = Debug|x64 - {FEF7868F-750E-4C21-A04D-22707CC66879}.Debug|x86.ActiveCfg = Debug|Win32 - {FEF7868F-750E-4C21-A04D-22707CC66879}.Debug|x86.Build.0 = Debug|Win32 - {FEF7868F-750E-4C21-A04D-22707CC66879}.Release|x64.ActiveCfg = Release|x64 - {FEF7868F-750E-4C21-A04D-22707CC66879}.Release|x64.Build.0 = Release|x64 - {FEF7868F-750E-4C21-A04D-22707CC66879}.Release|x86.ActiveCfg = Release|Win32 - {FEF7868F-750E-4C21-A04D-22707CC66879}.Release|x86.Build.0 = Release|Win32 - {FEF7958F-750E-4C21-A04D-22707CC66878}.Debug|x64.ActiveCfg = Debug|x64 - {FEF7958F-750E-4C21-A04D-22707CC66878}.Debug|x64.Build.0 = Debug|x64 - {FEF7958F-750E-4C21-A04D-22707CC66878}.Debug|x86.ActiveCfg = Debug|Win32 - {FEF7958F-750E-4C21-A04D-22707CC66878}.Debug|x86.Build.0 = Debug|Win32 - {FEF7958F-750E-4C21-A04D-22707CC66878}.Release|x64.ActiveCfg = Release|x64 - {FEF7958F-750E-4C21-A04D-22707CC66878}.Release|x64.Build.0 = Release|x64 - {FEF7958F-750E-4C21-A04D-22707CC66878}.Release|x86.ActiveCfg = Release|Win32 - {FEF7958F-750E-4C21-A04D-22707CC66878}.Release|x86.Build.0 = Release|Win32 - {FFF7958F-750E-4C21-A04D-22707CC66878}.Debug|x64.ActiveCfg = Debug|x64 - {FFF7958F-750E-4C21-A04D-22707CC66878}.Debug|x64.Build.0 = Debug|x64 - {FFF7958F-750E-4C21-A04D-22707CC66878}.Debug|x86.ActiveCfg = Debug|Win32 - {FFF7958F-750E-4C21-A04D-22707CC66878}.Debug|x86.Build.0 = Debug|Win32 - {FFF7958F-750E-4C21-A04D-22707CC66878}.Release|x64.ActiveCfg = Release|x64 - {FFF7958F-750E-4C21-A04D-22707CC66878}.Release|x64.Build.0 = Release|x64 - {FFF7958F-750E-4C21-A04D-22707CC66878}.Release|x86.ActiveCfg = Release|Win32 - {FFF7958F-750E-4C21-A04D-22707CC66878}.Release|x86.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {4297F93D-486A-4243-995F-7D32F59AE82A} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.12.35527.113 d17.12 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mimalloc", "mimalloc.vcxproj", "{ABB5EAE7-B3E6-432E-B636-333449892EA6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mimalloc-test", "mimalloc-test.vcxproj", "{FEF7858F-750E-4C21-A04D-22707CC66878}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mimalloc-override", "mimalloc-override.vcxproj", "{ABB5EAE7-B3E6-432E-B636-333449892EA7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mimalloc-override-test", "mimalloc-override-test.vcxproj", "{FEF7868F-750E-4C21-A04D-22707CC66879}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mimalloc-test-stress", "mimalloc-test-stress.vcxproj", "{FEF7958F-750E-4C21-A04D-22707CC66878}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mimalloc-test-api", "mimalloc-test-api.vcxproj", "{FFF7958F-750E-4C21-A04D-22707CC66878}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM64 = Debug|ARM64 + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|ARM64 = Release|ARM64 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {ABB5EAE7-B3E6-432E-B636-333449892EA6}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {ABB5EAE7-B3E6-432E-B636-333449892EA6}.Debug|ARM64.Build.0 = Debug|ARM64 + {ABB5EAE7-B3E6-432E-B636-333449892EA6}.Debug|x64.ActiveCfg = Debug|x64 + {ABB5EAE7-B3E6-432E-B636-333449892EA6}.Debug|x64.Build.0 = Debug|x64 + {ABB5EAE7-B3E6-432E-B636-333449892EA6}.Debug|x86.ActiveCfg = Debug|Win32 + {ABB5EAE7-B3E6-432E-B636-333449892EA6}.Debug|x86.Build.0 = Debug|Win32 + {ABB5EAE7-B3E6-432E-B636-333449892EA6}.Release|ARM64.ActiveCfg = Release|ARM64 + {ABB5EAE7-B3E6-432E-B636-333449892EA6}.Release|ARM64.Build.0 = Release|ARM64 + {ABB5EAE7-B3E6-432E-B636-333449892EA6}.Release|x64.ActiveCfg = Release|x64 + {ABB5EAE7-B3E6-432E-B636-333449892EA6}.Release|x64.Build.0 = Release|x64 + {ABB5EAE7-B3E6-432E-B636-333449892EA6}.Release|x86.ActiveCfg = Release|Win32 + {ABB5EAE7-B3E6-432E-B636-333449892EA6}.Release|x86.Build.0 = Release|Win32 + {FEF7858F-750E-4C21-A04D-22707CC66878}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {FEF7858F-750E-4C21-A04D-22707CC66878}.Debug|ARM64.Build.0 = Debug|ARM64 + {FEF7858F-750E-4C21-A04D-22707CC66878}.Debug|x64.ActiveCfg = Debug|x64 + {FEF7858F-750E-4C21-A04D-22707CC66878}.Debug|x64.Build.0 = Debug|x64 + {FEF7858F-750E-4C21-A04D-22707CC66878}.Debug|x86.ActiveCfg = Debug|Win32 + {FEF7858F-750E-4C21-A04D-22707CC66878}.Debug|x86.Build.0 = Debug|Win32 + {FEF7858F-750E-4C21-A04D-22707CC66878}.Release|ARM64.ActiveCfg = Release|ARM64 + {FEF7858F-750E-4C21-A04D-22707CC66878}.Release|ARM64.Build.0 = Release|ARM64 + {FEF7858F-750E-4C21-A04D-22707CC66878}.Release|x64.ActiveCfg = Release|x64 + {FEF7858F-750E-4C21-A04D-22707CC66878}.Release|x64.Build.0 = Release|x64 + {FEF7858F-750E-4C21-A04D-22707CC66878}.Release|x86.ActiveCfg = Release|Win32 + {FEF7858F-750E-4C21-A04D-22707CC66878}.Release|x86.Build.0 = Release|Win32 + {ABB5EAE7-B3E6-432E-B636-333449892EA7}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {ABB5EAE7-B3E6-432E-B636-333449892EA7}.Debug|ARM64.Build.0 = Debug|ARM64 + {ABB5EAE7-B3E6-432E-B636-333449892EA7}.Debug|x64.ActiveCfg = Debug|x64 + {ABB5EAE7-B3E6-432E-B636-333449892EA7}.Debug|x64.Build.0 = Debug|x64 + {ABB5EAE7-B3E6-432E-B636-333449892EA7}.Debug|x86.ActiveCfg = Debug|Win32 + {ABB5EAE7-B3E6-432E-B636-333449892EA7}.Debug|x86.Build.0 = Debug|Win32 + {ABB5EAE7-B3E6-432E-B636-333449892EA7}.Release|ARM64.ActiveCfg = Release|ARM64 + {ABB5EAE7-B3E6-432E-B636-333449892EA7}.Release|ARM64.Build.0 = Release|ARM64 + {ABB5EAE7-B3E6-432E-B636-333449892EA7}.Release|x64.ActiveCfg = Release|x64 + {ABB5EAE7-B3E6-432E-B636-333449892EA7}.Release|x64.Build.0 = Release|x64 + {ABB5EAE7-B3E6-432E-B636-333449892EA7}.Release|x86.ActiveCfg = Release|Win32 + {ABB5EAE7-B3E6-432E-B636-333449892EA7}.Release|x86.Build.0 = Release|Win32 + {FEF7868F-750E-4C21-A04D-22707CC66879}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {FEF7868F-750E-4C21-A04D-22707CC66879}.Debug|ARM64.Build.0 = Debug|ARM64 + {FEF7868F-750E-4C21-A04D-22707CC66879}.Debug|x64.ActiveCfg = Debug|x64 + {FEF7868F-750E-4C21-A04D-22707CC66879}.Debug|x64.Build.0 = Debug|x64 + {FEF7868F-750E-4C21-A04D-22707CC66879}.Debug|x86.ActiveCfg = Debug|Win32 + {FEF7868F-750E-4C21-A04D-22707CC66879}.Debug|x86.Build.0 = Debug|Win32 + {FEF7868F-750E-4C21-A04D-22707CC66879}.Release|ARM64.ActiveCfg = Release|ARM64 + {FEF7868F-750E-4C21-A04D-22707CC66879}.Release|ARM64.Build.0 = Release|ARM64 + {FEF7868F-750E-4C21-A04D-22707CC66879}.Release|x64.ActiveCfg = Release|x64 + {FEF7868F-750E-4C21-A04D-22707CC66879}.Release|x64.Build.0 = Release|x64 + {FEF7868F-750E-4C21-A04D-22707CC66879}.Release|x86.ActiveCfg = Release|Win32 + {FEF7868F-750E-4C21-A04D-22707CC66879}.Release|x86.Build.0 = Release|Win32 + {FEF7958F-750E-4C21-A04D-22707CC66878}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {FEF7958F-750E-4C21-A04D-22707CC66878}.Debug|ARM64.Build.0 = Debug|ARM64 + {FEF7958F-750E-4C21-A04D-22707CC66878}.Debug|x64.ActiveCfg = Debug|x64 + {FEF7958F-750E-4C21-A04D-22707CC66878}.Debug|x64.Build.0 = Debug|x64 + {FEF7958F-750E-4C21-A04D-22707CC66878}.Debug|x86.ActiveCfg = Debug|Win32 + {FEF7958F-750E-4C21-A04D-22707CC66878}.Debug|x86.Build.0 = Debug|Win32 + {FEF7958F-750E-4C21-A04D-22707CC66878}.Release|ARM64.ActiveCfg = Release|ARM64 + {FEF7958F-750E-4C21-A04D-22707CC66878}.Release|ARM64.Build.0 = Release|ARM64 + {FEF7958F-750E-4C21-A04D-22707CC66878}.Release|x64.ActiveCfg = Release|x64 + {FEF7958F-750E-4C21-A04D-22707CC66878}.Release|x64.Build.0 = Release|x64 + {FEF7958F-750E-4C21-A04D-22707CC66878}.Release|x86.ActiveCfg = Release|Win32 + {FEF7958F-750E-4C21-A04D-22707CC66878}.Release|x86.Build.0 = Release|Win32 + {FFF7958F-750E-4C21-A04D-22707CC66878}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {FFF7958F-750E-4C21-A04D-22707CC66878}.Debug|ARM64.Build.0 = Debug|ARM64 + {FFF7958F-750E-4C21-A04D-22707CC66878}.Debug|x64.ActiveCfg = Debug|x64 + {FFF7958F-750E-4C21-A04D-22707CC66878}.Debug|x64.Build.0 = Debug|x64 + {FFF7958F-750E-4C21-A04D-22707CC66878}.Debug|x86.ActiveCfg = Debug|Win32 + {FFF7958F-750E-4C21-A04D-22707CC66878}.Debug|x86.Build.0 = Debug|Win32 + {FFF7958F-750E-4C21-A04D-22707CC66878}.Release|ARM64.ActiveCfg = Release|ARM64 + {FFF7958F-750E-4C21-A04D-22707CC66878}.Release|ARM64.Build.0 = Release|ARM64 + {FFF7958F-750E-4C21-A04D-22707CC66878}.Release|x64.ActiveCfg = Release|x64 + {FFF7958F-750E-4C21-A04D-22707CC66878}.Release|x64.Build.0 = Release|x64 + {FFF7958F-750E-4C21-A04D-22707CC66878}.Release|x86.ActiveCfg = Release|Win32 + {FFF7958F-750E-4C21-A04D-22707CC66878}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {4297F93D-486A-4243-995F-7D32F59AE82A} + EndGlobalSection +EndGlobal diff --git a/ide/vs2022/mimalloc.vcxproj b/ide/vs2022/mimalloc.vcxproj index dddab777..fb13cd1f 100644 --- a/ide/vs2022/mimalloc.vcxproj +++ b/ide/vs2022/mimalloc.vcxproj @@ -1,10 +1,18 @@  + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -42,12 +50,23 @@ true v143 + + StaticLibrary + true + v143 + StaticLibrary false v143 true + + StaticLibrary + false + v143 + true + @@ -62,9 +81,15 @@ + + + + + + $(SolutionDir)..\..\out\msvc-$(Platform)\$(Configuration)\ @@ -84,12 +109,24 @@ .lib mimalloc-static + + $(SolutionDir)..\..\out\msvc-$(Platform)\$(Configuration)\ + $(SolutionDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + .lib + mimalloc-static + $(SolutionDir)..\..\out\msvc-$(Platform)\$(Configuration)\ $(SolutionDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ .lib mimalloc-static + + $(SolutionDir)..\..\out\msvc-$(Platform)\$(Configuration)\ + $(SolutionDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + .lib + mimalloc-static + Level4 @@ -136,6 +173,33 @@ + + + Level4 + Disabled + true + Default + ../../include + MI_DEBUG=3;MI_GUARDED=0;%(PreprocessorDefinitions); + CompileAsCpp + false + stdcpp20 + + + + + + + + + + + + + + + + Level4 @@ -198,18 +262,58 @@ + + + Level4 + MaxSpeed + true + Default + ../../include + %(PreprocessorDefinitions);NDEBUG + AssemblyAndSourceCode + $(IntDir) + false + false + Default + CompileAsCpp + true + stdcpp20 + CPUExtensionRequirementsARMv81 + Sync + + + true + true + + + + + + + + + + + + + + false false + false false false + false true true true + true true + true @@ -217,17 +321,22 @@ true true true + true true + true false + false true + true true true true + true @@ -237,14 +346,18 @@ true true true + true true + true true true true + true true + true diff --git a/test/main-override.cpp b/test/main-override.cpp index 3f64117a..3d56ae42 100644 --- a/test/main-override.cpp +++ b/test/main-override.cpp @@ -44,8 +44,8 @@ static void test_stl_allocators(); int main() { - // mi_stats_reset(); // ignore earlier allocations - + mi_stats_reset(); // ignore earlier allocations + various_tests(); test_mixed1(); //test_std_string(); //test_thread_local(); @@ -55,8 +55,10 @@ int main() { heap_no_delete(); heap_late_free(); padding_shrink(); - various_tests(); + tsan_numa_test(); + */ + /* strdup_test(); test_stl_allocators(); test_mt_shutdown(); diff --git a/test/test-stress.c b/test/test-stress.c index 261c5dfe..1848e9f5 100644 --- a/test/test-stress.c +++ b/test/test-stress.c @@ -23,7 +23,7 @@ terms of the MIT license. #include // #define MI_GUARDED -// #define USE_STD_MALLOC +#define USE_STD_MALLOC // > mimalloc-test-stress [THREADS] [SCALE] [ITER] // From b47c68fefd505f1b78284299309253fb9471bbd9 Mon Sep 17 00:00:00 2001 From: Daan Leijen Date: Mon, 16 Dec 2024 22:53:23 -0800 Subject: [PATCH 2/6] add redirection dll for windows on arm64 --- bin/mimalloc-redirect-arm64.dll | Bin 0 -> 80896 bytes bin/mimalloc-redirect-arm64.lib | Bin 0 -> 2976 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 bin/mimalloc-redirect-arm64.dll create mode 100644 bin/mimalloc-redirect-arm64.lib diff --git a/bin/mimalloc-redirect-arm64.dll b/bin/mimalloc-redirect-arm64.dll new file mode 100644 index 0000000000000000000000000000000000000000..0cae1d5170e37a11e6e767b24f102a8811e322e5 GIT binary patch literal 80896 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 Q50(~TPy6Bz(SH+v04r#&VE_OC literal 0 HcmV?d00001 From de8d73d2086da80e8df902d1c1b262bc54c2894e Mon Sep 17 00:00:00 2001 From: Daan Leijen Date: Mon, 16 Dec 2024 22:53:52 -0800 Subject: [PATCH 3/6] add minject for windows arm64 --- bin/minject-arm64.exe | Bin 0 -> 20992 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 bin/minject-arm64.exe diff --git a/bin/minject-arm64.exe b/bin/minject-arm64.exe new file mode 100644 index 0000000000000000000000000000000000000000..63987afcacc42511aca435e78a70d56a64163ff2 GIT binary patch literal 20992 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 jM=FnOKhkof Date: Mon, 16 Dec 2024 23:09:50 -0800 Subject: [PATCH 4/6] add Windows arm64 support in cmame; name the mimalloc dll 'mimalloc-override.dll' on Windows with cmake (to match the IDE and minject --- CMakeLists.txt | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index adf16a7f..490cb483 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -146,13 +146,7 @@ if(MI_OVERRIDE) endif() endif() -if(WIN32) - if (MI_WIN_REDIRECT) - if (MSVC_C_ARCHITECTURE_ID MATCHES "ARM") - message(STATUS "Cannot use redirection on Windows ARM (MI_WIN_REDIRECT=OFF)") - set(MI_WIN_REDIRECT OFF) - endif() - endif() +if(WIN32) if (NOT MI_WIN_REDIRECT) # use a negative define for backward compatibility list(APPEND mi_defines MI_WIN_NOREDIRECT=1) @@ -340,7 +334,7 @@ if(APPLE) endif() elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR CMAKE_GENERATOR_PLATFORM STREQUAL "x64") set(MI_ARCH "x64") -elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" OR CMAKE_GENERATOR_PLATFORM STREQUAL "ARM64") +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64" OR CMAKE_GENERATOR_PLATFORM STREQUAL "ARM64") set(MI_ARCH "arm64") endif() @@ -534,7 +528,9 @@ if(MI_BUILD_SHARED) ) if(WIN32 AND MI_WIN_REDIRECT) # On windows, link and copy the mimalloc redirection dll too. - if(CMAKE_SIZEOF_VOID_P EQUAL 4) + if(MI_ARCH STREQUAL "arm64") + set(MIMALLOC_REDIRECT_SUFFIX "-arm64") + elseif(CMAKE_SIZEOF_VOID_P EQUAL 4) set(MIMALLOC_REDIRECT_SUFFIX "32") else() set(MIMALLOC_REDIRECT_SUFFIX "") @@ -656,6 +652,11 @@ endif() if (MI_OVERRIDE) if (MI_BUILD_SHARED) target_compile_definitions(mimalloc PRIVATE MI_MALLOC_OVERRIDE) + if (WIN32) + # on windows we should generate mimalloc-override.dll. + string(REPLACE "mimalloc" "mimalloc-override" mi_override_output_name ${mi_basename}) + set_target_properties(mimalloc PROPERTIES OUTPUT_NAME ${mi_override_output_name}) + endif() endif() if(NOT WIN32) # It is only possible to override malloc on Windows when building as a DLL. From 6ac636e2e2e0726d4360e5119cfbf7ad6a8725a7 Mon Sep 17 00:00:00 2001 From: Daan Leijen Date: Mon, 16 Dec 2024 23:22:52 -0800 Subject: [PATCH 5/6] update readme --- bin/readme.md | 9 +++++---- test/test-stress.c | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/bin/readme.md b/bin/readme.md index a699a2cd..d133eea2 100644 --- a/bin/readme.md +++ b/bin/readme.md @@ -11,11 +11,12 @@ There are four requirements to make the overriding work robustly: 2. Link your program explicitly with `mimalloc-override.dll` library. To ensure the `mimalloc-override.dll` is loaded at run-time it is easiest to insert some - call to the mimalloc API in the `main` function, like `mi_version()` - (or use the `/INCLUDE:mi_version` switch on the linker). See the `mimalloc-override-test` project - for an example on how to use this. + call to the mimalloc API in the `main` function, like `mi_version()` + (or use the `/INCLUDE:mi_version` switch on the linker, or + use `#pragma comment(linker, "/include:mi_version")` in some source file). + See the `mimalloc-override-test` project for an example on how to use this. -3. The `mimalloc-redirect.dll` (or `mimalloc-redirect32.dll`, or `mimalloc-redirect-arm64.dll`) must be put +3. The `mimalloc-redirect.dll` (x64) (or `mimalloc-redirect32.dll` (x86), or `mimalloc-redirect-arm64.dll` (arm64)) must be put in the same folder as the main `mimalloc-override.dll` at runtime (as it is a dependency of that DLL). The redirection DLL ensures that all calls to the C runtime malloc API get redirected to mimalloc functions (which reside in `mimalloc-override.dll`). diff --git a/test/test-stress.c b/test/test-stress.c index 1848e9f5..261c5dfe 100644 --- a/test/test-stress.c +++ b/test/test-stress.c @@ -23,7 +23,7 @@ terms of the MIT license. #include // #define MI_GUARDED -#define USE_STD_MALLOC +// #define USE_STD_MALLOC // > mimalloc-test-stress [THREADS] [SCALE] [ITER] // From ac52b6967d06bac6515e8325c9dd34121154a6b5 Mon Sep 17 00:00:00 2001 From: Daan Leijen Date: Tue, 17 Dec 2024 00:06:03 -0800 Subject: [PATCH 6/6] update arm64 redirection --- bin/mimalloc-redirect-arm64.dll | Bin 80896 -> 53760 bytes test/test-stress.c | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/mimalloc-redirect-arm64.dll b/bin/mimalloc-redirect-arm64.dll index 0cae1d5170e37a11e6e767b24f102a8811e322e5..2b1d3e355ccd3bb8aa3442f90f3490a3a4a167f0 100644 GIT binary patch delta 10318 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 u`8z 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