From 3d9d70bce09c7fdae64eee070ab87e493722de52 Mon Sep 17 00:00:00 2001 From: daan Date: Sat, 10 Aug 2019 09:39:36 -0700 Subject: [PATCH] add new redirection module; fix environment reading at preloading --- bin/mimalloc-redirect.dll | Bin 35840 -> 46080 bytes bin/mimalloc-redirect.lib | Bin 3050 -> 3050 bytes bin/mimalloc-redirect32.dll | Bin 0 -> 28672 bytes bin/mimalloc-redirect32.lib | Bin 0 -> 3126 bytes ide/vs2017/mimalloc-override-test.vcxproj | 12 ++++-- ide/vs2017/mimalloc-override.vcxproj | 29 +++++++++------ ide/vs2017/mimalloc-override.vcxproj.filters | 3 -- src/init.c | 6 +-- src/options.c | 37 +++++++++++++++---- test/main-override.cpp | 5 ++- 10 files changed, 61 insertions(+), 31 deletions(-) create mode 100644 bin/mimalloc-redirect32.dll create mode 100644 bin/mimalloc-redirect32.lib diff --git a/bin/mimalloc-redirect.dll b/bin/mimalloc-redirect.dll index 14ed46ec2c3aebed56614e50a464803f4644b397..aaecc653b849bea38fcace1c2b12a0842d41fc28 100644 GIT binary patch delta 6299 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 Ezi8}CX#fBK delta 5219 zcmbtYeQ;CPmA~)V0?A1B^M`EN2KxzQ5H<$I5Y`D!5y54ZtqBUa#ZAZ{0>$E^jY!Pm z5`vTxx~2|0hLf^P!er%d;ZG4|Q#Z|a+l?1;WGg zQMWxRW1gi??AX?_4KoE?xixhWM!xZst3YD)I)B2oLI(EUwWupEQZa3Lo0nx zE;nEW+GL066s#yL-uDCgxm=R{BwzCcgb!S6&JV=kIzGnyJbnoC7! zYD>_Zx1#w&Hkx}lXVanCprZL)Li0`D_z-#O3*Hpwp&7TJIh28>zZlIEe2zzFqe*b> z13uAV?s88i?|ucVnetTULhb~LW`Mw`pk-e7Ykdg;qq_miVcp=hQO@yvEg^rFrTqZDHcq^)#Czf5wG*`P|_ zjjS{bNOZWO2Hn}D&iPcjMT*fc{RedzS7({90j~B~LZ_$yHdYxXv2<=ukjb3xqHEnu*Lk{}U7epT_*u8{Yjg#c^KZ{Qu49ch#dWN~re7XCPrp_cP|}!{3mqQQ zG*o&~KVR8!6UWB07Ng0OyHI}MCgm2CQXqGMd{0_U=H|<1)2fj(Hi_VmPET^t$Wgk>)<$){oKk9wbMzUDl^3_V(XRV~5 zwSkgWM@bvz;^*sg9jTL0eKBtD!ZO?F-uWedJIguxBB<#C!qGc2pDuH4NA+lBfnpeU zuoffM=ScC|aa{f1v{N(B7O#uK{k(}^e2^|57cU<+EAKSakD*yZgX&`%cJZHsMBC!i)Szc1e1{bp25bcVn5J}I`s z6|=rfrLHbTPw!06%NTJqy1y7?P>@ZDjUf3o83AIO)=|(_E;%S_b4Yf&W~-1gsi`T>2qw-&aq`FKSM_wc@`JSw{UqbUM98Cn#E;kId$qLwJttsxs*N#7bhma2GOYfowIX{~)hYtLxyOIjN|6zMD&l_KuyhMdSt zbvq?eGE6l)n$kbk_?!MXr2ZkuDkylS`;5@>>xI37zE@U7##d)c=8c=`H`V^^KiB{G z_jf%w{Q5VR{r=q>U(1Mmd-W$0J-Viq{sm5=cT@W242l681NytI;9fAB9(hvC=c7IyDm6A-Sw?SlA?{ZY)j8(*SN68IRxj_xPZpF z1?SbcxW=^#u0!LTbn%hRQjpF)ybQ6S8zx16QtS6|jsja8@Zr6+kELgBqJ57plHwZY z6I_SJskCqFW<1_X8p3<@tdk7Wo6c8nf+!cR&| zE?wJyAXjZp&*u?NjP13moMJNB+XV81op;UV2`$c5T@R~h> z2?z{wBq`%bQ%o>%!8}Fk(+WyL@*l``?@Gt<3iNT7l7|&3to6qP9~a2zV&H&5-JKqV z7d7C|^$05<5HDrmfH@|tgg|9adOcs9bQ!4gXt{p<1MAl`G;CN)tw+^J^r&4QiJnn1 z{7!t@{SdNb6F!82Mfjkb3q1;~%xBC9-3>esxw(uqAN)hf@$S2?fz}Fyk;3t5E7UpL*7;b!8o`S4^9tOSxsfQj1&c+9419S!W z50FOaPT*e17U%&W|7P6*Jq(*=fvx~+Acvqkfsa9+h3+fyGxl#Vo`Vqt zz72UEdK{Qr%Gep`DzE|41Kk5W0U6@{z>APqpgZR>wiEIObRX~x4P-QfN}(;^%P_Xl2r)IsO}b{U7%Lsu7Ln;~1E2Z4WvJO^E=L=4FDjchCPK>2nR zwv0Og&n>~0LTA;C{RZ*|AF!0M4}m4%dV0ORt-bNyM6b8c*O%uu=$>F$`$n{~*h*wJ{Fp?Naj(B-S`cdC#>*#f!Q2@0AU_pH_ z5NtzE`c9?O(%I2@8aY|I)UIGx2pQSC9o@Cv;qI~S+8$?*t0&qMLr$(72s0|N+ieS+c&AYCyrr)P2&BhTbGM#ah6%>0ve7}X~8Fmg;{l${*R rB{+Ek<25?D0|OX;0@6Utodd!Xb9yF6F{)11X6B#V#VkD8ol$tQ9wXbtf9jKi qxdbOqV4TNQ!NtJv35avJCtEPd@v|_nGO#glFt9U#S({UtS~&p$7#4*9 diff --git a/bin/mimalloc-redirect32.dll b/bin/mimalloc-redirect32.dll new file mode 100644 index 0000000000000000000000000000000000000000..89b9625d107ccc203d64447d44852fd3fe1be166 GIT binary patch literal 28672 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 literal 0 HcmV?d00001 diff --git a/bin/mimalloc-redirect32.lib b/bin/mimalloc-redirect32.lib new file mode 100644 index 0000000000000000000000000000000000000000..aed3b67fb2fb832cd97d8f35a76ae692ef7ede33 GIT binary patch literal 3126 zcmcgu-A)rh6#lj?AdAsPP4q@nBSww#*FP~aq$m&x%TG$VUP`yhnr%y#^};J(z$>1B zS1{pFmqi zv}ojWMbX;U0o(>sOTh3UFmeWr9f>?kHD&!+Twh?}RHqC&CkeFoF19teZgxw%!Z<(hWW_PBPpNTF-Bn*Pe6t}j|} zoW-W+el5)~$8po6qJhslAD;Ip9r#iTI2;DfMu4L+V3zVRF=3AKDJd9~i4+)xh6I&2 zFoIzWAr)yQVMe!fX&NZZ3=h5AKMG&^eh&r$n)IGkFyu2xI`}+pb>ow6C<;zISUAA! zU9*!&Q4aSN2UA@~e^I1o^D_3gbw!*_T8@J$c`XRli`FdU<@K_y8(I==N>4NpH+a$} zt@_TFPve_@7g(jnci9nj3F&u}wpI12<5@X$j~c%y{}qBH)g?@y2)&{Z;{i3s2v6!U zc?p@51l5m-tt{P-G4>hmrit`mYqN9)IL9&)Gku4aGi=gL*JG9rd6en|}zvCxY68=fq|~I*rkl#bz``Vlyx0 zOz*esi2B+*-H&%)&?fpK>!6-4ybf;E$ V@~rqqZTSpg52>;JKXKd!^naKH*GK>W literal 0 HcmV?d00001 diff --git a/ide/vs2017/mimalloc-override-test.vcxproj b/ide/vs2017/mimalloc-override-test.vcxproj index 7df1e79a..b8e2648b 100644 --- a/ide/vs2017/mimalloc-override-test.vcxproj +++ b/ide/vs2017/mimalloc-override-test.vcxproj @@ -100,7 +100,8 @@ - COPY /Y $(SolutionDir)..\..\bin\mimalloc-redirect32.dll $(OutputPath) + + @@ -123,7 +124,8 @@ - COPY /Y $(SolutionDir)..\..\bin\mimalloc-redirect.dll $(OutputPath) + + @@ -145,7 +147,8 @@ 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) - COPY /Y $(SolutionDir)..\..\bin\mimalloc-redirect32.dll $(OutputPath) + + @@ -169,7 +172,8 @@ 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) - COPY /Y $(SolutionDir)..\..\bin\mimalloc-redirect.dll $(OutputPath) + + diff --git a/ide/vs2017/mimalloc-override.vcxproj b/ide/vs2017/mimalloc-override.vcxproj index 7d452b55..6847e388 100644 --- a/ide/vs2017/mimalloc-override.vcxproj +++ b/ide/vs2017/mimalloc-override.vcxproj @@ -101,15 +101,20 @@ Default - %(AdditionalDependencies) + $(ProjectDir)\..\..\bin\mimalloc-redirect32.lib;%(AdditionalDependencies) Default - DllEntry false + + COPY /Y $(ProjectDir)..\..\bin\mimalloc-redirect32.dll $(OutputPath) + + + Copy mimalloc-redirect32.dll to the output directory + @@ -124,17 +129,16 @@ Default - %(AdditionalDependencies) + $(ProjectDir)\..\..\bin\mimalloc-redirect.lib;%(AdditionalDependencies) Default - DllEntry false - COPY /Y $(SolutionDir)..\..\bin\mimalloc-redirect.dll $(OutputPath) + COPY /Y $(ProjectDir)..\..\bin\mimalloc-redirect.dll $(OutputPath) copy mimalloc-redirect.dll to the output directory @@ -159,13 +163,18 @@ true true - %(AdditionalDependencies) + $(ProjectDir)\..\..\bin\mimalloc-redirect32.lib;%(AdditionalDependencies) Default - DllEntry false + + COPY /Y $(ProjectDir)..\..\bin\mimalloc-redirect32.dll $(OutputPath) + + + Copy mimalloc-redirect32.dll to the output directory + @@ -186,15 +195,14 @@ true true - %(AdditionalDependencies) + $(ProjectDir)\..\..\bin\mimalloc-redirect.lib;%(AdditionalDependencies) Default - DllEntry false - COPY /Y $(SolutionDir)..\..\bin\mimalloc-redirect.dll $(OutputPath) + COPY /Y $(ProjectDir)..\..\bin\mimalloc-redirect.dll $(OutputPath) copy mimalloc-redirect.dll to the output directory @@ -214,7 +222,6 @@ false false - true true diff --git a/ide/vs2017/mimalloc-override.vcxproj.filters b/ide/vs2017/mimalloc-override.vcxproj.filters index df0bf5ed..ffabddac 100644 --- a/ide/vs2017/mimalloc-override.vcxproj.filters +++ b/ide/vs2017/mimalloc-override.vcxproj.filters @@ -67,8 +67,5 @@ Source Files - - Source Files - \ No newline at end of file diff --git a/src/init.c b/src/init.c index f807d74a..7215e4fb 100644 --- a/src/init.c +++ b/src/init.c @@ -388,7 +388,7 @@ bool _mi_preloading() { } // Communicate with the redirection module on Windows -#if 0 +#if defined(_WIN32) && defined(MI_SHARED_LIB) #ifdef __cplusplus extern "C" { #endif @@ -475,9 +475,7 @@ static void mi_process_done(void) { #if defined(_WIN32) && defined(MI_SHARED_LIB) - // Windows DLL: easy to hook into process_init and thread_done - #include - + // Windows DLL: easy to hook into process_init and thread_done __declspec(dllexport) BOOL WINAPI DllMain(HINSTANCE inst, DWORD reason, LPVOID reserved) { UNUSED(reserved); UNUSED(inst); diff --git a/src/options.c b/src/options.c index 01620e75..9f045905 100644 --- a/src/options.c +++ b/src/options.c @@ -208,8 +208,25 @@ static void mi_strlcat(char* dest, const char* src, size_t dest_size) { dest[dest_size - 1] = 0; } -static const char* mi_getenv(const char* name) { - if (_mi_preloading()) return NULL; // don't call getenv too early +#if defined _WIN32 +#include +static bool mi_getenv(const char* name, char* result, size_t result_size) { + result[0] = 0; + bool ok = (GetEnvironmentVariableA(name, result, (DWORD)result_size) > 0); + if (!ok) { + char buf[64+1]; + size_t len = strlen(name); + if (len >= sizeof(buf)) len = sizeof(buf) - 1; + for (size_t i = 0; i < len; i++) { + buf[i] = toupper(name[i]); + } + buf[len] = 0; + ok = (GetEnvironmentVariableA(name, result, (DWORD)result_size) > 0); + } + return ok; +} +#else +static bool mi_getenv(const char* name, char* result, size_t result_size) { #pragma warning(suppress:4996) const char* s = getenv(name); if (s == NULL) { @@ -223,17 +240,23 @@ static const char* mi_getenv(const char* name) { #pragma warning(suppress:4996) s = getenv(buf); } - return s; + if (s != NULL && strlen(s) < result_size) { + mi_strlcpy(result,s,result_size); + return true; + } + else { + return false; + } } - +#endif static void mi_option_init(mi_option_desc_t* desc) { - if (!_mi_preloading()) desc->init = DEFAULTED; + desc->init = DEFAULTED; // Read option value from the environment char buf[64+1]; mi_strlcpy(buf, "mimalloc_", sizeof(buf)); mi_strlcat(buf, desc->name, sizeof(buf)); - const char* s = mi_getenv(buf); - if (s != NULL) { + char s[64+1]; + if (mi_getenv(buf, s, sizeof(s))) { size_t len = strlen(s); if (len >= sizeof(buf)) len = sizeof(buf) - 1; for (size_t i = 0; i < len; i++) { diff --git a/test/main-override.cpp b/test/main-override.cpp index 58d06c6a..385778c7 100644 --- a/test/main-override.cpp +++ b/test/main-override.cpp @@ -23,11 +23,11 @@ public: int main() { - mi_stats_reset(); // ignore earlier allocations + //mi_stats_reset(); // ignore earlier allocations atexit(free_p); void* p1 = malloc(78); void* p2 = mi_malloc_aligned(16,24); - free(p1); + free(p1); p1 = malloc(8); char* s = mi_strdup("hello\n"); mi_free(p2); @@ -40,6 +40,7 @@ int main() { delete t; t = new (std::nothrow) Test(42); delete t; + mi_stats_print(NULL); return 0; }