On Tuesday 03 December 2024 16:22:05 Martin Storsjö wrote: > On Wed, 27 Nov 2024, Pali Rohár wrote: > > > i386 DLL builds have same issue as EXE builds, entry point (DllMain or > > DllEntryPoint) can use SSE and therefore stack should be aligned to > > 16-bytes. Use attribute force_align_arg_pointer for __DllMainCRTStartup, > > like it is already for __tmainCRTStartup. Also mark it as static. > > > > This code was copied from crtexe.c __tmainCRTStartup() function. > > --- > > mingw-w64-crt/crt/crtdll.c | 6 ++++++ > > 1 file changed, 6 insertions(+) > > > > diff --git a/mingw-w64-crt/crt/crtdll.c b/mingw-w64-crt/crt/crtdll.c > > index f59d7326236a..754648a6382b 100644 > > --- a/mingw-w64-crt/crt/crtdll.c > > +++ b/mingw-w64-crt/crt/crtdll.c > > @@ -150,6 +150,12 @@ DllMainCRTStartup (HANDLE hDllHandle, DWORD dwReason, > > LPVOID lpreserved) > > return __DllMainCRTStartup (hDllHandle, dwReason, lpreserved); > > } > > > > +static > > +#if defined(__i386__) || defined(_X86_) > > +/* We need to make sure that we align the stack to 16 bytes for the sake > > of SSE > > + opts in DllMain/DllEntryPoint or in functions called > > DllMain/DllEntryPoint. */ > > This feels like a typo - I presume it should say "in DllMain/DllEntryPoint > or in functions called _by_ DllMain/DllEntryPoint"? I see that the existing > case in crtexe.c has a similar typo.
I copied the comment from the crtexe.c. It looks like that there is missing some preposition (from? in? by?) but I do not know which one is the correct one in english. So I would let it to you or other people to fix it. So feel free to modify the comment at both places. > The change itself seems ok to me. _______________________________________________ Mingw-w64-public mailing list Mingw-w64-public@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mingw-w64-public