[llvm-dev] Linker error while building a new back end in the latest LLVM from GitHub

Alex Susu via llvm-dev llvm-dev at lists.llvm.org
Sat Feb 6 09:26:47 PST 2021


   Hello.
     I would like to come back to this message.
     It seems the reason of these linker errors are some changes performed in LLVM itself 
in the last 2 years, since I am able to run my back end in an older LLVM build downloaded 
from the source repository in Mar 2019. I apologize for being a bit in the haze - I didn't 
follow closely the changes performed to LLVM lately.

     If interested please find my main CMakeLists.txt for my Connex LLVM back end:
         add_llvm_component_group(Connex)

         set(LLVM_TARGET_DEFINITIONS Connex.td)

         tablegen(LLVM ConnexGenRegisterInfo.inc -gen-register-info)
         tablegen(LLVM ConnexGenInstrInfo.inc -gen-instr-info)
         tablegen(LLVM ConnexGenAsmWriter.inc -gen-asm-writer)
         tablegen(LLVM ConnexGenAsmMatcher.inc -gen-asm-matcher)
         tablegen(LLVM ConnexGenDAGISel.inc -gen-dag-isel)
         tablegen(LLVM ConnexGenMCCodeEmitter.inc -gen-emitter)
         tablegen(LLVM ConnexGenCallingConv.inc -gen-callingconv)
         tablegen(LLVM ConnexGenSubtargetInfo.inc -gen-subtarget)
         add_public_tablegen_target(ConnexCommonTableGen)

         add_llvm_target(ConnexCodeGen
           ConnexAsmPrinter.cpp
           ConnexFrameLowering.cpp
           ConnexHazardRecognizer.cpp
           # ConnexHazardRecognizerPreRAScheduler.cpp
           ConnexInstrInfo.cpp
           ConnexISelDAGToDAG.cpp
           ConnexISelLowering.cpp
           ConnexMCInstLower.cpp
           ConnexRegisterInfo.cpp
           ConnexSelectionDAGInfo.cpp
           ConnexSubtarget.cpp
           ConnexTargetMachine.cpp

           LINK_COMPONENTS
           #Analysis
           AsmPrinter
           CodeGen
           Core
           ConnexDesc
           ConnexInfo
           MC
           SelectionDAG
           Support
           Target
           #TransformUtils

           ADD_TO_COMPONENT
           Connex
           )

         #add_subdirectory(AsmParser) # 2021_01
         #add_subdirectory(InstPrinter)
         #add_subdirectory(Disassembler)
         add_subdirectory(MCTargetDesc)
         add_subdirectory(TargetInfo)


     Please keep in mind that the source files of my Connex LLVM back
  end are in a ZIP archive at this address:
  https://sites.google.com/site/alexsusu/myfilecabinet/Connex_be.zip .


   Thank you very much,
     Alex


On 2/3/2021 11:43 PM, Alex Susu wrote:
> Hello.
>      I am trying to build against the latest LLVM source from GitHub (from Jan 23 2021) my 
> Connex processor back end, which is mostly inspired from the BPF and Mips back end.
>      I did my best to correct all the errors that appeared, but I now get a rather strange 
> linker error that I don't know exactly how to solve (maybe somebody is more experienced 
> than me on this). Maybe I have an error in lib/Target/Connex/CMakeLists.txt.
> 
>     The error I get while building LLVM is:
>        <<cd /home/asusu/LLVM/llvm2021_01_23/llvm-project/build/lib/Target/Connex && 
> /usr/bin/cmake -E cmake_link_script CMakeFiles/LLVMConnexCodeGen.dir/link.txt --verbose=1
>        /usr/bin/c++ -fPIC  -fPIC -fvisibility-inlines-hidden -Werror=date-time -Wall 
> -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers 
> -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized 
> -Wno-class-memaccess -Wno-redundant-move -Wno-noexcept-type -Wdelete-non-virtual-dtor 
> -Wsuggest-override -Wno-comment -g 
>   -Wl,-rpath-link,/home/asusu/LLVM/llvm2021_01_23/llvm-project/build/./lib   -Wl,-z,defs 
> -Wl,-z,nodelete -shared -Wl,-soname,libLLVMConnexCodeGen.so.12git -o 
> ../../libLLVMConnexCodeGen.so.12git 
> CMakeFiles/LLVMConnexCodeGen.dir/ConnexAsmPrinter.cpp.o 
> CMakeFiles/LLVMConnexCodeGen.dir/ConnexFrameLowering.cpp.o 
> CMakeFiles/LLVMConnexCodeGen.dir/ConnexHazardRecognizer.cpp.o 
> CMakeFiles/LLVMConnexCodeGen.dir/ConnexInstrInfo.cpp.o 
> CMakeFiles/LLVMConnexCodeGen.dir/ConnexISelDAGToDAG.cpp.o 
> CMakeFiles/LLVMConnexCodeGen.dir/ConnexISelLowering.cpp.o 
> CMakeFiles/LLVMConnexCodeGen.dir/ConnexMCInstLower.cpp.o 
> CMakeFiles/LLVMConnexCodeGen.dir/ConnexRegisterInfo.cpp.o 
> CMakeFiles/LLVMConnexCodeGen.dir/ConnexSelectionDAGInfo.cpp.o 
> CMakeFiles/LLVMConnexCodeGen.dir/ConnexSubtarget.cpp.o 
> CMakeFiles/LLVMConnexCodeGen.dir/ConnexTargetMachine.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib" 
> ../../libLLVMAsmPrinter.so.12git ../../libLLVMConnexDesc.so.12git 
> ../../libLLVMConnexInfo.so.12git ../../libLLVMSelectionDAG.so.12git 
> ../../libLLVMCodeGen.so.12git ../../libLLVMTarget.so.12git ../../libLLVMMC.so.12git 
> ../../libLLVMCore.so.12git ../../libLLVMSupport.so.12git 
> -Wl,-rpath-link,/home/asusu/LLVM/llvm2021_01_23/llvm-project/build/lib
>        /usr/bin/ld: CMakeFiles/LLVMConnexCodeGen.dir/ConnexTargetMachine.cpp.o: in 
> function `llvm::TargetTransformInfo::Model<llvm::ConnexTTIImpl>::~Model()':
> /home/asusu/LLVM/llvm2021_01_23/llvm-project/llvm/include/llvm/Analysis/TargetTransformInfo.h:1672: 
> undefined reference to `llvm::TargetTransformInfo::Concept::~Concept()'
>        /usr/bin/ld: CMakeFiles/LLVMConnexCodeGen.dir/ConnexTargetMachine.cpp.o: in 
> function 
> `llvm::TargetTransformInfoImplCRTPBase<llvm::ConnexTTIImpl>::getUserCost(llvm::User 
> const*, llvm::ArrayRef<llvm::Value const*>, llvm::TargetTransformInfo::TargetCostKind)':
> /home/asusu/LLVM/llvm2021_01_23/llvm-project/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h:911: 
> undefined reference to `llvm::IntrinsicCostAttributes::IntrinsicCostAttributes(unsigned 
> int, llvm::CallBase const&)'
>        /usr/bin/ld: 
> /home/asusu/LLVM/llvm2021_01_23/llvm-project/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h:953: 
> undefined reference to `llvm::TargetTransformInfo::getOperandInfo(llvm::Value const*, 
> llvm::TargetTransformInfo::OperandValueProperties&)'
>        ...
>        ...
>        /usr/bin/ld: 
> /home/asusu/LLVM/llvm2021_01_23/llvm-project/llvm/include/llvm/CodeGen/BasicTTIImpl.h:1805: undefined 
> reference to `llvm::IntrinsicCostAttributes::IntrinsicCostAttributes(unsigned int, 
> llvm::Type*, llvm::ArrayRef<llvm::Type*>)'
>        /usr/bin/ld: 
> /home/asusu/LLVM/llvm2021_01_23/llvm-project/llvm/include/llvm/CodeGen/BasicTTIImpl.h:1826: undefined 
> reference to `llvm::IntrinsicCostAttributes::IntrinsicCostAttributes(unsigned int, 
> llvm::Type*, llvm::ArrayRef<llvm::Type*>, llvm::FastMathFlags)'
>        collect2: error: ld returned 1 exit status>>
> 
> 
>      Please find if you have the time also most of the source files of my Connex LLVM back 
> end in the ZIP archive at this address: 
> https://sites.google.com/site/alexsusu/myfilecabinet/Connex_be.zip (please note the file 
> ERROR_LINKER.txt contains the above mentioned linker error).
>      Please let me know if you want me to provide any further information about my build.
> 
>    Thank you very much,
>      Alex


More information about the llvm-dev mailing list