llvm / llvm/Polygeist

Undefined reference to `cc1_main` during linking time

Open
#102 6 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
624
Forks
170
PR merge metrics
No merged PRs in 30d

Description

Hi,

First of all, super cool work. I watched your presentation at PACT and had to try this project out.
But I am running into an issue during compilation.

Error:

```
ninja check-mlir-clang
[1/2] Linking CXX executable mlir-clang/mlir-clang
FAILED: mlir-clang/mlir-clang
: && /usr/bin/clang++-10 -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wstring-conversion -Wmisleading-indentation -fdiagnostics-color -g -Wl,-rpath-link, mlir-clang/CMakeFiles/mlir-clang.dir/__/llvm-project/clang/tools/driver/cc1_main.cpp.o mlir-clang/CMakeFiles/mlir-clang.dir/__/llvm-project/clang/tools/driver/cc1as_main.cpp.o mlir-clang/CMakeFiles/mlir-clang.dir/__/llvm-project/clang/tools/driver/cc1gen_reproducer_main.cpp.o mlir-clang/CMakeFiles/mlir-clang.dir/mlir-clang.cc.o mlir-clang/CMakeFiles/mlir-clang.dir/Lib/utils.cc.o mlir-clang/CMakeFiles/mlir-clang.dir/Lib/AffineUtils.cc.o mlir-clang/CMakeFiles/mlir-clang.dir/Lib/pragmaHandler.cc.o mlir-clang/CMakeFiles/mlir-clang.dir/Lib/ValueCategory.cc.o mlir-clang/CMakeFiles/mlir-clang.dir/Lib/CGStmt.cc.o -o mlir-clang/mlir-clang -L/working_dir/llvm-project/build/./lib -Wl,-rpath,"\$ORIGIN/../lib:/working_dir/llvm-project/build/./lib" ../llvm-project/build/lib/libLLVMX86CodeGen.a ../llvm-project/build/lib/libLLVMX86AsmParser.a ../llvm-project/build/lib/libLLVMX86Desc.a ../llvm-project/build/lib/libLLVMX86Disassembler.a ../llvm-project/build/lib/libLLVMX86Info.a ../llvm-project/build/lib/libLLVMAnalysis.a ../llvm-project/build/lib/libLLVMCodeGen.a ../llvm-project/build/lib/libLLVMCore.a ../llvm-project/build/lib/libLLVMAggressiveInstCombine.a ../llvm-project/build/lib/libLLVMInstCombine.a ../llvm-project/build/lib/libLLVMInstrumentation.a ../llvm-project/build/lib/libLLVMMC.a ../llvm-project/build/lib/libLLVMMCParser.a ../llvm-project/build/lib/libLLVMObjCARCOpts.a ../llvm-project/build/lib/libLLVMOption.a ../llvm-project/build/lib/libLLVMScalarOpts.a ../llvm-project/build/lib/libLLVMSupport.a ../llvm-project/build/lib/libLLVMTransformUtils.a ../llvm-project/build/lib/libLLVMVectorize.a -lpthread ../llvm-project/build/lib/libMLIRSCFTransforms.a lib/polygeist/libMLIRPolygeist.a ../llvm-project/build/lib/libMLIRSupport.a ../llvm-project/build/lib/libMLIRIR.a ../llvm-project/build/lib/libMLIRAnalysis.a ../llvm-project/build/lib/libMLIRLLVMIR.a ../llvm-project/build/lib/libMLIRNVVMIR.a ../llvm-project/build/lib/libMLIROpenMP.a ../llvm-project/build/lib/libMLIRGPUOps.a ../llvm-project/build/lib/libMLIRTransforms.a ../llvm-project/build/lib/libMLIRSCFToStandard.a ../llvm-project/build/lib/libMLIRStandardToLLVM.a ../llvm-project/build/lib/libMLIRAffineTransforms.a ../llvm-project/build/lib/libMLIRAffineToStandard.a ../llvm-project/build/lib/libMLIRMathToLLVM.a ../llvm-project/build/lib/libMLIRTargetLLVMIRImport.a lib/polygeist/Passes/libMLIRPolygeistTransforms.a ../llvm-project/build/lib/libMLIRLLVMToLLVMIRTranslation.a ../llvm-project/build/lib/libMLIRSCFToOpenMP.a ../llvm-project/build/lib/libMLIROpenMPToLLVM.a ../llvm-project/build/lib/libMLIROpenMPToLLVMIRTranslation.a ../llvm-project/build/lib/libclangAST.a ../llvm-project/build/lib/libclangBasic.a ../llvm-project/build/lib/libclangCodeGen.a ../llvm-project/build/lib/libclangDriver.a ../llvm-project/build/lib/libclangFrontend.a ../llvm-project/build/lib/libclangFrontendTool.a ../llvm-project/build/lib/libclangLex.a ../llvm-project/build/lib/libclangSerialization.a ../llvm-project/build/lib/libLLVMAsmPrinter.a ../llvm-project/build/lib/libLLVMDebugInfoDWARF.a ../llvm-project/build/lib/libLLVMDebugInfoMSF.a ../llvm-project/build/lib/libLLVMGlobalISel.a ../llvm-project/build/lib/libLLVMSelectionDAG.a ../llvm-project/build/lib/libLLVMCFGuard.a ../llvm-project/build/lib/libLLVMMCDisassembler.a ../llvm-project/build/lib/libMLIRVectorToLLVM.a ../llvm-project/build/lib/libMLIRArmNeon.a ../llvm-project/build/lib/libMLIRArmSVETransforms.a ../llvm-project/build/lib/libMLIRArmSVE.a ../llvm-project/build/lib/libMLIRAMXTransforms.a ../llvm-project/build/lib/libMLIRAMX.a ../llvm-project/build/lib/libMLIRX86VectorTransforms.a ../llvm-project/build/lib/libMLIRX86Vector.a lib/polygeist/libMLIRPolygeist.a ../llvm-project/build/lib/libMLIRNVVMIR.a ../llvm-project/build/lib/libMLIRGPUOps.a ../llvm-project/build/lib/libMLIRDLTI.a ../llvm-project/build/lib/libMLIRSCFToStandard.a ../llvm-project/build/lib/libMLIRStandardOpsTransforms.a ../llvm-project/build/lib/libMLIRArithmeticTransforms.a ../llvm-project/build/lib/libMLIRStandardToLLVM.a ../llvm-project/build/lib/libMLIRArithmeticToLLVM.a ../llvm-project/build/lib/libMLIRMemRefToLLVM.a ../llvm-project/build/lib/libMLIRLLVMCommonConversion.a ../llvm-project/build/lib/libMLIRTransforms.a ../llvm-project/build/lib/libMLIRCopyOpInterface.a ../llvm-project/build/lib/libMLIRVector.a ../llvm-project/build/lib/libMLIRAffineUtils.a ../llvm-project/build/lib/libMLIRTransformUtils.a ../llvm-project/build/lib/libMLIRRewrite.a ../llvm-project/build/lib/libMLIRPDLToPDLInterp.a ../llvm-project/build/lib/libMLIRPDLInterp.a ../llvm-project/build/lib/libMLIRPDL.a ../llvm-project/build/lib/libMLIRLoopAnalysis.a ../llvm-project/build/lib/libMLIRPresburger.a ../llvm-project/build/lib/libMLIRLinalg.a
../llvm-project/build/lib/libMLIRAffine.a ../llvm-project/build/lib/libMLIRSCF.a ../llvm-project/build/lib/libMLIRMemRef.a ../llvm-project/build/lib/libMLIRMemRefUtils.a ../llvm-project/build/lib/libMLIRLoopLikeInterface.a ../llvm-project/build/lib/libMLIRTensor.a ../llvm-project/build/lib/libMLIRStandard.a ../llvm-project/build/lib/libMLIRArithmetic.a ../llvm-project/build/lib/libMLIRVectorInterfaces.a ../llvm-project/build/lib/libMLIRCastInterfaces.a ../llvm-project/build/lib/libMLIRMath.a ../llvm-project/build/lib/libMLIRDialect.a ../llvm-project/build/lib/libMLIRDialectUtils.a ../llvm-project/build/lib/libMLIRTilingInterface.a
../llvm-project/build/lib/libMLIROpenMP.a ../llvm-project/build/lib/libMLIRTargetLLVMIRExport.a ../llvm-project/build/lib/libMLIRTranslation.a ../llvm-project/build/lib/libMLIRParser.a ../llvm-project/build/lib/libMLIRLLVMIRTransforms.a ../llvm-project/build/lib/libMLIRLLVMIR.a ../llvm-project/build/lib/libMLIRPass.a ../llvm-project/build/lib/libMLIRAnalysis.a ../llvm-project/build/lib/libMLIRCallInterfaces.a ../llvm-project/build/lib/libMLIRControlFlowInterfaces.a ../llvm-project/build/lib/libMLIRDataLayoutInterfaces.a ../llvm-project/build/lib/libMLIRInferTypeOpInterface.a ../llvm-project/build/lib/libMLIRSideEffectInterfaces.a ../llvm-project/build/lib/libMLIRViewLikeInterface.a ../llvm-project/build/lib/libMLIRIR.a ../llvm-project/build/lib/libMLIRSupport.a ../llvm-project/build/lib/libclangCodeGen.a ../llvm-project/build/lib/libLLVMCoverage.a ../llvm-project/build/lib/libLLVMLTO.a ../llvm-project/build/lib/libLLVMCodeGen.a ../llvm-project/build/lib/libLLVMExtensions.a ../llvm-project/build/lib/libLLVMPasses.a ../llvm-project/build/lib/libLLVMObjCARCOpts.a ../llvm-project/build/lib/libLLVMTarget.a ../llvm-project/build/lib/libLLVMCoroutines.a ../llvm-project/build/lib/libLLVMipo.a ../llvm-project/build/lib/libLLVMInstrumentation.a ../llvm-project/build/lib/libLLVMVectorize.a ../llvm-project/build/lib/libLLVMBitWriter.a ../llvm-project/build/lib/libLLVMIRReader.a ../llvm-project/build/lib/libLLVMAsmParser.a ../llvm-project/build/lib/libLLVMLinker.a ../llvm-project/build/lib/libclangRewriteFrontend.a ../llvm-project/build/lib/libclangARCMigrate.a ../llvm-project/build/lib/libclangStaticAnalyzerFrontend.a ../llvm-project/build/lib/libclangStaticAnalyzerCheckers.a ../llvm-project/build/lib/libclangStaticAnalyzerCore.a ../llvm-project/build/lib/libclangCrossTU.a ../llvm-project/build/lib/libclangIndex.a ../llvm-project/build/lib/libclangFrontend.a ../llvm-project/build/lib/libclangDriver.a
../llvm-project/build/lib/libLLVMOption.a ../llvm-project/build/lib/libclangParse.a ../llvm-project/build/lib/libclangSerialization.a ../llvm-project/build/lib/libclangSema.a ../llvm-project/build/lib/libclangAnalysis.a ../llvm-project/build/lib/libclangASTMatchers.a ../llvm-project/build/lib/libclangEdit.a ../llvm-project/build/lib/libclangAST.a ../llvm-project/build/lib/libLLVMFrontendOpenMP.a ../llvm-project/build/lib/libLLVMScalarOpts.a ../llvm-project/build/lib/libLLVMAggressiveInstCombine.a ../llvm-project/build/lib/libLLVMInstCombine.a ../llvm-project/build/lib/libLLVMTransformUtils.a ../llvm-project/build/lib/libLLVMAnalysis.a ../llvm-project/build/lib/libLLVMProfileData.a ../llvm-project/build/lib/libLLVMObject.a ../llvm-project/build/lib/libLLVMMCParser.a ../llvm-project/build/lib/libLLVMMC.a ../llvm-project/build/lib/libLLVMDebugInfoCodeView.a ../llvm-project/build/lib/libLLVMBitReader.a ../llvm-project/build/lib/libLLVMTextAPI.a ../llvm-project/build/lib/libLLVMCore.a ../llvm-project/build/lib/libLLVMBinaryFormat.a ../llvm-project/build/lib/libLLVMRemarks.a ../llvm-project/build/lib/libLLVMBitstreamReader.a ../llvm-project/build/lib/libclangFormat.a ../llvm-project/build/lib/libclangToolingInclusions.a ../llvm-project/build/lib/libclangToolingCore.a ../llvm-project/build/lib/libclangRewrite.a ../llvm-project/build/lib/libclangLex.a ../llvm-project/build/lib/libclangBasic.a ../llvm-project/build/lib/libLLVMSupport.a -lrt -ldl -lpthread -lm /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libtinfo.so ../llvm-project/build/lib/libLLVMDemangle.a && :
/usr/bin/ld: mlir-clang/CMakeFiles/mlir-clang.dir/mlir-clang.cc.o: in function `ExecuteCC1Tool(llvm::SmallVectorImpl&)':
/working_dir/build/../mlir-clang/mlir-clang.cc:182: undefined reference to `cc1_main(llvm::ArrayRef, char const*, void*)'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
```

When?

While following the Readme instructions for option 1, building llvm and polygeist code with two cmake commands.

System:

I have a build image clang-10, gcc-9, cmake, ninja installed. I used clang-10 to compile llvm without problems, but it fails with the error above during the final linking steps of `ninja check-mlir-clang`

Questions?

External `cc1_main` seem to be included from the llvm-project. Maybe there is a library inclusion missing in the `mlir-clang`'s `CMakeLists` file during polygeist compilation? Or maybe there is something missing in my system.

Have you seen this error before?

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the failure with the README's option 1 build and `ninja check-mlir-clang`; start at `mlir-clang/mlir-clang.cc` line 182 and inspect the `mlir-clang` CMake configuration. Determine why `cc1_main` is unresolved during linking, then verify that the `mlir-clang` target links successfully and the check completes.

Written by the indexing model from the issue text.

Assessment

Tech stack
cmake, cpp
Domain
build-system, compilers
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.