After building and installing from git master, I can no longer compile even a trivial test case:
#include <_mingw.h> int main(){ return 0; }
yields:
$ mingw32-gcc foo.c /home/keith/mingw32/lib/libmingwex.a(dirent.o): In function `opendir': /home/keith/src/mingw/mingw-wsl/build/../src/libcrt/tchar/dirent.c:219: undefined reference to `__findfirst64i32' /home/keith/mingw32/lib/libmingwex.a(dirent.o): In function `readdir': /home/keith/src/mingw/mingw-wsl/build/../src/libcrt/tchar/dirent.c:295: undefined reference to `__findnext64i32' /home/keith/mingw32/lib/libmingwex.a(dirent.o): In function `rewinddir': /home/keith/src/mingw/mingw-wsl/build/../src/libcrt/tchar/dirent.c:398: undefined reference to `__findfirst64i32' /home/keith/mingw32/lib/libmingwex.a(dirent.o): In function `seekdir': /home/keith/src/mingw/mingw-wsl/build/../src/libcrt/tchar/dirent.c:466: undefined reference to `__findnext64i32' collect2: ld returned 1 exit status
Pre-processed source isn't particularly enlightening; (the bug lies, not here, but in the interpretation of _tfindfirst and _tfindnext, when WSL's dirent.c is compiled, during the build of WSL itself):
$ mingw32-gcc -E foo.c # 1 "foo.c" # 1 "<built-in>" # 1 "<command line>" # 1 "foo.c" # 1 "/home/keith/mingw32/usr/local/include/_mingw.h" 1 3 # 32 "/home/keith/mingw32/usr/local/include/_mingw.h" 3 # 33 "/home/keith/mingw32/usr/local/include/_mingw.h" 3 # 1 "/home/keith/mingw32/usr/local/include/sdkddkver.h" 1 3 # 26 "/home/keith/mingw32/usr/local/include/sdkddkver.h" 3 # 27 "/home/keith/mingw32/usr/local/include/sdkddkver.h" 3 # 34 "/home/keith/mingw32/usr/local/include/_mingw.h" 2 3 # 246 "/home/keith/mingw32/usr/local/include/_mingw.h" 3 struct threadlocalinfostruct; struct threadmbinfostruct; typedef struct threadlocalinfostruct *pthreadlocinfo; typedef struct threadmbcinfostruct *pthreadmbcinfo; typedef struct localeinfo_struct { pthreadlocinfo locinfo; pthreadmbcinfo mbcinfo; } _locale_tstruct, *_locale_t; # 2 "foo.c" 2 int main(){ return 0; }
Within your current ChangeLog, I see:
2012-09-11 Earnie Boyd <earnie@users.sourceforge.net> Redo the filters based on assumptions discussed in mingw-dvlpr list. ... * include/io.h (_findfirst*): What a mess. Reworked. (_wfindfirst*): Ditto. (_findnext*): Ditto. (_wfindnext*): Ditto. (_finddata*_t): Ditto. (_wfinddata*_t): Ditto. (_FINDDATA_T_DEFINED): Add filter. ...
Unfortunately, however you've reworked it, it no longer seems to DTRT for me; with mingw32-nm, inspecting the dirent.o build from WSL git master, I see:
$ mingw32-nm `find . -name dirent.o` ... 00000000 t .text U _GetLastError@0 U __errno U __findclose U __findfirst64i32 U __findnext64i32 U __fullpath ...
whereas, inspecting the corresponding build from my end-of-line mingwrt CVS sandbox, I see (as it should be):
$ mingw32-nm mingwex/dirent.o ... 00000000 t .text U _GetLastError@0 U __errno U __findclose U __findfirst U __findnext U __fullpath ...
This may be a red herring, due to me having cloned the defunct pre-Allura repository.
Unable to reproduce, with clone from correct source. Closing.