Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-90001

qtbase: is not LTO ready

    XMLWordPrintable

Details

    • Linux/Wayland

    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
      
      

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            qtbuildsystem Qt Build System Team
            kloczek Tomasz Kloczko
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes