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

5.11.1 build fails on arm with libstdc++ not providing __atomic_futex_unsigned_base

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • P1: Critical
    • None
    • 5.11.1
    • None
    • gcc7.3.0, glibc2.27
    • Linux/X11

    Description

      Hi,

      I'm upgrading qt from 5.10.1 to 5.11.1 my project (minimyth2).

      I already have cross-compiled (and working well) qt5.11.1 for x86_64 and aarch64 targets - but not for armv7.

      To compile 5.11.1 I'm using exactly the same cross-compile environment for all targets and this enviroment works well for me on 5.10.1 for all targets (i386, armv7, aarch64 and x86_64).

      It looks like my armv7 issue is because lack within my armv7 gcc7.3.0 libstdc++   

      __atomic_futex_unsigned_base::_M_futex_wait_until

        and 

      __atomic_futex_unsigned_base::_M_futex_notify_all

      functions. (pls see error log below)

      I checked my gcc7.3.0 libstdc++ for x86_64 and aarch64 targets - libstdc++ has above functions. This explains why I can cross-compile 5.11.1 successfully on those targets.

      My armv7 cross-compiled libstdc++ hasn't above 2 functions - so 5.11.1 cross-compile fails.

      I think qt configure should check for above functions and conditionally compile qt code without exploiting above functions on systems where libstdc++ is not offering above 2 functions.  

      (btw: geoservices/mapboxgl isn't only qt component where 2 above functions are exploited. IIRC they are also exploited in qtwebglplugin). 

      
      make[6]: Entering directory `/home/piotro/minimyth-dev/script/qt/qt5/work/main.d/qt-everywhere-src-5.11.1/qtlocation/src/plugins/geoservices/mapboxgl'
      rm -f libqtgeoservices_mapboxgl.so
      linking ../../../../plugins/geoservices/libqtgeoservices_mapboxgl.so
      /home/piotro/minimyth-dev/script/qt/qt5/work/main.d/qt-everywhere-src-5.11.1/qtlocation/lib/libqmapboxgl.a(local_file_source.o): In function `mbgl::LocalFileSource::LocalFileSource()':
      local_file_source.cpp:(.text+0x3a8): undefined reference to `std::__atomic_futex_unsigned_base::_M_futex_wait_until(unsigned int*, unsigned int, bool, std::chrono::duration<long long, std::ratio<1ll, 1ll> >, std::chrono::duration<long long, std::ratio<1ll, 1000000000ll> >)'
      local_file_source.cpp:(.text+0x820): undefined reference to `std::__atomic_futex_unsigned_base::_M_futex_notify_all(unsigned int*)'
      /home/piotro/minimyth-dev/script/qt/qt5/work/main.d/qt-everywhere-src-5.11.1/qtlocation/lib/libqmapboxgl.a(local_file_source.o): In function `mbgl::WorkTaskImpl<mbgl::util::Thread<mbgl::LocalFileSource::Impl>::~Thread()::{lambda()#1}, std::tuple<> >::operator()()':
      local_file_source.cpp:(.text._ZN4mbgl12WorkTaskImplIZNS_4util6ThreadINS_15LocalFileSource4ImplEED4EvEUlvE_St5tupleIJEEEclEv[_ZN4mbgl12WorkTaskImplIZNS_4util6ThreadINS_15LocalFileSource4ImplEED4EvEUlvE_St5tupleIJEEEclEv]+0x2b0): undefined reference to `std::__atomic_futex_unsigned_base::_M_futex_notify_all(unsigned int*)'
      /home/piotro/minimyth-dev/script/qt/qt5/work/main.d/qt-everywhere-src-5.11.1/qtlocation/lib/libqmapboxgl.a(local_file_source.o): In function `mbgl::util::Thread<mbgl::LocalFileSource::Impl>::~Thread()':
      local_file_source.cpp:(.text._ZN4mbgl4util6ThreadINS_15LocalFileSource4ImplEED2Ev[_ZN4mbgl4util6ThreadINS_15LocalFileSource4ImplEED5Ev]+0x428): undefined reference to `std::__atomic_futex_unsigned_base::_M_futex_wait_until(unsigned int*, unsigned int, bool, std::chrono::duration<long long, std::ratio<1ll, 1ll> >, std::chrono::duration<long long, std::ratio<1ll, 1000000000ll> >)'
      local_file_source.cpp:(.text._ZN4mbgl4util6ThreadINS_15LocalFileSource4ImplEED2Ev[_ZN4mbgl4util6ThreadINS_15LocalFileSource4ImplEED5Ev]+0x15d4): undefined reference to `std::__atomic_futex_unsigned_base::_M_futex_notify_all(unsigned int*)'
      local_file_source.cpp:(.text._ZN4mbgl4util6ThreadINS_15LocalFileSource4ImplEED2Ev[_ZN4mbgl4util6ThreadINS_15LocalFileSource4ImplEED5Ev]+0x15dc): undefined reference to `std::__atomic_futex_unsigned_base::_M_futex_notify_all(unsigned int*)'
      local_file_source.cpp:(.text._ZN4mbgl4util6ThreadINS_15LocalFileSource4ImplEED2Ev[_ZN4mbgl4util6ThreadINS_15LocalFileSource4ImplEED5Ev]+0x164c): undefined reference to `std::__atomic_futex_unsigned_base::_M_futex_notify_all(unsigned int*)'
      local_file_source.cpp:(.text._ZN4mbgl4util6ThreadINS_15LocalFileSource4ImplEED2Ev[_ZN4mbgl4util6ThreadINS_15LocalFileSource4ImplEED5Ev]+0x1654): undefined reference to `std::__atomic_futex_unsigned_base::_M_futex_notify_all(unsigned int*)'
      local_file_source.cpp:(.text._ZN4mbgl4util6ThreadINS_15LocalFileSource4ImplEED2Ev[_ZN4mbgl4util6ThreadINS_15LocalFileSource4ImplEED5Ev]+0x1668): undefined reference to `std::__atomic_futex_unsigned_base::_M_futex_notify_all(unsigned int*)'

      Attachments

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

        Activity

          People

            tmpsantos Thiago Marcos P. Santos
            warpme Piotr Oniszczuk
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes