Skip to content

Link errors when attempting to use external LLVM & Clang #430

@apteryks

Description

@apteryks

Describe the bug

When using LLVM and Clang as external dependencies (but built using their patched sources), Cling fails to link, showing various missing LLVM symbols.

[ 97%] Building CXX object tools/Jupyter/CMakeFiles/libclingJupyter.dir/Kernel.cpp.o
cd /tmp/guix-build-cling-0.9-1.d78d1a0.drv-0/build/tools/Jupyter && /gnu/store/rn75fm7adgx3pw5j8pg3bczfqq1y17lk-gcc-7.5.0/bin/c++  -DCLING_VERSION="1.0~dev" -DGTEST_HAS_RTTI=0 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/tmp/guix-build-cling-0.9-1.d78d1a0.drv-0/build/tools/Jupyter -I/tmp/guix-build-cling-0.9-1.d78d1a0.drv-0/source/tools/Jupyter -I/tmp/guix-build-cling-0.9-1.d78d1a0.drv-0/source/include -I/tmp/guix-build-cling-0.9-1.d78d1a0.drv-0/build/include  -fPIC -fvisibility-inlines-hidden -Werror=date-time -std=c++11 -w -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -fno-strict-aliasing -Wno-nested-anon-types -Wno-covered-switch-default -Wno-unused-local-typedef -fno-rtti -O3 -DNDEBUG -fPIC -fvisibility=default -fvisibility-inlines-hidden    -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-rtti -fexceptions -frtti -o CMakeFiles/libclingJupyter.dir/Kernel.cpp.o -c /tmp/guix-build-cling-0.9-1.d78d1a0.drv-0/source/tools/Jupyter/Kernel.cpp
[ 98%] Linking CXX shared library ../../lib/libclingJupyter.so
cd /tmp/guix-build-cling-0.9-1.d78d1a0.drv-0/build/tools/Jupyter && /gnu/store/qixwn3dw6glj848hrr3h8fxm6s7wzxm3-cmake-minimal-3.16.5/bin/cmake -E cmake_link_script CMakeFiles/libclingJupyter.dir/link.txt --verbose=1
/gnu/store/rn75fm7adgx3pw5j8pg3bczfqq1y17lk-gcc-7.5.0/bin/c++ -fPIC  -fPIC -fvisibility-inlines-hidden -Werror=date-time -std=c++11 -w -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -fno-strict-aliasing -Wno-nested-anon-types -Wno-covered-switch-default -Wno-unused-local-typedef -fno-rtti -O3 -DNDEBUG  -Wl,-O3  -Wl,-z,defs -Wl,-z,nodelete -shared -Wl,-soname,libclingJupyter.so.9 -o ../../lib/libclingJupyter.so.9 CMakeFiles/libclingJupyter.dir/Kernel.cpp.o  -Wl,-rpath,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -lclangAST -lclangBasic -lclangCodeGen -lclangDriver -lclangFrontend -lclangLex -lclangParse -lclangSema -lclangSerialization ../../lib/libclingUserInterface.a ../../lib/libclingMetaProcessor.a -Wl,--whole-archive ../../lib/libclingInterpreter.a -Wl,--no-whole-archive ../../lib/libclingUtils.a -lclangCodeGen -lclangDriver -lclangFrontend -lclangParse -lclangSema -lclangAnalysis -lclangEdit -lclangRewrite -lclangRewriteFrontend -lclangAST -lclangBasic -lclangLex -lclangSerialization -ldl /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMCoroutines.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMCoverage.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMLTO.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMOption.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMOrcJIT.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMExecutionEngine.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMRuntimeDyld.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMNVPTXCodeGen.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMipo.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMNVPTXDesc.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMNVPTXInfo.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMX86CodeGen.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMScalarOpts.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMTarget.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMTransformUtils.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMAnalysis.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMX86AsmParser.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMX86Desc.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMObject.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMCore.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMX86Disassembler.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMMC.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMBinaryFormat.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMX86Info.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMX86Utils.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMSupport.so.9 
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `llvm::BitstreamCursor::advance(unsigned int)':
(.text._ZN4llvm15BitstreamCursor7advanceEj[_ZN4llvm15BitstreamCursor7advanceEj]+0xa7): undefined reference to `llvm::BitstreamCursor::ReadAbbrevRecord()'
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `clang::ASTRecordReader::readRecord(llvm::BitstreamCursor&, unsigned int)':
(.text._ZN5clang15ASTRecordReader10readRecordERN4llvm15BitstreamCursorEj+0x22): undefined reference to `llvm::BitstreamCursor::readRecord(unsigned int, llvm::SmallVectorImpl<unsigned long>&, llvm::StringRef*)'
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `clang::ASTReader::ReadBlockAbbrevs(llvm::BitstreamCursor&, unsigned int)':
(.text._ZN5clang9ASTReader16ReadBlockAbbrevsERN4llvm15BitstreamCursorEj+0x1e): undefined reference to `llvm::BitstreamCursor::EnterSubBlock(unsigned int, unsigned int*)'
ld: (.text._ZN5clang9ASTReader16ReadBlockAbbrevsERN4llvm15BitstreamCursorEj+0xe8): undefined reference to `llvm::BitstreamCursor::ReadAbbrevRecord()'
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `SkipCursorToBlock(llvm::BitstreamCursor&, unsigned int)':
(.text._ZL17SkipCursorToBlockRN4llvm15BitstreamCursorEj+0x5d): undefined reference to `llvm::BitstreamCursor::skipRecord(unsigned int)'
ld: (.text._ZL17SkipCursorToBlockRN4llvm15BitstreamCursorEj+0x20b): undefined reference to `llvm::BitstreamCursor::EnterSubBlock(unsigned int, unsigned int*)'
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `readASTFileSignature(llvm::StringRef)':
(.text._ZL20readASTFileSignatureN4llvm9StringRefE+0x1b9): undefined reference to `llvm::BitstreamCursor::readRecord(unsigned int, llvm::SmallVectorImpl<unsigned long>&, llvm::StringRef*)'
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `clang::ASTReader::readUnhashedControlBlockImpl(clang::serialization::ModuleFile*, llvm::StringRef, unsigned int, bool, clang::ASTReaderListener*, bool)':
(.text._ZN5clang9ASTReader28readUnhashedControlBlockImplEPNS_13serialization10ModuleFileEN4llvm9StringRefEjbPNS_17ASTReaderListenerEb+0x237): undefined reference to `llvm::BitstreamCursor::readRecord(unsigned int, llvm::SmallVectorImpl<unsigned long>&, llvm::StringRef*)'
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `clang::ASTReader::readInputFileInfo(clang::serialization::ModuleFile&, unsigned int)':
(.text._ZN5clang9ASTReader17readInputFileInfoERNS_13serialization10ModuleFileEj+0x143): undefined reference to `llvm::BitstreamCursor::readRecord(unsigned int, llvm::SmallVectorImpl<unsigned long>&, llvm::StringRef*)'
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `clang::ASTReader::getOriginalSourceFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, clang::FileManager&, clang::PCHContainerReader const&, clang::DiagnosticsEngine&)':
(.text._ZN5clang9ASTReader21getOriginalSourceFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS_11FileManagerERKNS_18PCHContainerReaderERNS_17DiagnosticsEngineE+0x472): undefined reference to `llvm::BitstreamCursor::readRecord(unsigned int, llvm::SmallVectorImpl<unsigned long>&, llvm::StringRef*)'
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `clang::ASTReader::ReadSLocEntry(int)::{lambda(llvm::BitstreamCursor&, llvm::StringRef)#1}::operator()(llvm::BitstreamCursor&, llvm::StringRef) const':
(.text._ZZN5clang9ASTReader13ReadSLocEntryEiENKUlRN4llvm15BitstreamCursorENS1_9StringRefEE_clES3_S4_+0x98): undefined reference to `llvm::BitstreamCursor::readRecord(unsigned int, llvm::SmallVectorImpl<unsigned long>&, llvm::StringRef*)'
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `clang::ASTReader::ReadSourceManagerBlock(clang::serialization::ModuleFile&)':
(.text._ZN5clang9ASTReader22ReadSourceManagerBlockERNS_13serialization10ModuleFileE+0xb0): undefined reference to `llvm::BitstreamCursor::EnterSubBlock(unsigned int, unsigned int*)'
ld: (.text._ZN5clang9ASTReader22ReadSourceManagerBlockERNS_13serialization10ModuleFileE+0x14c): undefined reference to `llvm::BitstreamCursor::readRecord(unsigned int, llvm::SmallVectorImpl<unsigned long>&, llvm::StringRef*)'
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `clang::ASTReader::ReadExtensionBlock(clang::serialization::ModuleFile&)':
(.text._ZN5clang9ASTReader18ReadExtensionBlockERNS_13serialization10ModuleFileE+0xce): undefined reference to `llvm::BitstreamCursor::readRecord(unsigned int, llvm::SmallVectorImpl<unsigned long>&, llvm::StringRef*)'
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `clang::ASTReader::ReadOptionsBlock(llvm::BitstreamCursor&, unsigned int, bool, clang::ASTReaderListener&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)':
(.text._ZN5clang9ASTReader16ReadOptionsBlockERN4llvm15BitstreamCursorEjbRNS_17ASTReaderListenerERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x37): undefined reference to `llvm::BitstreamCursor::EnterSubBlock(unsigned int, unsigned int*)'
ld: (.text._ZN5clang9ASTReader16ReadOptionsBlockERN4llvm15BitstreamCursorEjbRNS_17ASTReaderListenerERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x117): undefined reference to `llvm::BitstreamCursor::readRecord(unsigned int, llvm::SmallVectorImpl<unsigned long>&, llvm::StringRef*)'
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `clang::ASTReader::ReadControlBlock(clang::serialization::ModuleFile&, llvm::SmallVectorImpl<clang::ASTReader::ImportedModule>&, clang::serialization::ModuleFile const*, unsigned int)':
(.text._ZN5clang9ASTReader16ReadControlBlockERNS_13serialization10ModuleFileERN4llvm15SmallVectorImplINS0_14ImportedModuleEEEPKS2_j+0x48): undefined reference to `llvm::BitstreamCursor::EnterSubBlock(unsigned int, unsigned int*)'
[...]

See ba63aikq9ym2n7gjs13m56hxa77q25-cling-0.9-1.d78d1a0.drv.txt for the complete build log.

Expected behavior

Cling should build successfully.

To Reproduce

  1. Install Guix following https://guix.gnu.org/manual/en/html_node/Binary-Installation.html.
  2. Checktout https://gitlab.com/Apteryks/guix/-/commits/cling and build Guix following and http://guix.gnu.org/manual/en/html_node/Building-from-Git.html#Building-from-Git
  3. From the Guix checkout, run: ./pre-inst-env guix build cling

Setup

  1. Cling version 0.9, commit d78d1a0.
  2. Operating system Guix System
  3. From sources

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions