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

    • Type: Bug
    • Status: Reported
    • Priority: P1: Critical
    • Resolution: Unresolved
    • Affects Version/s: 5.11.1
    • Fix Version/s: None
    • Labels:
      None
    • Environment:
      gcc7.3.0, glibc2.27
    • Platform/s:
      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

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

              Dates

              Created:
              Updated:

                Gerrit Reviews

                There are no open Gerrit changes