From 27d929f338a7da875a734920f473e04562c5bfc3 Mon Sep 17 00:00:00 2001 From: Daan Leijen Date: Wed, 18 Dec 2024 23:55:37 -0800 Subject: [PATCH 1/2] add support for arm64ec --- bin/mimalloc-redirect-arm64.dll | Bin 53760 -> 55296 bytes bin/mimalloc-redirect-arm64ec.dll | Bin 0 -> 100864 bytes bin/mimalloc-redirect-arm64ec.lib | Bin 0 -> 3308 bytes bin/mimalloc-redirect.dll | Bin 70656 -> 54272 bytes bin/mimalloc-redirect.lib | Bin 2874 -> 2874 bytes bin/mimalloc-redirect32.dll | Bin 48128 -> 35840 bytes bin/mimalloc-redirect32.lib | Bin 2928 -> 2928 bytes 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 | 28 +++++- ide/vs2022/mimalloc.vcxproj | 113 ++++++++++++++++++++++ test/main-override.cpp | 3 + 15 files changed, 526 insertions(+), 1 deletion(-) create mode 100644 bin/mimalloc-redirect-arm64ec.dll create mode 100644 bin/mimalloc-redirect-arm64ec.lib diff --git a/bin/mimalloc-redirect-arm64.dll b/bin/mimalloc-redirect-arm64.dll index 2b1d3e355ccd3bb8aa3442f90f3490a3a4a167f0..98268796c03f790362d628c25ab684a96a6b4fd4 100644 GIT binary patch delta 8358 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 literal 0 HcmV?d00001 diff --git a/bin/mimalloc-redirect-arm64ec.lib b/bin/mimalloc-redirect-arm64ec.lib new file mode 100644 index 0000000000000000000000000000000000000000..1c7c368fc6ae255df671dd2ca96ae9e66ef76659 GIT binary patch literal 3308 zcmc&$&1(}u6n{xtTVs*<0iIeS7OX;>G)-a)rEI@wOVg$#DcI9=n_cZf(v)qg0S{7I zdJyrS5Ij`yA}C%;LA=zf$BHNM*n=nq1${F+v)N5{lP*XdNM`0YZ+3p~&HI?^!?K=V z9SKIl_SV~PpNm#6uB&S$HdZA9DKpwcMf1W1PP)CTrSCB z=)%DzJWt3`T!Qd{ANy{=M1!rfVbI=$D0UY9lera6 z&CJj8bz6rSjb>_0WVB(s00D5vjAaN>#0GKj~DnfD7wm3HUT2=DH1H{ih8GH7)SaQ(JnaZ9Y9*$IwKAI{4 zIC-3c>(*xRxB-Dvk9#X7yr&*_MxJyUZ|Fo?uEpJJsimsy{i7^`-JXI4WF XtR87whiT+A?aWHNLcCEkb_M?eX{j9D literal 0 HcmV?d00001 diff --git a/bin/mimalloc-redirect.dll b/bin/mimalloc-redirect.dll index 4702fec0175e66168151f1d995a6148a0e69a1eb..5dee3713751104a965b40d13f21bbaac571b99f5 100644 GIT binary patch delta 13047 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 diff --git a/bin/mimalloc-redirect.lib b/bin/mimalloc-redirect.lib index 7d5f19cee2052225b3f95447945c4b937371c055..851455a50a661f904b6a977f203e77a6e04d9958 100644 GIT binary patch delta 100 zcmdlbwo7b-1Pe>dy|ZU0%dqTV(PC(Bo1Dd=Joz_^15?saGKI(E2rZK&ktjU1g!01|H^egFUf delta 100 zcmdlbwo7b-1Pe<;VeF5|GAuh-G#R{GCueaePyWr~z~tS!*_Kt8k!2#E^XtiZY!eW& kog6$s*~zx7Qj>kzV_7x@#9p7gjvcOD8!EYZBS$9_0B67-?*IS* diff --git a/bin/mimalloc-redirect32.dll b/bin/mimalloc-redirect32.dll index 17c0555027cd73317e893549e9831235c35d4d83..1bb909e199e55ff9212e913471866c86e0a9bf59 100644 GIT binary patch delta 11168 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 b&O-=^=4o>X8V?k|RypZ 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 diff --git a/bin/mimalloc-redirect32.lib b/bin/mimalloc-redirect32.lib index a7100afcbe011e36358bedf663a5e77a7bdae736..45d7297d8ebd45aee3b18c8a0bc71a691ec862d7 100644 GIT binary patch delta 118 zcmew$_Caie84C-q{=@^5typ%kXfZUmP1a&ppDfR6$JE@mIiA&!kuzxNw&zC~7#Nr) z+p|bd-ojP{Q>G78GC7`AYH}%iENAa+`AZL>s>~(}a@50ANl#wS!2wmd`7*~`CIFm& BByj)$ delta 118 zcmew$_Caie84JryC+YK(typ%kXfk-WPS#>qpDfR6$K>6*IiA&!k<&tj_194b1_q|d z_AJtqx3Cq#l<5PNOpa%jnq0~r%Xuc!`Nc!1DznLg9Q80&(v#P7a6naVzRWR~2>=MW BA`Som diff --git a/ide/vs2022/mimalloc-override-test.vcxproj b/ide/vs2022/mimalloc-override-test.vcxproj index ff5d53d0..97803b9c 100644 --- a/ide/vs2022/mimalloc-override-test.vcxproj +++ b/ide/vs2022/mimalloc-override-test.vcxproj @@ -5,6 +5,10 @@ Debug ARM64 + + Debug + ARM64EC + Debug Win32 @@ -13,6 +17,10 @@ Release ARM64 + + Release + ARM64EC + Release Win32 @@ -55,6 +63,11 @@ true v143 + + Application + true + v143 + Application false @@ -67,6 +80,12 @@ v143 true + + Application + false + v143 + true + @@ -84,12 +103,18 @@ + + + + + + $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ @@ -107,6 +132,10 @@ $(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)\ @@ -115,6 +144,10 @@ $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ $(ProjectDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + + $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ + $(ProjectDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + Level3 @@ -185,6 +218,30 @@ + + + Level3 + Disabled + true + true + ..\..\include + MultiThreadedDebugDLL + Sync + Default + false + + + Console + + + kernel32.lib;%(AdditionalDependencies) + + + + + + + Level3 @@ -258,6 +315,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 16a48740..9de18895 100644 --- a/ide/vs2022/mimalloc-override.vcxproj +++ b/ide/vs2022/mimalloc-override.vcxproj @@ -5,6 +5,10 @@ Debug ARM64 + + Debug + ARM64EC + Debug Win32 @@ -13,6 +17,10 @@ Release ARM64 + + Release + ARM64EC + Release Win32 @@ -54,6 +62,11 @@ true v143 + + DynamicLibrary + true + v143 + DynamicLibrary false @@ -64,6 +77,11 @@ false v143 + + DynamicLibrary + false + v143 + @@ -81,12 +99,18 @@ + + + + + + $(SolutionDir)..\..\out\msvc-$(Platform)\$(Configuration)\ @@ -112,6 +136,12 @@ .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)\ @@ -124,6 +154,12 @@ .dll mimalloc-override + + $(SolutionDir)..\..\out\msvc-$(Platform)\$(Configuration)\ + $(SolutionDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + .dll + mimalloc-override + Level3 @@ -208,6 +244,34 @@ copy mimalloc-redirect-arm64.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-arm64ec.lib;%(AdditionalDependencies) + + + + + Default + false + + + COPY /Y "$(ProjectDir)..\..\bin\mimalloc-redirect-arm64ec.dll" "$(OutputPath)" + + + copy mimalloc-redirect-arm64ec.dll to the output directory + + Level3 @@ -305,6 +369,39 @@ copy mimalloc-redirect-arm64.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-arm64ec.lib;%(AdditionalDependencies) + + + Default + false + + + COPY /Y "$(ProjectDir)..\..\bin\mimalloc-redirect-arm64ec.dll" "$(OutputPath)" + + + copy mimalloc-redirect-arm64ec.dll to the output directory + + @@ -324,16 +421,20 @@ false false false + false false false + false true true true true + true true true + true @@ -342,8 +443,10 @@ true true true + true true true + true @@ -356,8 +459,10 @@ true true true + true true true + true @@ -366,8 +471,10 @@ true true true + true true true + true diff --git a/ide/vs2022/mimalloc-test-api.vcxproj b/ide/vs2022/mimalloc-test-api.vcxproj index babe7f96..27247569 100644 --- a/ide/vs2022/mimalloc-test-api.vcxproj +++ b/ide/vs2022/mimalloc-test-api.vcxproj @@ -5,6 +5,10 @@ Debug ARM64 + + Debug + ARM64EC + Debug Win32 @@ -13,6 +17,10 @@ Release ARM64 + + Release + ARM64EC + Release Win32 @@ -55,6 +63,11 @@ true v143 + + Application + true + v143 + Application false @@ -67,6 +80,12 @@ v143 true + + Application + false + v143 + true + @@ -84,12 +103,18 @@ + + + + + + $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ @@ -107,6 +132,10 @@ $(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)\ @@ -115,6 +144,10 @@ $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ $(ProjectDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + + $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ + $(ProjectDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + Level3 @@ -151,6 +184,18 @@ Console + + + Level3 + Disabled + true + true + ..\..\include + + + Console + + Level3 @@ -202,18 +247,38 @@ Console + + + Level3 + MaxSpeed + true + true + true + true + ..\..\include + %(PreprocessorDefinitions);NDEBUG + + + true + true + Console + + true true true true + true true true + true false false + false diff --git a/ide/vs2022/mimalloc-test-stress.vcxproj b/ide/vs2022/mimalloc-test-stress.vcxproj index c033aaeb..fd88cd8e 100644 --- a/ide/vs2022/mimalloc-test-stress.vcxproj +++ b/ide/vs2022/mimalloc-test-stress.vcxproj @@ -5,6 +5,10 @@ Debug ARM64 + + Debug + ARM64EC + Debug Win32 @@ -13,6 +17,10 @@ Release ARM64 + + Release + ARM64EC + Release Win32 @@ -55,6 +63,11 @@ true v143 + + Application + true + v143 + Application false @@ -67,6 +80,12 @@ v143 true + + Application + false + v143 + true + @@ -84,12 +103,18 @@ + + + + + + $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ @@ -107,6 +132,10 @@ $(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)\ @@ -115,6 +144,10 @@ $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ $(ProjectDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + + $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ + $(ProjectDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + Level3 @@ -151,6 +184,18 @@ Console + + + Level3 + Disabled + true + true + ..\..\include + + + Console + + Level3 @@ -203,14 +248,34 @@ Console + + + Level3 + MaxSpeed + true + true + true + true + ..\..\include + %(PreprocessorDefinitions);NDEBUG + CPUExtensionRequirementsARMv81 + + + true + true + Console + + false false false + false false false false + false diff --git a/ide/vs2022/mimalloc-test.vcxproj b/ide/vs2022/mimalloc-test.vcxproj index bfd72287..fc9e9102 100644 --- a/ide/vs2022/mimalloc-test.vcxproj +++ b/ide/vs2022/mimalloc-test.vcxproj @@ -5,6 +5,10 @@ Debug ARM64 + + Debug + ARM64EC + Debug Win32 @@ -13,6 +17,10 @@ Release ARM64 + + Release + ARM64EC + Release Win32 @@ -55,6 +63,11 @@ true v143 + + Application + true + v143 + Application false @@ -67,6 +80,12 @@ v143 true + + Application + false + v143 + true + @@ -84,12 +103,18 @@ + + + + + + $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ @@ -107,6 +132,10 @@ $(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)\ @@ -115,6 +144,10 @@ $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ $(ProjectDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + + $(ProjectDir)..\..\out\msvc-$(Platform)\$(Configuration)\ + $(ProjectDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + Level3 @@ -154,6 +187,19 @@ Console + + + Level3 + Disabled + true + true + ..\..\include + stdcpp17 + + + Console + + Level3 @@ -208,6 +254,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 e4a6538b..5a55c98b 100644 --- a/ide/vs2022/mimalloc.sln +++ b/ide/vs2022/mimalloc.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 -VisualStudioVersion = 17.12.35527.113 d17.12 +VisualStudioVersion = 17.12.35527.113 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mimalloc", "mimalloc.vcxproj", "{ABB5EAE7-B3E6-432E-B636-333449892EA6}" EndProject @@ -18,81 +18,107 @@ EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|ARM64 = Debug|ARM64 + Debug|ARM64EC = Debug|ARM64EC Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 Release|ARM64 = Release|ARM64 + Release|ARM64EC = Release|ARM64EC 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|ARM64EC.ActiveCfg = Debug|ARM64EC + {ABB5EAE7-B3E6-432E-B636-333449892EA6}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {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|ARM64EC.ActiveCfg = Release|ARM64EC + {ABB5EAE7-B3E6-432E-B636-333449892EA6}.Release|ARM64EC.Build.0 = Release|ARM64EC {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|ARM64EC.ActiveCfg = Debug|ARM64EC + {FEF7858F-750E-4C21-A04D-22707CC66878}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {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|ARM64EC.ActiveCfg = Release|ARM64EC + {FEF7858F-750E-4C21-A04D-22707CC66878}.Release|ARM64EC.Build.0 = Release|ARM64EC {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|ARM64EC.ActiveCfg = Debug|ARM64EC + {ABB5EAE7-B3E6-432E-B636-333449892EA7}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {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|ARM64EC.ActiveCfg = Release|ARM64EC + {ABB5EAE7-B3E6-432E-B636-333449892EA7}.Release|ARM64EC.Build.0 = Release|ARM64EC {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|ARM64EC.ActiveCfg = Debug|ARM64EC + {FEF7868F-750E-4C21-A04D-22707CC66879}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {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|ARM64EC.ActiveCfg = Release|ARM64EC + {FEF7868F-750E-4C21-A04D-22707CC66879}.Release|ARM64EC.Build.0 = Release|ARM64EC {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|ARM64EC.ActiveCfg = Debug|ARM64EC + {FEF7958F-750E-4C21-A04D-22707CC66878}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {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|ARM64EC.ActiveCfg = Release|ARM64EC + {FEF7958F-750E-4C21-A04D-22707CC66878}.Release|ARM64EC.Build.0 = Release|ARM64EC {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|ARM64EC.ActiveCfg = Debug|ARM64EC + {FFF7958F-750E-4C21-A04D-22707CC66878}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {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|ARM64EC.ActiveCfg = Release|ARM64EC + {FFF7958F-750E-4C21-A04D-22707CC66878}.Release|ARM64EC.Build.0 = Release|ARM64EC {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 diff --git a/ide/vs2022/mimalloc.vcxproj b/ide/vs2022/mimalloc.vcxproj index fb13cd1f..34a9317a 100644 --- a/ide/vs2022/mimalloc.vcxproj +++ b/ide/vs2022/mimalloc.vcxproj @@ -5,6 +5,10 @@ Debug ARM64 + + Debug + ARM64EC + Debug Win32 @@ -13,6 +17,10 @@ Release ARM64 + + Release + ARM64EC + Release Win32 @@ -55,6 +63,11 @@ true v143 + + StaticLibrary + true + v143 + StaticLibrary false @@ -67,6 +80,12 @@ v143 true + + StaticLibrary + false + v143 + true + @@ -84,12 +103,18 @@ + + + + + + $(SolutionDir)..\..\out\msvc-$(Platform)\$(Configuration)\ @@ -115,6 +140,12 @@ .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)\ @@ -127,6 +158,12 @@ .lib mimalloc-static + + $(SolutionDir)..\..\out\msvc-$(Platform)\$(Configuration)\ + $(SolutionDir)..\..\out\msvc-$(Platform)\$(ProjectName)\$(Configuration)\ + .lib + mimalloc-static + Level4 @@ -200,6 +237,33 @@ + + + Level4 + Disabled + true + Default + ../../include + MI_DEBUG=3;MI_GUARDED=0;%(PreprocessorDefinitions); + CompileAsCpp + false + stdcpp20 + + + + + + + + + + + + + + + + Level4 @@ -298,22 +362,62 @@ + + + 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 false + false true true true true + true true true + true @@ -322,21 +426,26 @@ true true true + true true true + true false false + false true true + true true true true true + true @@ -347,8 +456,10 @@ true true true + true true true + true @@ -356,8 +467,10 @@ true true true + true true true + true diff --git a/test/main-override.cpp b/test/main-override.cpp index 3d56ae42..e7499f2a 100644 --- a/test/main-override.cpp +++ b/test/main-override.cpp @@ -47,6 +47,9 @@ int main() { mi_stats_reset(); // ignore earlier allocations various_tests(); test_mixed1(); + const char* ptr = ::_Getdays(); + free((void*)ptr); + //test_std_string(); //test_thread_local(); // heap_thread_free_huge(); From 130227e39909d9ba078b84406fff3ea48caa887f Mon Sep 17 00:00:00 2001 From: Daan Leijen Date: Thu, 19 Dec 2024 11:10:17 -0800 Subject: [PATCH 2/2] update redirection modules to v1.3 --- bin/mimalloc-redirect-arm64.dll | Bin 55296 -> 55296 bytes bin/mimalloc-redirect-arm64ec.dll | Bin 100864 -> 96768 bytes bin/mimalloc-redirect-arm64ec.lib | Bin 3308 -> 3308 bytes bin/mimalloc-redirect.dll | Bin 54272 -> 53760 bytes bin/mimalloc-redirect32.dll | Bin 35840 -> 35328 bytes bin/readme.md | 55 ++++++++++++++++++++++-------- 6 files changed, 41 insertions(+), 14 deletions(-) diff --git a/bin/mimalloc-redirect-arm64.dll b/bin/mimalloc-redirect-arm64.dll index 98268796c03f790362d628c25ab684a96a6b4fd4..455f8394df8e935ddda80feb9acac3fbe2c9615e 100644 GIT binary patch delta 3442 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 delta 13100 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 diff --git a/bin/mimalloc-redirect-arm64ec.lib b/bin/mimalloc-redirect-arm64ec.lib index 1c7c368fc6ae255df671dd2ca96ae9e66ef76659..eb724d7405ec7783206578377aab5158d39c11b8 100644 GIT binary patch delta 64 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 U!}>1mpgxv%c{BC1=F5-$A16z~0ssI2 delta 7230 zcmb7JdvsG(y5Bo(+7$W-rJBUWi zyo=`I9fa7po1c;%3iMGDFmi+V3sMq+-RUDFpItJHPXuuuD9mF$)HJ~2hL;(#gndaz zrl5(KAk}P`VR(uktN~KX=0iijBnjGiw#6`bo64=IF<$a}E<+duTBqv;w+s?~vmIAnBoJa|zn&md58HyYY%a0qAzg)Hl3hvgho}_iOhRsj*61E~`UM5aDC5uxCxyISAo3Z!`4HK>oY$ zY5D(W885TSY6@hTP^b!3FZ5&1+Kun%Zjoh5Qp!t-DH$h>^b#Ta!t4)edBbe$2~qPf zVaErk?|vJN%I7Mr5>(9R8OLe%ZQ2UzR+gooHPDBZ{6Ryg>1{3NVHca3IiJ?C$1<1A za8dNuI1MY107@FiweGgchNdL-PBI}ut|T<2szE3jC&E~Xff$+`wY3tNyiTVu;uAj?I)?7gg7O@EF#EYs;~=CeGIXHO(#eR)?RmD>+mBYe2+Y5%$! z;R6P;cP(RDO1gMHzKJs4*qg{5TJKG59P$sW#Z3b+Wiof~HE{+)_?U^-;Nq&*z^4Wi zP-%4qjNb0QPoK)uZy3N=rion`lE+SGkA3LFS{SRp!n$CFd7`R#qAK1q5>@GmJY3Zh zVSDO{Jb_B9_5M-*n)i4nMcV+Ivvb+0?C~vLZd3l+pT!%`;^o~Ui&xLGmaAHpwXrN~ z14j1(`ggOL&-)y%<ya|5@v**%O2Ho<01H`|EPwBcn$n?;59VpHSps@ zuYn&H+LZdx(+Di#i@cKuzUJF_uhox6{>Qg;vqsvhtj%)!eybmvdN~bEkMFexp}5*w zT-Ih+n;s;$9n`Go@aMe4Z}|MT8=nN{0f!I(l?k;&R}TxdQ&*o8YDia42(?RB{~**b zS5ay=!Q%73%8U~(>j+nSEQ{q0%(&dP-`a6Lz&v874UdsD z%)t!ws~)@;jRwye^U)ve9nIYhO@q<6n>X%6a%!SxFy4BdPt!T$mlYTSpQ7*atjQR> zT}Fp?(v*oBmoG=drz*Rh>zR?u`FnSHxs!23Z$cdA?%5x(8IVv?|9LdueEdMm)W0{{ z)1r6^)g|oFyoH7V4t6f@n4x+VYtDBUnOEt#JiV#dI_WWu$9a%84F=WE?&QBh7qWjV zs56^Z>i#~>f51wXHLNJm7&eT z=2$0Fnfa`z=~1P)XauF(SLYB_=%dL$af9CbkX;#FlH}z4H6_z_gAR?( z&~}xCd6me|jJJ}tYSO$9vh=YzhKn;4+t@vn4rRX^S8w>>1I04_2ZP~*D~e^(e;DZ= z_F=IvX>uic+szhF+en{buT49Z=BR*S(I2DHDdAoln^Td^I!dEB{ zsTopgz7uXw{3q7z))(x~j9fa0nPyI)VOBD;j@Gh6GbfC6Vey(Pv9GYFs;o}T{`@io z{rWP3@I_RQFCzBeGgl(-qFGLQiS3^?jc#IZ&hlevDrS#O8qU23u3L8$sfr|Je%p*KsQVEfM#ub^hwy62ybRD&dH_C?5)y* z>CeMMUHlH8h`UJfqx$xK1|3i4enesKntxR4-V3Z?PEqEy@36(upNE&@K{*Fm)ttrX ze0KJSv(at!Mc(a_@8R{>8GhQFW~QmLx#9PrQKjHDvT!EBf zAr{(_JHSN|K0YEM$*F1{vqtjQ)V5!RcToRiCr!-02NuV&whxsHsvTDj}$ z)6wX0s&?LvMsaU=8i0*r2vMx4=d`lR`2w9;f=~W$YhbTc z$d*@fDQQX$(Oci35A^PS-1tncl2f^o79ZdlK0U|Bp=CwKxN&x?g&*saZSQ?voI|{x zN4fV9c4XeLq?&J{QFR2nFfTu88MjL8&b)G(&L+*zX_;57Pqtfq^i6GWqcPcTVU*P? zAEEDd%OuUvt=91GF|4c9yBpRS@z}EdSVuheH+t-F5t|o}#S>#G(A{kO$mkE2;=#3g zaIy&g6Z^~jp_9Izsu$~2$00^PIScp!?~Xl)H{hXud>&sW#+GbWvVa*XirIw)wxluW zNX=s3ESO*zQmokI*Hd!ePsL-^m~;OZ#Hmz#hb*qn-TIH4m!o;hl2_ucEgV&b@5g9SiuO5B`%Ke5Gqle^+UH=ivbgIGZFzYImKc9$1@;L1R$%&0 zy?wmE4q?}=`e*Fr3pWu`jN$C|L8=MKfu7(`@atX}ChRyOw0Ef92Q_PprtlZ5iH+-; z8?BqSXl6J%K_+foTh~};oyKk2D;c+K<2FK8!AFYg)*V|L8aMN69Z$}S(EY5tcI{gG z@CMjJk3bS&Z`R|z+AAUQPh6)P_`6{i?@&*QuOF;4YEz>Pe>S7{)u|`Bz&6?4{Q@3-oBkTYwwmrcT(nWn<&Ux`vIr)~!`)>y{YU$u;%?wz_SbON!U6 z86&aVYw|5c+Z(q^n>TK*YiQWIrm)B-*@`xfQS#QFrKx}7ujF_+=ZF{YsZ>&E!*rVF z5Djv?A*d9tM}tQ+)W;jb%Ak#ocu#@2y-yD~Bmz3)4SuBP4+zKYZasBG1gPgr zlUU*&q*VmmD@jGPYWfX+XOlUqAu;vuhg~H&_cH`dj zUO}z1w2&}|IqD<1Dom;{HPF->qEL>ylO#;`xGB>qOm2bR8~SjYg&q(XyrB=bL+Bxa z-7&pJ&xTF+1jZq(eF9CN>a9J(OHvA-!=y;UY!~Ph7!+<1WzdrzS}d&f0>#9VzK8Tq zV|sI}eG|oi>Fx?TEg(#XVok!=UHiA8oub{;AKE2Mk^4f!_l2sW-5d{1yBF*2CbDQV zUnp^k|1^e!6_3OcYVGiEc+@lQY^ioM!LjuDBoh$T;BFcfI9y&-^Re|`W zWY1AdU5+a17U&S@6VXKZ;`bPyTbSzw_7Cri-=hR!JtVM8pkK_t4|9YPgtbrLJym~} zOtm+&kJYrVjLz_9QN>g&)c%-sTGg%WLN9k81URncO)Ek-WTxk}eV zT1SO$VfG0;B+xJ1B1(BzcSg%L{1#y*BzX|7cDQ1gfu|t^_6TrzCLw*WOTc-Md*E(h zFT}PDZNM&EJM7?o3n8~5SK-qKTr-4_Zg3wkFB`WB-Vg98NDp`iu;ms$_}!)t_%-e- z5pXh;kmZmra4+yT5D5u7fZsw);3O9X4a1WN?gl;u$>Bc0Jbsk`=huoA5Dz%NUNl3T z;QX3#5h8CRE!ur!n1oKyAOQrzZVco4X!3Nyqx@FfUoY(Wx`&mpEpR0Ygl zhLM0vKo=wj+zs3bk-+`Hry(}*5b!d@4&DPaRAZxon}JgxPH-o114IV*0S`mm;2pqA zE%@+2=>ewJU>3m5z;Z}ExEuHw#0QSAbJ7WE1`h!*L;T>l4Ukk1mImAmoC^tZf8aUD zA@B%Lg>-=T0W+7QFYp!##03dKaRYZiy1@Ow7a(Eq5b(bs-QYdI?;#Ozf}h_eL#~43 z+k!Medcbk^ll>4CJP14m=>v}dzk}QZC-`YEei;5c^44v3xm1H%vp_Xl2wIKgqnAq#7<1mL){kdqKM_o+3Z`qfy1 zCcHERSo+0T)UPbO`0teZnISTg2HB{{BK!|9Jr(qddStmNI;2h2_I_#`FWjb^YZl8snGUs5M*+$v>y%((A zS~ioUy`g@o|Oczpg>9C zc`9;B@&-axc(pWVTj52DzS&d+|EYkJ0Ls7eLlC46-=U^~kv;?}6K zJEv%cU3ucgp)z@iPg+6I{Ax%^U|4Y|h5zE~g@wSdbcBloiwfO)@t0#|q1nK!KF}bi z{0c~kmrut(S++^o>)0{}s){UC97Tx3CzQLqHu7^kVjFxkm}9A9@W;&JM#+*A& z#Med)g_b-K(`Z7aksB3sxX~a7L3tKhZu#>*BCNwVASG?dLgH^h;uEHNh^h5Y#x%Sb z(=f3aXc!h^iV{F#ii-B5KPiXW5Tj}*MvHy@U}_!zC6pEPfS9VGMXe!0t856LT#?o& z#1MrT5{hFahPDS!X5GsaJc7BxqpeVQbd(E^ zPQUQz3JQ-fu?{Exu%w-9_6ltQ4O7f-(Gx#(E7u!n=%rN6=RnNY4Jx6s-V#16)R6og zZzCjbu`xBO0q$$41%+VXw+doFDmEJ8Lm7#n{priPHMi{+|Ppvy6Nu9>4^||P?$S(as3F^TAnCV9Q@gFmv zM<*iOQ?E)S@~OzchOVTII?BHkPCxLvmfS0A;Wi2F)Io0Lf$Msb-q231m$zd7=3KZC zE^SUr^Z%9{pkjohVFFNam4rNWYmpBB+vaszE$D@cbtQybq$TQs8~PIdT`b$ufu`}f zE&q}!-eJl0tH}Yuy$V9{5?}BDWc9)CiDepJTa|`ea;)ej{EM8mXbS%>huiwAyMkBf z>lL67xS=TFKNByxRxWn`E-CdsutALSNAccVkH-6i1{V)RmwVx0`f^jzSNLYGRrBBf z@r^-GJaBz!F`t50ZrzR!;itE5L2i6>>+VL~2saC+p_gZca^r8#5H0BC=}_4$Y;*c? z75d_@z!r}Gj;w1&xOt*Bvor*C6Gc!x)t-4WjY4H~z>xyYc^*!?niF_Q9Q15_go_cC zKtoL0u==nkmJQo%4AiISDgUw%7Za?+WR%S{39Nyu3yn)U6yJXy7ToFJXJ6Fhxfk9_GN6Cmt%}TT7AtF`5RH-S`;J0?b`J zx{VMI>^mMRCN6k*CGO%OiPvX22uY}&BuUWTkC0#zQ8xbr0M$S$8QU#)>J-q}nwF@l z`R_%UkQyw-Lq(cz;(qvWp^=nBD>oNtn4|pFf+;QKR}x=4q15I=>Q*`t;z%LVk#0R) z2HPPYMsuxuX#HZuTSH|r(E%A5b3$Us1|EC$!N)DlU;UT_uDkyoXhJe|@a^rHlBFNx z2iv!&%7t>0!@cI409ld(z8_l|C#!?KJR*A`1DEIH3vly|w%k%R{|NA61Zon2Z;E*N z4L;8>#ScIZc1MnhZ=ECWQsHyRzd7WI75nChd1!@S8%=5Z;K=NpylzP!x*vrtft6O}z6_jUTAM1=v_}ze zAj+RbzC=k)W3S1)_Q@5=%sr@E>Np$&k%$f99#cck3%?O|2bqKk64IQ6k@lIeOK6vw zp9|ww?Q8Qvtbf9L^47_^?eIE=U&~vE_TV#lx#)d-EiXet-NB#aX;Y31x=`D)`U0>oHB_*?EZyR zUq*zpUX|fKNx>ThSxN9S4sR;hvBH}Uzr=u=fVzR^((w-pK2mD!5EuEQDQYL)v17zg z;G(E)Rh9lqV8YiamD>dP<=R>zMCp<6b8g$Q+GG2(7?!Xq^by<6{v>3Le8F8s@VLBt zH&Rp|t@c+}9;yDpfhsEUsOS+&Id-7-)g#BNj~>+H_%n)30VRl(q76jNM!g+v004GHleI85!q}~KmO>koQ zGR2z|t$7U9dVtwLCLogRZmfRsvbqS67pOeJtr56BKs7-132u~dQ#t^JfqLJ>7hnEB zJp`}AKoda3;5ZSIO#_;L>@`__j-s{rQ%^dC6i&_s30L+*Y;ml&jXTnfj^)E;1&p629N`24-f@hig44b0M!r<{53tD zcmjq_!YAF05N&398{n>l%y>ek7cg|xW0`)yqX`+NP_#1z7*0y>i5iuypq>I01Jb+=(L6)^UVr_v z(ges0M6?;$_WSA@Ky5%*$O_0+5IOY(pm`uI{E)5zZcXI+>jzP!=x=YPM5bQ%At(w9 zUVh4s^pR&y#Zcoe^GoIr%|Ej?+fLgeHkqBa+wI5g&GvWgU)jIwIP3VmgK@s%yz0z$ zSzQ6wm}`~W>#lTPcJppZPfJ=>A%U>p|5w1aodI_4pNJ3#2agV>lL<3DOfR#C^|Iw`1zW|+4GP1sVbm~Ym@qUM zn~gzZhtXjwFcq5im|~{5iOQ4a$@BX22J>q2{rM;IoAPtbjM-#%n0fQ8dEVS(>9zD( zDy&u3BUYVFZ_BpbwN2WlY|{s9ysgvTWe?lC?LBs{qtsFE*ypHlD4euY>l}r%A9qeT z?>d`ZL06lr(^cRubQihzKoQ2>R0rI~5HQ6^89Ae12ALsdnDMhG*m|}JN{um?3>JgK LP+-89B%k~*LBs2s delta 5732 zcmZu!4_H%ImVY+{j2OrR`KLyW6f0=dmwzN7383XEQ_VC`;=0v#prSsMRz{<>T@h-) z1|G~}FP);ric@x%>DV1wsAVkMjg}RhrCpq|9k*pWOb2J4AM|VbZFVQ!MziO>m!REU zzVC4F`JKP_+o&}-LiF`U;UYy-UI$?)&*EQ!B6aX4rTX9$5j6Xc$_@V6_#xrqz+w48 zWERyLDeA~WJgbOf!+a7!T4~=IqJEJuUO#$+jI-}c!s{;z7jas`qj3P@s)XuHB3#D? zTG$}(4BDJoM{-^y;qg?0-6F|Ct-e2jJD>9&pDrTq5YGnUSingbUn`OF?m(P7)XLuT zL8{obAYD&XDM;?HY&K6!rPZnMi58L@?={pS`V)m@=>xAWcq`7Tx*R_Z4q>sfS#7&h z+2RcI?r=G*(8b9sDOy+qMe&X(4=dD-DjwT3SBv4cb%;SzKg;OwBUG~Egl6a@G zERr5vg&nH(+1G-R2=7$1AXp>u^W=x)@aN{|IJ$%>aYKc?56^B!PQtSt1;r!TR$ddH6jHVWk)3c zBR=iprgq+-@@}~b?k_UIAm$(Z5=L0zn$8s7bF1_`` zVopOb|Dv;2=aA2o6ow-s<@E|#YB@JZoKX*^H5fA+6w_h{@z<%D4Ps$#Kw+YG33c2?ZmK5yfVC7Q7#l}NHn^I?eW(4P^zX^L6hqNE1vCf2|Ws`fh6+=xvsHGo2I(# z{I2;1Gz#M23ng(Nmo6a^F06=V-|emMraTG~6^_peu(=C1N!$?l7S4Vv_KEA_MMkp^ zgRbo8VlHbB$m*jq=u5LnTy+D%4oH~la(c9bsJKRge<^N*9Q1|=`$$X;y7_IXKSX~qZopVsU(RjjHuD79iZikfA|9X0GNZ=_u4HXNs2iiDucZDY2X>2s zVC~Jf;844ScX8iR8+snkEM12T1N5?YQ0mj!pre3SwEdN7Xv^h73!YRTM7MGA^0Nrz z&z64y-SSr}y3uoZ$I3IZ+ke1!R%+3E0~wnAGUUf6vy0FX{6Y2(R63CU&>@-Z*6#*R zukMO_SVMUhLO=FCucqL!Sq=r|H*27_3h&h%QeJ+u+9fQ+C3#w;!9UK+%q;ngY`Suk zrQy<1@XGK`x}{WuFXXMvQiB~|rXdd%U#ceN-fKDK!gKi3ybkm^-oN&rmXm#fR~BU9 za?ZCGiuv*Hh(nreHU7(WEP57SShpNf{)ct!`ZsTh!JrAIf`Rv%vRwGH^x(Cyp*y$8 zDeng##HsK@yiw~+V;-IRAvI4lK+F3z7Wx}Vk#0oC+H18H*b<^{Qj|=aECG7ZjB2OD-1H^20 zA$%LaM@I`AsBs2J>*n3G*PaOX@(OHn4J%@CEL_*nC>tauaJc04OAb1NTHYOM@SaG7 zZCS*_p(9>`v%e>DRr_(U=A9w$^J$c-`6`$}w@qvQjjH)wm|tfjup1#>0i{)np9%sa zwZ#^8##=uF(OW<*8e_C1Q4Jh*kcE)W5bvI8sX!WuYY4TvBfbihJ1?9Dp?01VfMcSM z4?HMS+Wizw9<-^ua1Err4e^`FHcvq=Gh!|zMoKwn0aan`6seZ_&YKV)GWH&a2?+wj2jw+)|YdS3{iOT}7Y4epACgB>0J#WriKSy~gMORsr2fjB#d|4LH&hd(t z#Di{FAk?{pRzvk-%LidgNuuU^$VRRwy}z%3;NL=KiMAmoJ*pz@fU{W>Eda3D!q0@ zd2&cSYuMm8rj6$14@zXSx4rct>ezZoBQ%byjrHr6eJU;$DhVxxPkXUk`1zm2C6g=g zp4fj=xHb-QeH$xHD-)(|FdfD^(@LbqWhO1UfKQrM$ox0)>!z&4eWERV1J`4}DZSvO zo1$}Ad=6I$cb4PepIG_zF~t(;YoLV<&pNm|B8FE6+KMWFi7WU=(Hy?0?<mC z2jZ>oC%jyo69+%`@S5UHsg=tpst%|Fs2_+@;}?prB<-}pl>E^Ybqa6VG^(H8L{S^6 zt2|Wz!gnjhGy?zhkt0Njg5Pvdxe9gX(VEDz>tw_1P z=GhugO;v5p3wx^v?v>s{IAI%O&aFE9OuljNo;(fwV%mG;Q0=k3n(Wm_vNcs6&FUko zR@cFQ&mqk-HP2Ml)*jkJfZWwJc>{a4y@ldSU!~~X_{Tq5hBdBk+%Kc!IY5q!NcCe9 z0-r^6r-(343F!f(Uqq&&R>Odd1ER($kH04RnFM4;)afb{tr7x&$h&ZH(NbJdEQAH*g$F^qD1a8 za*FZ_m~&BiT~yu(JX}p8PiTXAcXzZNsr|r>0Nny25vgq;xsn(JR(>9g&c~LRss@$; zDgh#jw5Ul}0$T?Jk0~Aa0Y&4+1DD7iCUgTZcs>?q9Jm>vFc7iUh}Nl^*I_?_b^;NY z5#fXr!1`XtZ`NKWu9CWd?TcyzNS#D<7?80jIx&yl0%RtN(zvRQoUyc&AVDrbVS!wb zWq(vcC*}fT0or~6KT#*0zG`6WfEvjN$`di=q)tHkfJmw|e(`|lJk<}#EubI}^C)bk zRKv6$xSl{vPppP?F|ZXt9MFTsN@)b33uq9?1ui=9rep6XO%gRA60R;5E``2G(ORJG zKpmjlLv&L-z;yx*0rdmgKd|Z8eguox4D>yBJrO52*$^}EXj2F^Y&BP!Zam?}04rk$0g?)wJ6xxc86}?n+vk0=#Kq4?C zGo{QEOcld1hnQnbJ@X1Pz>F}zX8y<|>(sinI)`q%&aJD~HS5ml{!TZj8`Is?W$7Q* zJM^dYXBzZB)xV=ZV0hbb#qgowC&pKemy9#UHTk2KVr!!<)n06$aQwj$cDz*xkr;~7 z!Z2W}F@IuaEyI@ITfZ!rEl9F$unpUm**Drd?RV_w3O^#r6;sr97#1*UMy=bTJE-Gz zpXdbLS30GB6$EGXPw0Q7_vst@^q2K344VuG4T9mWVT*B>ajoeQ(-XEz+df;Z?Xc~* z?WB!7D&UWzt!Y-qI%S=vqZev5Qdn2y zDe54}K$(0n*qLHxH>1!gb-B7p-7Q^E*VCZy)%*3ehB`x=!D6%-X7!JuUr#>iM0JJS$i!VIO8>lC^X*qI5)YD(9k z@6>lgVtxAEhDrkm$$1R9My)Yu3>m|apx-oN8iOR;@;mZ7^SkqRns>t~sy1`x980bx zU^5W>)y5n+L4tA47=VQPO@pQ((=eorFUmgqA26g$dH?_b diff --git a/bin/readme.md b/bin/readme.md index d133eea2..259d74d6 100644 --- a/bin/readme.md +++ b/bin/readme.md @@ -5,24 +5,26 @@ is robust and has the particular advantage to be able to redirect all malloc/fre the (dynamic) C runtime allocator, including those from other DLL's or libraries. As it intercepts all allocation calls on a low level, it can be used reliably on large programs that include other 3rd party components. -There are four requirements to make the overriding work robustly: +There are four requirements to make the overriding work well: 1. Use the C-runtime library as a DLL (using the `/MD` or `/MDd` switch). -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, 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. +2. Link your program explicitly with the `mimalloc-override.lib` export library for + the `mimalloc-override.dll` -- which contains all mimalloc functionality. + To ensure the `mimalloc-override.dll` is actually 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, 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` (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`). +3. The `mimalloc-redirect.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`). 4. Ensure the `mimalloc-override.dll` comes as early as possible in the import list of the final executable (so it can intercept all potential allocations). + You can use `minject -l ` to check this if needed. For best performance on Windows with C++, it is also recommended to also override the `new`/`delete` operations (by including @@ -32,17 +34,39 @@ a single(!) source file in your project). The environment variable `MIMALLOC_DISABLE_REDIRECT=1` can be used to disable dynamic overriding at run-time. Use `MIMALLOC_VERBOSE=1` to check if mimalloc was successfully redirected. -## Minject +### Other Platforms + +You always link with `mimalloc-override.dll` but for different platforms you may +need a specific `mimalloc-redirect.dll`: + +- __x64__: `mimalloc-redirect.dll`. +- __x86__: `mimalloc-redirect32.dll`. Use for older 32-bit Windows programs. +- __arm64__: `mimalloc-redirect-arm64.dll`. Use for native Windows arm64 programs. +- __arm64ec__: `mimalloc-redirect-arm64ec.dll`. The [arm64ec] ABI is "emulation compatible" + mode on Windows arm64. Unfortunately we cannot run x64 code emulated on Windows arm64 with + the x64 mimalloc override directly (since the C runtime always uses `arm64ec`). Instead: + 1. Build the program as normal for x64 and link as normal with the x64 + `mimalloc-override.lib` export library. + 2. Now separately build `mimalloc-override.dll` in `arm64ec` mode and _overwrite_ your + previous (x64) `mimalloc-override.dll` -- the loader can handle the mix of arm64ec + and x64 code. Now use `mimalloc-redirect-arm64ec.dll` in this case to match your + arm64ec `mimalloc-override.dll`. The main program stays as is and can be fully x64 + or contain more arm64ec modules. At runtime, the arm64ec `mimalloc-override.dll` will + run with native arm64 instructions while the rest of the program runs emulated x64. + +[arm64ec]: https://learn.microsoft.com/en-us/windows/arm/arm64ec + + +### Minject We cannot always re-link an executable with `mimalloc-override.dll`, and similarly, we cannot always -ensure the the DLL comes first in the import table of the final executable. +ensure that the DLL comes first in the import table of the final executable. In many cases though we can patch existing executables without any recompilation if they are linked with the dynamic C runtime (`ucrtbase.dll`) -- just put the `mimalloc-override.dll` 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 -(or `minject32` for 32-bit PE files, or `minject-arm64` on arm64 Windows). Use `minject --help` for options: ``` @@ -72,3 +96,6 @@ examples: > minject --list myprogram.exe > minject --force --inplace myprogram.exe ``` + +For x86 32-bit binaries, use `minject32`, and for arm64 binaries use `minject-arm64`. +