On 7/31/2013 17:59, Corinna Vinschen wrote: > On Jul 31 12:55, Pavel Fedin wrote: >> Hello! >> >> I have occasionally found a little problem in path check code. Attempt to >> reference thing like '/..' fails, however at least under Linux this resolves >> to root, and you can actually attempt to go past-root as many times as you >> want, e. g. '/../../../..'. The bug was occasionally revealed by 'make' test >> suite. >> I wanted to fix it, but cannot rebuild Cygwin DLL. The build ends up in: >> --- cut --- >> x86_64-w64-mingw32-g++ -o strace.exe strace.o path.o -L/usr/lib/w32api >> -static -lntdll >> /usr/x86_64-w64-mingw32/sys-root/mingw/lib/../lib/crt2.o: In function >> `__tmainCRTStartup': >> /usr/src/debug/mingw64-x86_64-runtime-3.0b_svn5935-1/crt/crtexe.c:285: >> undefined reference to `_set_invalid_parameter_handler' >> /usr/x86_64-w64-mingw32/sys-root/mingw/lib/../lib/libmingwex.a(lib64_libming >> wex_a-mingw_pformat.o): In function `__pformat_exponent_digits': >> /usr/src/debug/mingw64-x86_64-runtime-3.0b_svn5935-1/stdio/mingw_pformat.c:1 >> 76: undefined reference to `_get_output_format' >> collect2: error: ld returned 1 exit status >> Makefile:143: recipe for target `cygwin-console-helper.exe' failed >> make[3]: *** [cygwin-console-helper.exe] Error 1 >> --- cut --- >> Likely some MinGW CRT bug ? > > This also occurs on Fedora right now. > > AFAICS, the culprit is that the latest Cygwin w32api package doesn't > match the files from mingw-crt for some reason. > > The build uses -L/usr/lib/w32api (-L/usr/i686-pc-cygwin/lib/w32api when > cross building on Fedora), so the libs are taken from the w32api-runtime > package. However, the compiler uses the default crt file > /usr/i686-w64-mingw32/sys-root/mingw/lib/../lib/crt2.o which is provided > by the mingw-crt package. > > This is a bug in Cygwin's Makefile since you should never use the w32api > stuff for mingw executables, only for Cygwin executables, but still... > > JonY, do you have an idea why the mingw-crt differs that much from the > w32api stuff that the above error occurs? > Likely, because _set_invalid_parameter_handler was a stub in mingwex that loads msvcrt.dll, it was disabled as a quickfix, as it was using mingw-w64 stdlib.h directly. I did not think Cygwin win32api might need it. The build should be fixed on trunk, I will roll out a new release soon.