RESOLVED WORKSFORME 102930
[Qt] Mingw: Symbol conflict between system ANGLE, webkit angle
https://bugs.webkit.org/show_bug.cgi?id=102930
Summary [Qt] Mingw: Symbol conflict between system ANGLE, webkit angle
Kai Koehne
Reported 2012-11-21 05:45:12 PST
Compiling QtWebKit with MINGW-builds, and system ANGLE fails because of symbol clashes between the system angle, and the webkit one: g++ -shared -Wl,--out-implib,..\lib\libQt5WebKitWidgetsd.a -o ..\lib\Qt5WebKitWidgetsd.dll -LD:\dev\icu-49\dist\mingw-32\lib -LD:\dev\openssl-1.0.1c\dist\mingw-32\lib -LD:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib -lQt5Widgetsd -LD:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib -lQt5Networkd -LD:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib -lQt5Guid -LD:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib -lQt5Cored -llibEGL -llibGLESv2 -lgdi32 -luser32 obj\debug\Qt5WebKitWidgetsd_resource_res.o -Wl,-whole-archive -lWebKit1d -Wl,-no-whole-archive -LD:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtwebkit/Source/WebKit/debug -Wl,-whole-archive -lWebKit2d -Wl,-no-whole-archive -LD:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtwebkit/Source/WebKit2/debug -Wl,-whole-archive -lWebCored -Wl,-no-whole-archive -LD:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtwebkit/Source/WebCore/debug -ladvapi32 -lgdi32 -lshell32 -lshlwapi -luser32 -lversion -llibEGL -llibGLESv2 -lgdi32 -luser32 -lgdi32 -lole32 -luser32 -Wl,-whole-archive -lANGLEd -Wl,-no-whole-archive -LD:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtwebkit/Source/ThirdParty/ANGLE/debug -Wl,-whole-archive -lJavaScriptCored -Wl,-no-whole-archive -LD:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtwebkit/Source/JavaScriptCore/debug -lwinmm -Wl,-whole-archive -lWTFd -Wl,-no-whole-archive -LD:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtwebkit/Source/WTF/debug -licuin -licuuc -licudt -lwinmm -lgdi32 -LD:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib -lQt5Quickd -LD:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib -lQt5MultimediaWidgetsd -LD:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib -lQt5OpenGLd -LD:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib -lQt5PrintSupportd -LD:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib -lQt5Qmld -LD:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib -lQt5Multimediad -LD:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib -lQt5Widgetsd -LD:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib -lQt5Sqld -LD:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib -lQt5Networkd -LD:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib -lQt5Guid -LD:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib -lQt5Cored D:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtwebkit/Source/ThirdParty/ANGLE/debug/libANGLEd.a(ShaderLang.o):ShaderLang.cpp:(.text+0x0): multiple definition of `ShInitialize' D:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib/liblibGLESv2.a(d000265.o):(.text+0x0): first defined here D:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtwebkit/Source/ThirdParty/ANGLE/debug/libANGLEd.a(ShaderLang.o):ShaderLang.cpp:(.text+0x20): multiple definition of `ShInitBuiltInResources' D:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib/liblibGLESv2.a(d000264.o):(.text+0x0): first defined here D:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtwebkit/Source/ThirdParty/ANGLE/debug/libANGLEd.a(ShaderLang.o):ShaderLang.cpp:(.text+0x80): multiple definition of `ShDestruct' D:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib/liblibGLESv2.a(d000257.o):(.text+0x0): first defined here D:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtwebkit/Source/ThirdParty/ANGLE/debug/libANGLEd.a(ShaderLang.o):ShaderLang.cpp:(.text+0xc0): multiple definition of `ShConstructCompiler' D:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib/liblibGLESv2.a(d000256.o):(.text+0x0): first defined here D:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtwebkit/Source/ThirdParty/ANGLE/debug/libANGLEd.a(ShaderLang.o):ShaderLang.cpp:(.text+0x130): multiple definition of `ShCompile' D:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib/liblibGLESv2.a(d000255.o):(.text+0x0): first defined here D:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtwebkit/Source/ThirdParty/ANGLE/debug/libANGLEd.a(ShaderLang.o):ShaderLang.cpp:(.text+0x190): multiple definition of `ShGetInfo' D:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib/liblibGLESv2.a(d000261.o):(.text+0x0): first defined here D:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtwebkit/Source/ThirdParty/ANGLE/debug/libANGLEd.a(ShaderLang.o):ShaderLang.cpp:(.text+0x4b0): multiple definition of `ShGetInfoLog' D:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib/liblibGLESv2.a(d000262.o):(.text+0x0): first defined here D:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtwebkit/Source/ThirdParty/ANGLE/debug/libANGLEd.a(ShaderLang.o):ShaderLang.cpp:(.text+0x4f0): multiple definition of `ShGetObjectCode' D:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib/liblibGLESv2.a(d000263.o):(.text+0x0): first defined here D:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtwebkit/Source/ThirdParty/ANGLE/debug/libANGLEd.a(ShaderLang.o):ShaderLang.cpp:(.text+0x530): multiple definition of `ShGetActiveAttrib' D:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib/liblibGLESv2.a(d000259.o):(.text+0x0): first defined here D:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtwebkit/Source/ThirdParty/ANGLE/debug/libANGLEd.a(ShaderLang.o):ShaderLang.cpp:(.text+0x5c0): multiple definition of `ShGetActiveUniform' D:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib/liblibGLESv2.a(d000260.o):(.text+0x0): first defined here Warning: resolving _cti_vm_throw by linking to @cti_vm_throw@4 Use --enable-stdcall-fixup to disable these warnings Use --disable-stdcall-fixup to disable these fixups c:/mingw-builds-32-4.7.2-posix-sjlj-rev1/bin/../lib/gcc/i686-w64-mingw32/4.7.2/../../../../i686-w64-mingw32/bin/ld.exe: D:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtwebkit/Source/ThirdParty/ANGLE/debug/libANGLEd.a(ShaderLang.o): bad reloc address 0x44 in section `.rdata' collect2.exe: error: ld returned 1 exit status Makefile.api.Debug:75: recipe for target '..\lib\Qt5WebKitWidgetsd.dll' failed mingw32-make[1]: *** [..\lib\Qt5WebKitWidgetsd.dll] Error 1 mingw32-make[1]: Leaving directory 'D:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtwebkit/Source' Makefile.api:37: recipe for target 'debug-all' failed mingw32-make: *** [debug-all] Error 2 (You've to apply patch in https://bugs.webkit.org/show_bug.cgi?id=102924 to get that far)
Attachments
Possible workaround patch (1.27 KB, patch)
2012-11-21 05:48 PST, Kai Koehne
hausmann: review-
hausmann: commit-queue-
Kai Koehne
Comment 1 2012-11-21 05:48:05 PST
Created attachment 175418 [details] Possible workaround patch Don't know whether that's a conceptual problem or not. But since the symbols mentioned aren't exported in the DLL I could imagine that it's safe to ignore the linker error.
Simon Hausmann
Comment 2 2012-11-21 13:14:34 PST
I think that there's some secret static linking going in: "" D:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtbase/lib/liblibGLESv2.a(d000265.o):(.text+0x0): first defined here D:/dev/qt-5-sdk-mingw-builds-gcc-4.7.2-32/qtwebkit/Source/ThirdParty/ANGLE/debug/libANGLEd.a(ShaderLang.o):ShaderLang.cpp:(.text+0x20): multiple definition of `ShInitBuiltInResources' "" See liblibGLESv2._a_ and libANGLEd.a? Only the latter should be an archive, the former should be a DLL.
Simon Hausmann
Comment 3 2012-11-26 22:55:28 PST
Comment on attachment 175418 [details] Possible workaround patch View in context: https://bugs.webkit.org/attachment.cgi?id=175418&action=review > Source/api.pri:27 > + # ignore duplicate symbols in qtbase angle (libGLESv2.dll), local angle I'm saying r-, because the linker output doesn't look like it resembles what's described her, i.e. that there is is linkage against libGLESv2._DLL_ Maybe a .dll file co-exists with a .a file in the lib directory and somehow the compiler choose the latter instead of the former? I think this needs more investigation :)
Kai Koehne
Comment 4 2012-11-28 01:08:44 PST
Simon, the .a files are import libraries - static libs that you link against that load the real dll at runtime. Anyhow, there's a bigger issue here, and adding --Wl,--allow-duplicate-symbols doesn't help : See bug 103491 .
Jonathan Liu
Comment 5 2013-04-14 01:13:18 PDT
I believe this issue is already resolved.
Kai Koehne
Comment 6 2013-04-15 00:29:33 PDT
Yeah, probably was fixed by another commit already ...
Note You need to log in before you can comment on or make changes to this bug.