On 2025-03-28 Pali Rohár wrote:
> On Thursday 27 March 2025 22:17:54 Martin Storsjö wrote:
> > Lasse pointed out that this seems to be due to __CRT__NO_INLINE -
> > when building without optimizations, that is defined, and we get
> > these errors. If building with optimizations enabled, it builds
> > fine.
> >
> > Needless to say, our headers need to work both with and without
> > optimizations...
>
> I was looking at this problem and investigating how to handle it.
> Could you try if the following change fixes your build issue with
> clang and libc++?
It should fix it for normal applications.
When mingw-w64 is built, at least ftw.c calls stat(). Now that there
will be four stat() variants, there needs to be four ftw() variants
too. My patch 0009.txt in [1] does that. It needs the __MINGW_ASM_CALL
redirects to pick the matching stat struct and function from
<sys/stat.h>. Possible solutions:
(1) Change ftw.c in my patch to do
#undef _CRTBLD
#include <sys/stat.h>
#define _CRTBLD
but that's ugly and possibly fragile.
(2) In <sys/stat.h>, instead of #ifndef _CRTBLD, it could be:
#if defined(_CRTBLD) && !defined(__MINGW_CRTBLD_STAT_VISIBLE)
Then ftw.c could #define __MINGW_CRTBLD_STAT_VISIBLE. Maybe someone
can suggest a nicer macro name.
(3) My patch uses __CRT_BUILDING_FTW in <ftw.h> because there's a need
to suppress the function redirects in <ftw.h> when building ftw.c.
<sys/stat.h> could similarly have __CRT_BUILDING_STAT which the
relevant .c files would define. But probably (2) is simpler. My ftw
patch could use (2) too.
[1] https://sourceforge.net/p/mingw-w64/mailman/message/59163785/
Message-ID: <[email protected]>
--
Lasse Collin
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public