Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in / Register
L
libplacebo
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 23
    • Issues 23
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 1
    • Merge Requests 1
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • VideoLAN
  • libplacebo
  • Merge Requests
  • !122

Closed
Opened Nov 10, 2020 by Alexander Vorobyev@alexvor
  • Report abuse
Report abuse

glslang: fix linking errors with glslang >= 11.0.0

  • Overview 4
  • Commits 3
  • Pipelines 3
  • Changes 1

This MR fixes the issue with linking libplacebo against glslang libraries with glslang 11.0.0. The issue can be reproduced on both 2.72.1 release and master branch:

/usr/bin/ld: /usr/lib64/gcc/x86_64-solus-linux/9/../../../../lib64/libSPIRV.a(GlslangToSpv.cpp.o): в функции «(anonymous namespace)::TGlslangToSpvTraverser::convertGlslangToSpvType(glslang::TType const&, glslang::TLayoutPacking, glslang::TQualifier const&, bool, bool)»:
(.text+0xcb1b): неопределённая ссылка на «glslang::TIntermediate::getMemberAlignment(glslang::TType const&, int&, int&, glslang::TLayoutPacking, bool)»
/usr/bin/ld: (.text+0xcbc8): неопределённая ссылка на «glslang::TIntermediate::getMemberAlignment(glslang::TType const&, int&, int&, glslang::TLayoutPacking, bool)»
/usr/bin/ld: /usr/lib64/gcc/x86_64-solus-linux/9/../../../../lib64/libSPIRV.a(GlslangToSpv.cpp.o): в функции «(anonymous namespace)::TGlslangToSpvTraverser::convertGlslangStructToSpvType(glslang::TType const&, glslang::TVector<glslang::TTypeLoc> const*, glslang::TLayoutPacking, glslang::TQualifier const&)»:
(.text+0xde5f): неопределённая ссылка на «glslang::TIntermediate::computeTypeLocationSize(glslang::TType const&, EShLanguage)»
/usr/bin/ld: (.text+0xeb32): неопределённая ссылка на «glslang::TIntermediate::getMemberAlignment(glslang::TType const&, int&, int&, glslang::TLayoutPacking, bool)»
/usr/bin/ld: (.text+0xeb7d): неопределённая ссылка на «glslang::TIntermediate::improperStraddle(glslang::TType const&, int, int)»
/usr/bin/ld: (.text+0xf019): неопределённая ссылка на «glslang::TIntermediate::getMemberAlignment(glslang::TType const&, int&, int&, glslang::TLayoutPacking, bool)»
/usr/bin/ld: (.text+0xf60f): неопределённая ссылка на «glslang::TIntermediate::getBaseAlignmentScalar(glslang::TType const&, int&)»
/usr/bin/ld: /usr/lib64/gcc/x86_64-solus-linux/9/../../../../lib64/libSPIRV.a(GlslangToSpv.cpp.o): в функции «(anonymous namespace)::TGlslangToSpvTraverser::visitBinary(glslang::TVisit, glslang::TIntermBinary*)»:
(.text+0x11676): неопределённая ссылка на «glslang::TIntermediate::getBaseAlignmentScalar(glslang::TType const&, int&)»
/usr/bin/ld: (.text+0x124a7): неопределённая ссылка на «glslang::TIntermediate::getBaseAlignmentScalar(glslang::TType const&, int&)»
/usr/bin/ld: (.text+0x13226): неопределённая ссылка на «glslang::TIntermediate::getBaseAlignmentScalar(glslang::TType const&, int&)»
/usr/bin/ld: /usr/lib64/gcc/x86_64-solus-linux/9/../../../../lib64/libSPIRV.a(GlslangToSpv.cpp.o): в функции «(anonymous namespace)::TGlslangToSpvTraverser::createSpvVariable(glslang::TIntermSymbol const*, unsigned int)»:
(.text+0x1c30c): неопределённая ссылка на «glslang::GetThreadPoolAllocator()»
/usr/bin/ld: (.text+0x1c668): неопределённая ссылка на «glslang::TPoolAllocator::allocate(unsigned long)»
/usr/bin/ld: /usr/lib64/gcc/x86_64-solus-linux/9/../../../../lib64/libSPIRV.a(GlslangToSpv.cpp.o): в функции «glslang::GlslangToSpv(glslang::TIntermediate const&, std::vector<unsigned int, std::allocator<unsigned int> >&, spv::SpvBuildLogger*, glslang::SpvOptions*)»:
(.text+0x25d63): неопределённая ссылка на «glslang::GetThreadPoolAllocator()»
/usr/bin/ld: (.text+0x25d6b): неопределённая ссылка на «glslang::TPoolAllocator::push()»
/usr/bin/ld: (.text+0x25d9e): неопределённая ссылка на «glslang::GetThreadPoolAllocator()»
/usr/bin/ld: (.text+0x25e11): неопределённая ссылка на «glslang::GetKhronosToolId()»
/usr/bin/ld: (.text+0x2647e): неопределённая ссылка на «glslang::GetThreadPoolAllocator()»
/usr/bin/ld: (.text+0x26486): неопределённая ссылка на «glslang::TPoolAllocator::pop()»
/usr/bin/ld: /usr/lib64/gcc/x86_64-solus-linux/9/../../../../lib64/libSPIRV.a(GlslangToSpv.cpp.o): в функции «glslang::TType::setFieldName(std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char> > const&)»:
(.text._ZN7glslang5TType12setFieldNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE[_ZN7glslang5TType12setFieldNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE]+0x16): неопределённая ссылка на «glslang::GetThreadPoolAllocator()»
/usr/bin/ld: (.text._ZN7glslang5TType12setFieldNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE[_ZN7glslang5TType12setFieldNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE]+0x23): неопределённая ссылка на «glslang::TPoolAllocator::allocate(unsigned long)»
/usr/bin/ld: (.text._ZN7glslang5TType12setFieldNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE[_ZN7glslang5TType12setFieldNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE]+0x2b): неопределённая ссылка на «glslang::GetThreadPoolAllocator()»
/usr/bin/ld: (.text._ZN7glslang5TType12setFieldNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE[_ZN7glslang5TType12setFieldNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS_14pool_allocatorIcEEEE]+0x98): неопределённая ссылка на «glslang::TPoolAllocator::allocate(unsigned long)»
/usr/bin/ld: /usr/lib64/gcc/x86_64-solus-linux/9/../../../../lib64/libSPIRV.a(GlslangToSpv.cpp.o): в функции «void std::vector<glslang::TArraySize, glslang::pool_allocator<glslang::TArraySize> >::_M_range_insert<__gnu_cxx::__normal_iterator<glslang::TArraySize*, std::vector<glslang::TArraySize, glslang::pool_allocator<glslang::TArraySize> > > >(__gnu_cxx::__normal_iterator<glslang::TArraySize*, std::vector<glslang::TArraySize, glslang::pool_allocator<glslang::TArraySize> > >, __gnu_cxx::__normal_iterator<glslang::TArraySize*, std::vector<glslang::TArraySize, glslang::pool_allocator<glslang::TArraySize> > >, __gnu_cxx::__normal_iterator<glslang::TArraySize*, std::vector<glslang::TArraySize, glslang::pool_allocator<glslang::TArraySize> > >, std::forward_iterator_tag)»:
(.text._ZNSt6vectorIN7glslang10TArraySizeENS0_14pool_allocatorIS1_EEE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPS1_S4_EEEEvS9_T_SA_St20forward_iterator_tag[_ZNSt6vectorIN7glslang10TArraySizeENS0_14pool_allocatorIS1_EEE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPS1_S4_EEEEvS9_T_SA_St20forward_iterator_tag]+0x256): неопределённая ссылка на «glslang::TPoolAllocator::allocate(unsigned long)»
/usr/bin/ld: /usr/lib64/gcc/x86_64-solus-linux/9/../../../../lib64/libSPIRV.a(GlslangToSpv.cpp.o): в функции «glslang::TType::TType(glslang::TType const&, int, bool)»:
(.text._ZN7glslang5TTypeC2ERKS0_ib[_ZN7glslang5TTypeC5ERKS0_ib]+0x1d6): неопределённая ссылка на «glslang::GetThreadPoolAllocator()»
/usr/bin/ld: (.text._ZN7glslang5TTypeC2ERKS0_ib[_ZN7glslang5TTypeC5ERKS0_ib]+0x1e3): неопределённая ссылка на «glslang::TPoolAllocator::allocate(unsigned long)»
/usr/bin/ld: (.text._ZN7glslang5TTypeC2ERKS0_ib[_ZN7glslang5TTypeC5ERKS0_ib]+0x23c): неопределённая ссылка на «glslang::GetThreadPoolAllocator()»
/usr/bin/ld: (.text._ZN7glslang5TTypeC2ERKS0_ib[_ZN7glslang5TTypeC5ERKS0_ib]+0x249): неопределённая ссылка на «glslang::TPoolAllocator::allocate(unsigned long)»
/usr/bin/ld: (.text._ZN7glslang5TTypeC2ERKS0_ib[_ZN7glslang5TTypeC5ERKS0_ib]+0x251): неопределённая ссылка на «glslang::GetThreadPoolAllocator()»
/usr/bin/ld: src/libplacebo.so.92.p/glsl_glslang.cc.o: в функции «pl_glslang_init»:
/home/flabb/Projects/libplacebo/build/../src/glsl/glslang.cc:56: неопределённая ссылка на «glslang::InitializeProcess()»
/usr/bin/ld: src/libplacebo.so.92.p/glsl_glslang.cc.o: в функции «pl_glslang_uninit»:
/home/flabb/Projects/libplacebo/build/../src/glsl/glslang.cc:66: неопределённая ссылка на «glslang::FinalizeProcess()»
/usr/bin/ld: src/libplacebo.so.92.p/glsl_glslang.cc.o: в функции «pl_glslang_compile»:
/home/flabb/Projects/libplacebo/build/../src/glsl/glslang.cc:95: неопределённая ссылка на «glslang::TShader::TShader(EShLanguage)»
/usr/bin/ld: /home/flabb/Projects/libplacebo/build/../src/glsl/glslang.cc:98: неопределённая ссылка на «glslang::TShader::setStrings(char const* const*, int)»
/usr/bin/ld: src/libplacebo.so.92.p/glsl_glslang.cc.o: в функции «glslang::TShader::parse(TBuiltInResource const*, int, EProfile, bool, bool, EShMessages)»:
/usr/include/glslang/Public/ShaderLang.h:633: неопределённая ссылка на «glslang::TShader::parse(TBuiltInResource const*, int, EProfile, bool, bool, EShMessages, glslang::TShader::Includer&)»
/usr/bin/ld: src/libplacebo.so.92.p/glsl_glslang.cc.o: в функции «pl_glslang_compile»:
/home/flabb/Projects/libplacebo/build/../src/glsl/glslang.cc:105: неопределённая ссылка на «glslang::TProgram::TProgram()»
/usr/bin/ld: /home/flabb/Projects/libplacebo/build/../src/glsl/glslang.cc:100: неопределённая ссылка на «glslang::TShader::getInfoLog()»
/usr/bin/ld: /home/flabb/Projects/libplacebo/build/../src/glsl/glslang.cc:107: неопределённая ссылка на «glslang::TProgram::link(EShMessages)»
/usr/bin/ld: /home/flabb/Projects/libplacebo/build/../src/glsl/glslang.cc:108: неопределённая ссылка на «glslang::TProgram::getInfoLog()»
collect2: ошибка: выполнение ld завершилось с кодом возврата 1

With new glslang MachineIndependent and GenericCodeGen libraries need to be linked. Similar fix was implemented by philipl for FFmpeg project.

Assignee
Assign to
Reviewer
Request review from
None
Milestone
None
Assign milestone
Time tracking
Reference: videolan/libplacebo!122
Source branch: glslang-linking-error-fix