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

Linkage error during building any qt quick3D application for Integrity based on Qt6

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P1: Critical
    • Resolution: Done
    • Affects Version/s: 6.2.0 Beta4
    • Fix Version/s: 6.2.0 Beta3, 6.3.0 Alpha
    • Component/s: Quick: 3D
    • Labels:
      None
    • Platform/s:
      Integrity
    • Commits:
      efda2211f882db3229b9bae6a87aa8ee59271025 (qt/qtshadertools/dev) 0f213f6db256c8c0a281fc92136fe8addff8d32f (qt/qtshadertools/6.2)

      Description

      There is a linkage error during building any qt quick3D application for Integrity based on Qt6.

      Qt quick 3D module requires qt shader tool to perform shader conditioning at run time.

      qt shader tool links glslang library.

      The problem is libglnext-llvm.a (a part of libeglmegapack.a) library also links glslang, but more older version.

      Qt6 build for Integrity is static build.

      When we try to build any qt quick 3D example, we receive:

      [100%] Linking CXX executable hellocube
      [elxr] (error #539) symbol ShConstructCompiler multiply defined in:
      /home/tatiana/work/qt6/defData/targetbuild/qtbase/lib/libQt6BundledGlslang_Glslang.a(ShaderLang.cpp.o)
      /home/tatiana/sa8155/es7/es7_dev_env/hlos_dev_boot/libeglmegapack.a(ShaderLang.o)
      [elxr] (error #539) symbol ShDestruct multiply defined in:
      /home/tatiana/work/qt6/defData/targetbuild/qtbase/lib/libQt6BundledGlslang_Glslang.a(ShaderLang.cpp.o)
      /home/tatiana/sa8155/es7/es7_dev_env/hlos_dev_boot/libeglmegapack.a(ShaderLang.o)
      [elxr] (error #539) symbol ShFinalize multiply defined in:
      /home/tatiana/work/qt6/defData/targetbuild/qtbase/lib/libQt6BundledGlslang_Glslang.a(ShaderLang.cpp.o)
      /home/tatiana/sa8155/es7/es7_dev_env/hlos_dev_boot/libeglmegapack.a(ShaderLang.o)
      [elxr] (error #539) symbol ShCompile multiply defined in:
      /home/tatiana/work/qt6/defData/targetbuild/qtbase/lib/libQt6BundledGlslang_Glslang.a(ShaderLang.cpp.o)
      /home/tatiana/sa8155/es7/es7_dev_env/hlos_dev_boot/libeglmegapack.a(ShaderLang.o)
      [elxr] (error) errors during processing
      make[2]: *** [CMakeFiles/hellocube.dir/build.make:284: hellocube] Error 1
      make[1]: *** [CMakeFiles/Makefile2:138: CMakeFiles/hellocube.dir/all] Error 2
      make: *** [Makefile:136: all] Error 2

       

      Several symbols are multiply defined.

       

      1) If I delete glslang linkage from qt6 build, I receive a problem, because libeglmegapack.a has an old version of glslang and some symbols which qt shader tools uses are not defined.

      [100%] Linking CXX executable hellocube[100%] Linking CXX executable hellocube[elxr] (error #412) unresolved symbols: 15 glslang::InitializeProcess() from libQt6ShaderTools.a(qspirvcompiler.cpp.o) glslang::TShader::TShader(EShLanguage) from libQt6ShaderTools.a(qspirvcompiler.cpp.o) glslang::TShader::setStringsWithLengthsAndNames(const char *const *, const int *, const char *const *, int) from libQt6ShaderTools.a(qspirvcompiler.cpp.o) glslang::TShader::parse(const TBuiltInResource *, int, EProfile, bool, bool, EShMessages, glslang::TShader::Includer &) from libQt6ShaderTools.a(qspirvcompiler.cpp.o) glslang::TShader::getInfoLog() from libQt6ShaderTools.a(qspirvcompiler.cpp.o) glslang::TShader::~TShader() from libQt6ShaderTools.a(qspirvcompiler.cpp.o) glslang::TProgram::TProgram() from libQt6ShaderTools.a(qspirvcompiler.cpp.o) glslang::TProgram::link(EShMessages) from libQt6ShaderTools.a(qspirvcompiler.cpp.o)    perhaps extern "C" link from libINTEGRITY.a(ind_io_misc_path.o) intended? glslang::TProgram::~TProgram() from libQt6ShaderTools.a(qspirvcompiler.cpp.o) glslang::GlslangToSpv(const glslang::TIntermediate &, std::vector<unsigned int, std::allocator<unsigned int>> &, glslang::SpvOptions *) from libQt6ShaderTools.a(qspirvcompiler.cpp.o) glslang::FinalizeProcess() from libQt6ShaderTools.a(qspirvcompiler.cpp.o) virtual function table for spv::spirvbin_t from libQt6ShaderTools.a(qspirvshaderremap.cpp.o) spv::spirvbin_t::errorHandler from libQt6ShaderTools.a(qspirvshaderremap.cpp.o) spv::spirvbin_t::logHandler from libQt6ShaderTools.a(qspirvshaderremap.cpp.o) spv::spirvbin_t::remap(std::vector<unsigned int, std::allocator<unsigned int>> &, unsigned int) from libQt6ShaderTools.a(qspirvshaderremap.cpp.o)    perhaps extern "C" remap from /home/tatiana/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/integrity/libs/arm64/chk/libINTEGRITY.a intended?

       

      2) If I try just to delete duplicates or suppress them I receive next error with virtual table choice

      [100%] Linking CXX executable hellocube
      [elxr] (warning #539) symbol ShConstructCompiler multiply defined in:
      /home/tatiana/work/qt6/defData/targetbuild/qtbase/lib/libQt6BundledGlslang_Glslang.a(ShaderLang.cpp.o)
      /home/tatiana/sa8155/es7/es7_dev_env/hlos_dev_boot/libeglmegapack.a(ShaderLang.o)
      [elxr] (warning #539) symbol ShDestruct multiply defined in:
      /home/tatiana/work/qt6/defData/targetbuild/qtbase/lib/libQt6BundledGlslang_Glslang.a(ShaderLang.cpp.o)
      /home/tatiana/sa8155/es7/es7_dev_env/hlos_dev_boot/libeglmegapack.a(ShaderLang.o)
      [elxr] (warning #539) symbol ShFinalize multiply defined in:
      /home/tatiana/work/qt6/defData/targetbuild/qtbase/lib/libQt6BundledGlslang_Glslang.a(ShaderLang.cpp.o)
      /home/tatiana/sa8155/es7/es7_dev_env/hlos_dev_boot/libeglmegapack.a(ShaderLang.o)
      [elxr] (warning #539) symbol ShCompile multiply defined in:
      /home/tatiana/work/qt6/defData/targetbuild/qtbase/lib/libQt6BundledGlslang_Glslang.a(ShaderLang.cpp.o)
      /home/tatiana/sa8155/es7/es7_dev_env/hlos_dev_boot/libeglmegapack.a(ShaderLang.o)
      [elxr] (error #455) Module libQt6BundledGlslang_Glslang.a(ShaderLang.cpp.o) contains a virtual function call
      to offset 32 in the vtable for class virtual function table for TShHandleBase, but the vtable for virtual function table for TShHandleBase
      (defined in libQt6BundledGlslang_Glslang.a(ShaderLang.cpp.o)) does not contain an entry at that offset.
      The UVFD optimization cannot be performed. Pass -no_uvfd to continue.
      <troubleinfo version="1">

       

       

       

        Attachments

          Issue Links

          For Gerrit Dashboard: QTBUG-95048
          # Subject Branch Project Status CR V

            Activity

              People

              Assignee:
              qt.team.graphics.and.multimedia Qt Graphics Team
              Reporter:
              tatiana.borisova Tatiana Borisova
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:

                  Gerrit Reviews

                  There are no open Gerrit changes