Details
-
Bug
-
Resolution: Fixed
-
P2: Important
-
5.15.2
-
None
Description
After building sucessfully qtbase with LO I just found that such binaries are failing on linking qtwayland.
Looks like some symbols in qtbase API are not marked as part of the public ABI and by this LTO removes those symbols on linking stage
make[2]: Leaving directory '/home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/x86_64-redhat-linux-gnu/src/qtwaylandscanner' cd client/ && ( test -e Makefile || /usr/bin/qmake -o Makefile /home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/src/client/client.pro 'QMAKE_CFLAGS_DEBUG=-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -flto=auto -flto-partition=none -fdata-sections -ffunction-sections' 'QMAKE_CFLAGS_RELEASE=-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -flto=auto -flto-partition=none -fdata-sections -ffunction-sections' 'QMAKE_CXXFLAGS_DEBUG=-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -flto=auto -flto-partition=none -fdata-sections -ffunction-sections' 'QMAKE_CXXFLAGS_RELEASE=-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -flto=auto -flto-partition=none -fdata-sections -ffunction-sections' 'QMAKE_LFLAGS_DEBUG=-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto=auto -flto-partition=none -fuse-linker-plugin -Wl,--gc-sections' 'QMAKE_LFLAGS_RELEASE=-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto=auto -flto-partition=none -fuse-linker-plugin -Wl,--gc-sections' QMAKE_STRIP= ) && make -f Makefile make[2]: Entering directory '/home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/x86_64-redhat-linux-gnu/src/client' rm -f libQt5WaylandClient.so.5.15.2 libQt5WaylandClient.so libQt5WaylandClient.so.5 libQt5WaylandClient.so.5.15 g++ -Wl,--no-undefined -Wl,--version-script,QtWaylandClient.version -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto=auto -flto-partition=none -fuse-linker-plugin -Wl,--gc-sections -Wl,--enable-new-dtags -shared -Wl,-soname,libQt5WaylandClient.so.5 -o libQt5WaylandClient.so.5.15.2 .obj/qwaylandintegration.o .obj/qwaylandnativeinterface.o .obj/qwaylandshmbackingstore.o .obj/qwaylandinputdevice.o .obj/qwaylanddisplay.o .obj/qwaylandwindow.o .obj/qwaylandscreen.o .obj/qwaylandshmwindow.o .obj/qwaylandshellsurface.o .obj/qwaylandextendedsurface.o .obj/qwaylandsubsurface.o .obj/qwaylandsurface.o .obj/qwaylandtabletv2.o .obj/qwaylandtouch.o .obj/qwaylandqtkey.o .obj/qwaylandmimehelper.o .obj/qwaylandinputmethodeventbuilder.o .obj/qwaylandabstractdecoration.o .obj/qwaylanddecorationfactory.o .obj/qwaylanddecorationplugin.o .obj/qwaylandwindowmanagerintegration.o .obj/qwaylandinputcontext.o .obj/qwaylandshm.o .obj/qwaylandbuffer.o .obj/qwaylandclipboard.o .obj/qwaylandclientbufferintegration.o .obj/qwaylandclientbufferintegrationplugin.o .obj/qwaylandclientbufferintegrationfactory.o .obj/qwaylandserverbufferintegration.o .obj/qwaylandserverbufferintegrationplugin.o .obj/qwaylandserverbufferintegrationfactory.o .obj/qwaylandhardwareintegration.o .obj/qwaylandshellintegrationplugin.o .obj/qwaylandshellintegrationfactory.o .obj/qwaylandinputdeviceintegrationplugin.o .obj/qwaylandinputdeviceintegrationfactory.o .obj/qwaylandclientextension.o .obj/qwaylandvulkaninstance.o .obj/qwaylandvulkanwindow.o .obj/qwaylandcursor.o .obj/qwaylanddatadevice.o .obj/qwaylanddatadevicemanager.o .obj/qwaylanddataoffer.o .obj/qwaylanddatasource.o .obj/qwaylandprimaryselectionv1.o .obj/qwaylanddnd.o .obj/wayland-surface-extension-protocol.o .obj/wayland-touch-extension-protocol.o .obj/wayland-qt-key-unstable-v1-protocol.o .obj/wayland-qt-windowmanager-protocol.o .obj/wayland-wp-primary-selection-unstable-v1-protocol.o .obj/wayland-tablet-unstable-v2-protocol.o .obj/wayland-text-input-unstable-v2-protocol.o .obj/wayland-xdg-output-unstable-v1-protocol.o .obj/wayland-wayland-protocol.o .obj/wayland-server-buffer-extension-protocol.o .obj/wayland-hardware-integration-protocol.o .obj/qwayland-surface-extension.o .obj/qwayland-touch-extension.o .obj/qwayland-qt-key-unstable-v1.o .obj/qwayland-qt-windowmanager.o .obj/qwayland-wp-primary-selection-unstable-v1.o .obj/qwayland-tablet-unstable-v2.o .obj/qwayland-text-input-unstable-v2.o .obj/qwayland-xdg-output-unstable-v1.o .obj/qwayland-wayland.o .obj/qwayland-server-buffer-extension.o .obj/qwayland-hardware-integration.o .obj/moc_qwaylanddisplay_p.o .obj/moc_qwaylandwindow_p.o .obj/moc_qwaylandinputdevice_p.o .obj/moc_qwaylandshellsurface_p.o .obj/moc_qwaylandsurface_p.o .obj/moc_qwaylandtabletv2_p.o .obj/moc_qwaylandabstractdecoration_p.o .obj/moc_qwaylanddecorationplugin_p.o .obj/moc_qwaylandwindowmanagerintegration_p.o .obj/moc_qwaylandinputcontext_p.o .obj/moc_qwaylandclientbufferintegrationplugin_p.o .obj/moc_qwaylandserverbufferintegrationplugin_p.o .obj/moc_qwaylandshellintegrationplugin_p.o .obj/moc_qwaylandinputdeviceintegrationplugin_p.o .obj/moc_qwaylandclientextension.o .obj/moc_qwaylanddatadevice_p.o .obj/moc_qwaylanddatasource_p.o .obj/moc_qwaylandprimaryselectionv1_p.o /usr/lib64/libQt5Gui.so /usr/lib64/libQt5Core.so -lpthread -lwayland-cursor -lwayland-client /usr/lib64/libQt5FontDatabaseSupport.a -lfontconfig -lfreetype -lz /usr/lib64/libQt5EventDispatcherSupport.a -lgthread-2.0 -lglib-2.0 /usr/lib64/libQt5ThemeSupport.a /usr/lib64/libQt5VulkanSupport.a /usr/lib64/libQt5LinuxAccessibilitySupport.a /usr/lib64/libQt5AccessibilitySupport.a /usr/lib64/libQt5ServiceSupport.a /usr/lib64/libQt5XkbCommonSupport.a -lpthread /usr/lib64/libQt5Gui.so /usr/lib64/libQt5DBus.so /usr/lib64/libQt5Core.so -lGL -lxkbcommon ../../include/QtWaylandClient/5.15.2/QtWaylandClient/private/../../../../../src/client/wayland-wayland-client-protocol.h:1432:6: warning: type ‘wl_shm_format’ violates the C++ One Definition Rule [-Wodr] 1432 | enum wl_shm_format { | ^ /usr/include/wayland-client-protocol.h:1440:6: note: an enum with different number of values is defined in another translation unit 1440 | enum wl_shm_format { | ^ /usr/bin/ld: /tmp/ccLocDST.lto.o: in function `QtWaylandClient::QWaylandIntegration::themeNames() const': /home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/src/client/qwaylandintegration.cpp:274: undefined reference to `QGenericUnixTheme::themeNames()' /usr/bin/ld: /tmp/ccLocDST.lto.o: in function `QtWaylandClient::QWaylandIntegration::accessibility() const': /home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/src/client/qwaylandintegration.cpp:246: undefined reference to `QSpiAccessibleBridge::QSpiAccessibleBridge()' /usr/bin/ld: /tmp/ccLocDST.lto.o: in function `QtWaylandClient::QWaylandVulkanInstance::~QWaylandVulkanInstance()': /home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/src/client/qwaylandvulkaninstance.cpp:55: undefined reference to `QBasicPlatformVulkanInstance::~QBasicPlatformVulkanInstance()' /usr/bin/ld: /tmp/ccLocDST.lto.o: in function `QtWaylandClient::QWaylandIntegration::createPlatformVulkanInstance(QVulkanInstance*) const': /home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/src/client/qwaylandvulkaninstance.cpp:50: undefined reference to `QBasicPlatformVulkanInstance::QBasicPlatformVulkanInstance()' /usr/bin/ld: /tmp/ccLocDST.lto.o:/home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/src/client/qwaylandvulkaninstance.cpp:52: undefined reference to `QBasicPlatformVulkanInstance::loadVulkanLibrary(QString const&)' /usr/bin/ld: /tmp/ccLocDST.lto.o: in function `QtWaylandClient::QWaylandTextInput::zwp_text_input_v2_keysym(unsigned int, unsigned int, unsigned int, unsigned int)': /home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/src/client/qwaylandinputcontext.cpp:332: undefined reference to `QXkbCommon::lookupStringNoKeysymTransformations(unsigned int)' /usr/bin/ld: /home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/src/client/qwaylandinputcontext.cpp:333: undefined reference to `QXkbCommon::keysymToQtKey(unsigned int, QFlags<Qt::KeyboardModifier>)' /usr/bin/ld: /tmp/ccLocDST.lto.o: in function `QtWaylandClient::QWaylandVulkanInstance::createOrAdoptInstance()': /home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/src/client/qwaylandvulkaninstance.cpp:61: undefined reference to `QBasicPlatformVulkanInstance::initInstance(QVulkanInstance*, QList<QByteArray> const&)' /usr/bin/ld: /tmp/ccLocDST.lto.o: in function `QtWaylandClient::QWaylandIntegration::reconfigureInputContext()': /home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/src/client/qwaylandintegration.cpp:476: undefined reference to `QXkbCommon::setXkbContext(QPlatformInputContext*, xkb_context*)' /usr/bin/ld: /tmp/ccLocDST.lto.o: in function `QtWaylandClient::QWaylandInputDevice::possibleKeys(QKeyEvent const*) const': /home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/src/client/qwaylandinputdevice.cpp:571: undefined reference to `QXkbCommon::possibleKeys(xkb_state*, QKeyEvent const*, bool, bool)' /usr/bin/ld: /tmp/ccLocDST.lto.o: in function `QtWaylandClient::QWaylandInputDevice::Keyboard::modifiers() const': /home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/src/client/qwaylandinputdevice.cpp:594: undefined reference to `QXkbCommon::modifiers(xkb_state*)' /usr/bin/ld: /tmp/ccLocDST.lto.o: in function `QtWaylandClient::QWaylandWindowManagerIntegration::QWaylandWindowManagerIntegration(QtWaylandClient::QWaylandDisplay*)': /usr/include/qt5/QtServiceSupport/5.15.2/QtServiceSupport/private/qgenericunixservices_p.h:62: undefined reference to `vtable for QGenericUnixServices' /usr/bin/ld: /tmp/ccLocDST.lto.o: in function `QtWaylandClient::QWaylandIntegration::QWaylandIntegration()': /usr/include/qt5/QtFontDatabaseSupport/5.15.2/QtFontDatabaseSupport/private/qfontconfigdatabase_p.h:61: undefined reference to `vtable for QFontconfigDatabase' /usr/bin/ld: /tmp/ccLocDST.lto.o: in function `QtWaylandClient::QWaylandIntegration::createEventDispatcher() const': /home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/src/client/qwaylandintegration.cpp:190: undefined reference to `QtGenericUnixDispatcher::createUnixEventDispatcher()' /usr/bin/ld: /tmp/ccLocDST.lto.o: in function `QtWaylandClient::QWaylandIntegration::createPlatformTheme(QString const&) const': /home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/src/client/qwaylandintegration.cpp:279: undefined reference to `QGenericUnixTheme::createUnixTheme(QString const&)' /usr/bin/ld: /tmp/ccLocDST.lto.o: in function `QtWaylandClient::QWaylandVulkanInstance::~QWaylandVulkanInstance()': /home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/src/client/qwaylandvulkaninstance.cpp:55: undefined reference to `QBasicPlatformVulkanInstance::~QBasicPlatformVulkanInstance()' /usr/bin/ld: /tmp/ccLocDST.lto.o: in function `non-virtual thunk to QtWaylandClient::QWaylandWindowManagerIntegration::openUrl(QUrl const&)': /home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/src/client/qwaylandwindowmanagerintegration.cpp:125: undefined reference to `QGenericUnixServices::openUrl(QUrl const&)' /usr/bin/ld: /tmp/ccLocDST.lto.o: in function `non-virtual thunk to QtWaylandClient::QWaylandWindowManagerIntegration::openDocument(QUrl const&)': /home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/src/client/qwaylandwindowmanagerintegration.cpp:125: undefined reference to `QGenericUnixServices::openDocument(QUrl const&)' /usr/bin/ld: /tmp/ccLocDST.lto.o: in function `QtWaylandClient::QWaylandWindowManagerIntegration::~QWaylandWindowManagerIntegration()': /usr/include/qt5/QtServiceSupport/5.15.2/QtServiceSupport/private/qgenericunixservices_p.h:59: undefined reference to `vtable for QGenericUnixServices' /usr/bin/ld: /tmp/ccLocDST.lto.o: in function `QtWaylandClient::QWaylandInputDevice::Keyboard::keyboard_keymap(unsigned int, int, unsigned int)': /home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/src/client/qwaylandinputdevice.cpp:1140: undefined reference to `QXkbCommon::verifyHasLatinLayout(xkb_keymap*)' /usr/bin/ld: /tmp/ccLocDST.lto.o: in function `QtWaylandClient::QWaylandWindowManagerIntegration::openUrl(QUrl const&)': /home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/src/client/qwaylandwindowmanagerintegration.cpp:133: undefined reference to `QGenericUnixServices::openUrl(QUrl const&)' /usr/bin/ld: /tmp/ccLocDST.lto.o: in function `QtWaylandClient::QWaylandWindowManagerIntegration::openDocument(QUrl const&)': /home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/src/client/qwaylandwindowmanagerintegration.cpp:142: undefined reference to `QGenericUnixServices::openDocument(QUrl const&)' /usr/bin/ld: /tmp/ccLocDST.lto.o: in function `QtWaylandClient::QWaylandInputDevice::Keyboard::keyboard_key(unsigned int, unsigned int, unsigned int, unsigned int)': /home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/src/client/qwaylandinputdevice.cpp:1259: undefined reference to `QXkbCommon::keysymToQtKey(unsigned int, QFlags<Qt::KeyboardModifier>, xkb_state*, unsigned int, bool, bool)' /usr/bin/ld: /home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/src/client/qwaylandinputdevice.cpp:1260: undefined reference to `QXkbCommon::lookupString(xkb_state*, unsigned int)' /usr/bin/ld: /tmp/ccLocDST.lto.o: in function `QtWaylandClient::QWaylandVulkanWindow::~QWaylandVulkanWindow()': /home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/src/client/qwaylandvulkanwindow.cpp:56: undefined reference to `QBasicPlatformVulkanInstance::destroySurface(VkSurfaceKHR_T*) const' /usr/bin/ld: /tmp/ccLocDST.lto.o:(.data.rel.ro+0xad0): undefined reference to `QGenericUnixServices::desktopEnvironment() const' /usr/bin/ld: /tmp/ccLocDST.lto.o:(.data.rel.ro+0xb30): undefined reference to `typeinfo for QGenericUnixServices' /usr/bin/ld: /tmp/ccLocDST.lto.o:(.data.rel.ro+0x35b0): undefined reference to `typeinfo for QBasicPlatformVulkanInstance' /usr/bin/ld: /tmp/ccLocDST.lto.o:(.data.rel.ro+0x35d8): undefined reference to `QBasicPlatformVulkanInstance::supportedLayers() const' /usr/bin/ld: /tmp/ccLocDST.lto.o:(.data.rel.ro+0x35e0): undefined reference to `QBasicPlatformVulkanInstance::supportedExtensions() const' /usr/bin/ld: /tmp/ccLocDST.lto.o:(.data.rel.ro+0x35f0): undefined reference to `QBasicPlatformVulkanInstance::isValid() const' /usr/bin/ld: /tmp/ccLocDST.lto.o:(.data.rel.ro+0x35f8): undefined reference to `QBasicPlatformVulkanInstance::errorCode() const' /usr/bin/ld: /tmp/ccLocDST.lto.o:(.data.rel.ro+0x3600): undefined reference to `QBasicPlatformVulkanInstance::vkInstance() const' /usr/bin/ld: /tmp/ccLocDST.lto.o:(.data.rel.ro+0x3608): undefined reference to `QBasicPlatformVulkanInstance::enabledLayers() const' /usr/bin/ld: /tmp/ccLocDST.lto.o:(.data.rel.ro+0x3610): undefined reference to `QBasicPlatformVulkanInstance::enabledExtensions() const' /usr/bin/ld: /tmp/ccLocDST.lto.o:(.data.rel.ro+0x3618): undefined reference to `QBasicPlatformVulkanInstance::getInstanceProcAddr(char const*)' /usr/bin/ld: /tmp/ccLocDST.lto.o:(.data.rel.ro+0x3638): undefined reference to `QBasicPlatformVulkanInstance::setDebugFilters(QVector<bool (*)(unsigned int, VkDebugReportObjectTypeEXT, unsigned long, unsigned long, int, char const*, char const*)> const&)' collect2: error: ld returned 1 exit status make[2]: *** [Makefile:373: ../../lib/libQt5WaylandClient.so.5.15.2] Error 1 make[2]: Leaving directory '/home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/x86_64-redhat-linux-gnu/src/client' make[1]: *** [Makefile:76: sub-client-make_first] Error 2 make[1]: Leaving directory '/home/tkloczko/rpmbuild/BUILD/qtwayland-everywhere-src-5.15.2/x86_64-redhat-linux-gnu/src' make: *** [Makefile:49: sub-src-make_first] Error 2