Erik van Pienbroek schreef op zo 14-07-2013 om 13:25 [+0200]:
> Hi,
>
> My apologies for hijacking this thread, but I'm afraid a regression was
> introduced by your recent intrin patches. The regression is about the
> __cpuid symbol. The qt4 package uses this symbol.
>
> The compilation of qt 4.8.5 is successful with mingw-w64 r5915
> (20130628), but with the mingw-w64 r5949 (20130713) the build fails for
> the x86_64-w64-mingw32 target with this error:
>
> x86_64-w64-mingw32-g++ -c -include .obj/release-static/qt_pch.h -O2 -g
> -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4
> -fno-keep-inline-dllexport -O2 -Wall -frtti -fexceptions -mthreads
> -DQT_THREAD_SUPPORT -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_BUILD_CORE_LIB
> -DQT_NO_USING_NAMESPACE -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT
> -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -D_USE_MATH_DEFINES
> -DQLIBRARYINFO_EPOCROOT -DHB_EXPORT=Q_CORE_EXPORT -DQT_NO_DEBUG
> -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT
> -DQT_HAVE_SSE2 -DQT_HAVE_SSE3 -DQT_HAVE_SSSE3 -DQT_HAVE_SSE4_1
> -DQT_HAVE_SSE4_2 -DQT_HAVE_AVX -I'../../include'
> -I'../../include/QtCore' -I'.rcc/release-static' -I'tmp' -I'global'
> -I'/builddir/build/BUILD/qt-everywhere-opensource-src-4.8.5/tools/shared'
> -I'/builddir/build/BUILD/qt-everywhere-opensource-src-4.8.5/src/3rdparty/harfbuzz/src'
>
> -I'/builddir/build/BUILD/qt-everywhere-opensource-src-4.8.5/src/3rdparty/md5'
> -I'/builddir/build/BUILD/qt-everywhere-opensource-src-4.8.5/src/3rdparty/md4'
> -I'../../include/ActiveQt' -I'.moc/release-static' -I'.'
> -I'/builddir/build/BUILD/qt-everywhere-opensource-src-4.8.5/mkspecs/win32-g++-cross-x64'
> -o .obj/release-static/qstring.o
> /builddir/build/BUILD/qt-everywhere-opensource-src-4.8.5/src/corelib/tools/qstring.cpp
> /builddir/build/BUILD/qt-everywhere-opensource-src-4.8.5/src/corelib/tools/qsimd.cpp:
> In function 'uint detectProcessorFeatures()':
> /builddir/build/BUILD/qt-everywhere-opensource-src-4.8.5/src/corelib/tools/qsimd.cpp:296:23:
> error: '__cpuid' was not declared in this scope
> __cpuid(info, 1);
> ^
> make[2]: *** [.obj/release-static/qsimd.o] Error 1
>
> So far this looks like a x86_64-w64-mingw32 only regression. The
> i686-w64-mingw32 build completes fine.
>
> Full build logs can be found at
> http://koji.fedoraproject.org/koji/taskinfo?taskID=5605337
>
> Have you got any idea what might be going wrong here?
According to a git bisect commit 5924 is the culprit (Intrin clean up).
In this commit an "#include <intrin.h>" was removed from winnt.h:
--
@@ -1490,23 +1446,14 @@ extern "C" {
# if defined(__cplusplus)
}
# endif
-#else /* !__CYGWIN__ */
-# include <intrin.h>
-#endif /* __CYGWIN__ */
#define FastFence __faststorefence86__) || defined(_IA64_))
--
Due to this change the file intrin.h (which contains the declaration for
__cpuid) isn't #include'd automatically any more when only "#include
<winnt.h>" is used.
As Qt4's qsimd.cpp doesn't #include <intrin.h> directly the build fails.
According to MSDN an #include <intrin.h> is needed to make __cpuid
available so I think this is an issue at the Qt4 side and not the
mingw-w64 side.
I've patched around it for now in the Qt4 package as I think mingw-w64
is doing 'the right thing' here and Qt4 should follow the documented
behavior.
Regards,
Erik van Pienbroek
------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public