On 8/9/19 11:44 AM, Alexandre Julliard wrote:
Jacek Caban jacek@codeweavers.com writes:
@@ -780,9 +780,10 @@ static int msvcrt_int_to_base32_w(int num, MSVCRT_wchar_t *str) }
/*********************************************************************
__p__iob (MSVCRT.@)
*/
__iob_func (MSVCRT.@)
-MSVCRT_FILE * CDECL __p__iob(void) +#undef __iob_func +MSVCRT_FILE * CDECL __iob_func(void)
This is breaking the 64-bit Windows build, sorry for not catching this earlier:
x86_64-w64-mingw32-gcc -m64 -c -o file.o ../../../wine/dlls/crtdll/../msvcrt/file.c -I. -I../../../wine/dlls/crtdll \ -I../../../wine/dlls/crtdll/../msvcrt -I../../include -I../../../wine/include -D__WINESRC__ -D_MT \ -D_MSVCR_VER=0 -D_CRTDLL -D_REENTRANT -Wall -pipe -fno-strict-aliasing \ -Wdeclaration-after-statement -Wempty-body -Wignored-qualifiers -Wno-packed-not-aligned \ -Wshift-overflow=2 -Wstrict-prototypes -Wtype-limits -Wunused-but-set-parameter -Wvla \ -Wwrite-strings -Wpointer-arith -Wlogical-op -gdwarf-2 -gstrict-dwarf -Wno-format -g -O2 -fno-diagnostics-show-caret -Wno-format-overflow -D_WIN32 ../../../wine/dlls/crtdll/../msvcrt/file.c:786:21: error: conflicting types for ‘__iob_func’ In file included from ../../../wine/dlls/crtdll/../msvcrt/file.c:33: /usr/share/mingw-w64/include/stdio.h:85:25: note: previous declaration of ‘__iob_func’ was here make: *** [Makefile:406: file.o] Error 1
It works fine here, I guess it depends on mingw-w64 version. Does the attached patch help? We could try to prefix the implementation name with MSVCRT_, like we do for most functions, but then non-mingw would have a problem, since it links iob.o into DLL itself. Long term, when msvcrt will be migrated to -mno-cygwin and use our headers, this will not be a problem.
Thanks,
Jacek