prosyslab-classroom / cs524-program-analysis

54 stars 12 forks source link

[Question][Hw7] Error during linking #52

Closed jh05013 closed 4 months ago

jh05013 commented 2 years ago

Hi,

I built the dummy parser as instructed, but when I run make under the root directory, following illegible error occurs. How can I fix this problem?

I have updated everything to the newest version, and I have not touched any source code.

Thanks!

    ocamlopt src/main.exe (exit 2)
(cd _build/default && /usr/bin/ocamlopt.opt -w @1..3@5..28@30..39@43@46..47@49..57@61..62-40 -strict-sequence -strict-formats -short-paths -keep-locs -warn-error -A -g -o src/main.exe /home/a/.opam/default/lib/llvm/shared/llvm.cmxa -I /home/a/.opam/default/lib/llvm /home/a/.opam/default/lib/zarith/zarith.cmxa -I /home/a/.opam/default/lib/zarith /usr/lib/ocaml/unix.cmxa -I /usr/lib/ocaml /usr/lib/ocaml/threads/threads.cmxa -I /usr/lib/ocaml /home/a/.opam/default/lib/z3/z3ml.cmxa -I /home/a/.opam/default/lib/z3 /usr/lib/ocaml/str.cmxa -I /usr/lib/ocaml src/dummy_llvm_irreader.cmxa -I llvm/build/lib -I src /home/a/.opam/default/lib/llvm/shared/llvm_bitreader.cmxa -I /home/a/.opam/default/lib/llvm /home/a/.opam/default/lib/llvm/shared/llvm_irreader.cmxa -I /home/a/.opam/default/lib/llvm llvmutils/src/llvmutils.cmxa src/.main.eobjs/native/dune__exe.cmx src/.main.eobjs/native/dune__exe__Typesystem.cmx src/.main.eobjs/native/dune__exe__Extractor.cmx src/.main.eobjs/native/dune__exe__Main.cmx)
/usr/bin/ld: llvm/build/lib/libDummyLLVMIRReader.a(IRReader.cpp.o): in function `llvm::parseIR(llvm::MemoryBufferRef, llvm::SMDiagnostic&, llvm::LLVMContext&, bool, llvm::StringRef)':
IRReader.cpp:(.text._ZN4llvm7parseIRENS_15MemoryBufferRefERNS_12SMDiagnosticERNS_11LLVMContextEbNS_9StringRefE+0x11b): undefined reference to `llvm::parseBitcodeFile(llvm::MemoryBufferRef, llvm::LLVMContext&)'
/usr/bin/ld: llvm/build/lib/libDummyLLVMAsmParser.a(LLParser.cpp.o): in function `llvm::DIEnumerator::get(llvm::LLVMContext&, long, bool, llvm::MDString*)':
LLParser.cpp:(.text._ZN4llvm12DIEnumerator3getERNS_11LLVMContextElbPNS_8MDStringE[_ZN4llvm12DIEnumerator3getERNS_11LLVMContextElbPNS_8MDStringE]+0x3d): undefined reference to `llvm::DIEnumerator::getImpl(llvm::LLVMContext&, long, bool, llvm::MDString*, llvm::Metadata::StorageType, bool)'
/usr/bin/ld: llvm/build/lib/libDummyLLVMAsmParser.a(LLParser.cpp.o): in function `llvm::DIEnumerator::getDistinct(llvm::LLVMContext&, long, bool, llvm::MDString*)':
LLParser.cpp:(.text._ZN4llvm12DIEnumerator11getDistinctERNS_11LLVMContextElbPNS_8MDStringE[_ZN4llvm12DIEnumerator11getDistinctERNS_11LLVMContextElbPNS_8MDStringE]+0x3d): undefined reference to `llvm::DIEnumerator::getImpl(llvm::LLVMContext&, long, bool, llvm::MDString*, llvm::Metadata::StorageType, bool)'
/usr/bin/ld: llvm/build/lib/libDummyLLVMAsmParser.a(LLParser.cpp.o): in function `llvm::DICompositeType::get(llvm::LLVMContext&, unsigned int, llvm::MDString*, llvm::Metadata*, unsigned int, llvm::Metadata*, llvm::Metadata*, unsigned long, unsigned int, unsigned long, llvm::DINode::DIFlags, llvm::Metadata*, unsigned int, llvm::Metadata*, llvm::Metadata*, llvm::MDString*, llvm::Metadata*)':
LLParser.cpp:(.text._ZN4llvm15DICompositeType3getERNS_11LLVMContextEjPNS_8MDStringEPNS_8MetadataEjS6_S6_mjmNS_6DINode7DIFlagsES6_jS6_S6_S4_S6_[_ZN4llvm15DICompositeType3getERNS_11LLVMContextEjPNS_8MDStringEPNS_8MetadataEjS6_S6_mjmNS_6DINode7DIFlagsES6_jS6_S6_S4_S6_]+0x6a): undefined reference to `llvm::DICompositeType::getImpl(llvm::LLVMContext&, unsigned int, llvm::MDString*, llvm::Metadata*, unsigned int, llvm::Metadata*, llvm::Metadata*, unsigned long, unsigned int, unsigned long, llvm::DINode::DIFlags, llvm::Metadata*, unsigned int, llvm::Metadata*, llvm::Metadata*, llvm::MDString*, llvm::Metadata*, llvm::Metadata::StorageType, bool)'
/usr/bin/ld: llvm/build/lib/libDummyLLVMAsmParser.a(LLParser.cpp.o): in function `llvm::DICompositeType::getDistinct(llvm::LLVMContext&, unsigned int, llvm::MDString*, llvm::Metadata*, unsigned int, llvm::Metadata*, llvm::Metadata*, unsigned long, unsigned int, unsigned long, llvm::DINode::DIFlags, llvm::Metadata*, unsigned int, llvm::Metadata*, llvm::Metadata*, llvm::MDString*, llvm::Metadata*)':
LLParser.cpp:(.text._ZN4llvm15DICompositeType11getDistinctERNS_11LLVMContextEjPNS_8MDStringEPNS_8MetadataEjS6_S6_mjmNS_6DINode7DIFlagsES6_jS6_S6_S4_S6_[_ZN4llvm15DICompositeType11getDistinctERNS_11LLVMContextEjPNS_8MDStringEPNS_8MetadataEjS6_S6_mjmNS_6DINode7DIFlagsES6_jS6_S6_S4_S6_]+0x6a): undefined reference to `llvm::DICompositeType::getImpl(llvm::LLVMContext&, unsigned int, llvm::MDString*, llvm::Metadata*, unsigned int, llvm::Metadata*, llvm::Metadata*, unsigned long, unsigned int, unsigned long, llvm::DINode::DIFlags, llvm::Metadata*, unsigned int, llvm::Metadata*, llvm::Metadata*, llvm::MDString*, llvm::Metadata*, llvm::Metadata::StorageType, bool)'
/usr/bin/ld: llvm/build/lib/libDummyLLVMAsmParser.a(LLParser.cpp.o): in function `llvm::DICompileUnit::getDistinct(llvm::LLVMContext&, unsigned int, llvm::Metadata*, llvm::MDString*, bool, llvm::MDString*, unsigned int, llvm::MDString*, unsigned int, llvm::Metadata*, llvm::Metadata*, llvm::Metadata*, llvm::Metadata*, llvm::Metadata*, unsigned long, bool, bool, unsigned int, bool)':
LLParser.cpp:(.text._ZN4llvm13DICompileUnit11getDistinctERNS_11LLVMContextEjPNS_8MetadataEPNS_8MDStringEbS6_jS6_jS4_S4_S4_S4_S4_mbbjb[_ZN4llvm13DICompileUnit11getDistinctERNS_11LLVMContextEjPNS_8MetadataEPNS_8MDStringEbS6_jS6_jS4_S4_S4_S4_S4_mbbjb]+0x98): undefined reference to `llvm::DICompileUnit::getImpl(llvm::LLVMContext&, unsigned int, llvm::Metadata*, llvm::MDString*, bool, llvm::MDString*, unsigned int, llvm::MDString*, unsigned int, llvm::Metadata*, llvm::Metadata*, llvm::Metadata*, llvm::Metadata*, llvm::Metadata*, unsigned long, bool, bool, unsigned int, bool, llvm::Metadata::StorageType, bool)'
/usr/bin/ld: llvm/build/lib/libDummyLLVMAsmParser.a(LLParser.cpp.o): in function `llvm::DIModule::get(llvm::LLVMContext&, llvm::Metadata*, llvm::MDString*, llvm::MDString*, llvm::MDString*, llvm::MDString*)':
LLParser.cpp:(.text._ZN4llvm8DIModule3getERNS_11LLVMContextEPNS_8MetadataEPNS_8MDStringES6_S6_S6_[_ZN4llvm8DIModule3getERNS_11LLVMContextEPNS_8MetadataEPNS_8MDStringES6_S6_S6_]+0x4a): undefined reference to `llvm::DIModule::getImpl(llvm::LLVMContext&, llvm::Metadata*, llvm::MDString*, llvm::MDString*, llvm::MDString*, llvm::MDString*, llvm::Metadata::StorageType, bool)'
/usr/bin/ld: llvm/build/lib/libDummyLLVMAsmParser.a(LLParser.cpp.o): in function `llvm::DIModule::getDistinct(llvm::LLVMContext&, llvm::Metadata*, llvm::MDString*, llvm::MDString*, llvm::MDString*, llvm::MDString*)':
LLParser.cpp:(.text._ZN4llvm8DIModule11getDistinctERNS_11LLVMContextEPNS_8MetadataEPNS_8MDStringES6_S6_S6_[_ZN4llvm8DIModule11getDistinctERNS_11LLVMContextEPNS_8MetadataEPNS_8MDStringES6_S6_S6_]+0x4a): undefined reference to `llvm::DIModule::getImpl(llvm::LLVMContext&, llvm::Metadata*, llvm::MDString*, llvm::MDString*, llvm::MDString*, llvm::MDString*, llvm::Metadata::StorageType, bool)'
/usr/bin/ld: llvm/build/lib/libDummyLLVMAsmParser.a(LLParser.cpp.o): in function `llvm::DITemplateTypeParameter::get(llvm::LLVMContext&, llvm::MDString*, llvm::Metadata*)':
LLParser.cpp:(.text._ZN4llvm23DITemplateTypeParameter3getERNS_11LLVMContextEPNS_8MDStringEPNS_8MetadataE[_ZN4llvm23DITemplateTypeParameter3getERNS_11LLVMContextEPNS_8MDStringEPNS_8MetadataE]+0x33): undefined reference to `llvm::DITemplateTypeParameter::getImpl(llvm::LLVMContext&, llvm::MDString*, llvm::Metadata*, llvm::Metadata::StorageType, bool)'
/usr/bin/ld: llvm/build/lib/libDummyLLVMAsmParser.a(LLParser.cpp.o): in function `llvm::DITemplateTypeParameter::getDistinct(llvm::LLVMContext&, llvm::MDString*, llvm::Metadata*)':
LLParser.cpp:(.text._ZN4llvm23DITemplateTypeParameter11getDistinctERNS_11LLVMContextEPNS_8MDStringEPNS_8MetadataE[_ZN4llvm23DITemplateTypeParameter11getDistinctERNS_11LLVMContextEPNS_8MDStringEPNS_8MetadataE]+0x33): undefined reference to `llvm::DITemplateTypeParameter::getImpl(llvm::LLVMContext&, llvm::MDString*, llvm::Metadata*, llvm::Metadata::StorageType, bool)'
/usr/bin/ld: llvm/build/lib/libDummyLLVMAsmParser.a(LLParser.cpp.o): in function `llvm::DITemplateValueParameter::get(llvm::LLVMContext&, unsigned int, llvm::MDString*, llvm::Metadata*, llvm::Metadata*)':
LLParser.cpp:(.text._ZN4llvm24DITemplateValueParameter3getERNS_11LLVMContextEjPNS_8MDStringEPNS_8MetadataES6_[_ZN4llvm24DITemplateValueParameter3getERNS_11LLVMContextEjPNS_8MDStringEPNS_8MetadataES6_]+0x45): undefined reference to `llvm::DITemplateValueParameter::getImpl(llvm::LLVMContext&, unsigned int, llvm::MDString*, llvm::Metadata*, llvm::Metadata*, llvm::Metadata::StorageType, bool)'
/usr/bin/ld: llvm/build/lib/libDummyLLVMAsmParser.a(LLParser.cpp.o): in function `llvm::DITemplateValueParameter::getDistinct(llvm::LLVMContext&, unsigned int, llvm::MDString*, llvm::Metadata*, llvm::Metadata*)':
LLParser.cpp:(.text._ZN4llvm24DITemplateValueParameter11getDistinctERNS_11LLVMContextEjPNS_8MDStringEPNS_8MetadataES6_[_ZN4llvm24DITemplateValueParameter11getDistinctERNS_11LLVMContextEjPNS_8MDStringEPNS_8MetadataES6_]+0x45): undefined reference to `llvm::DITemplateValueParameter::getImpl(llvm::LLVMContext&, unsigned int, llvm::MDString*, llvm::Metadata*, llvm::Metadata*, llvm::Metadata::StorageType, bool)'
/usr/bin/ld: llvm/build/lib/libDummyLLVMAsmParser.a(LLParser.cpp.o): in function `llvm::DummyLLParser::ParseValID(llvm::ValID&, llvm::DummyLLParser::PerFunctionState*) [clone .localalias]':
LLParser.cpp:(.text._ZN4llvm13DummyLLParser10ParseValIDERNS_5ValIDEPNS0_16PerFunctionStateE+0x343e): undefined reference to `llvm::ConstantExpr::getShuffleVector(llvm::Constant*, llvm::Constant*, llvm::Constant*, llvm::Type*)'
/usr/bin/ld: llvm/build/lib/libDummyLLVMAsmParser.a(LLParser.cpp.o): in function `llvm::DummyLLParser::ParseDICompositeType(llvm::MDNode*&, bool)':
LLParser.cpp:(.text._ZN4llvm13DummyLLParser20ParseDICompositeTypeERPNS_6MDNodeEb+0x3f3): undefined reference to `llvm::DICompositeType::buildODRType(llvm::LLVMContext&, llvm::MDString&, unsigned int, llvm::MDString*, llvm::Metadata*, unsigned int, llvm::Metadata*, llvm::Metadata*, unsigned long, unsigned int, unsigned long, llvm::DINode::DIFlags, llvm::Metadata*, unsigned int, llvm::Metadata*, llvm::Metadata*, llvm::Metadata*)'
/usr/bin/ld: llvm/build/lib/libDummyLLVMAsmParser.a(LLParser.cpp.o): in function `llvm::DummyLLParser::ConvertValIDToValue(llvm::Type*, llvm::ValID&, llvm::Value*&, llvm::DummyLLParser::PerFunctionState*, bool)':
LLParser.cpp:(.text._ZN4llvm13DummyLLParser19ConvertValIDToValueEPNS_4TypeERNS_5ValIDERPNS_5ValueEPNS0_16PerFunctionStateEb+0x619): undefined reference to `llvm::APFloat::convert(llvm::fltSemantics const&, llvm::APFloatBase::roundingMode, bool*)'
/usr/bin/ld: LLParser.cpp:(.text._ZN4llvm13DummyLLParser19ConvertValIDToValueEPNS_4TypeERNS_5ValIDERPNS_5ValueEPNS0_16PerFunctionStateEb+0x658): undefined reference to `llvm::APFloat::convert(llvm::fltSemantics const&, llvm::APFloatBase::roundingMode, bool*)'
/usr/bin/ld: llvm/build/lib/libDummyLLVMAsmParser.a(LLParser.cpp.o): in function `llvm::DummyLLParser::ParseAlloc(llvm::Instruction*&, llvm::DummyLLParser::PerFunctionState&)':
LLParser.cpp:(.text._ZN4llvm13DummyLLParser10ParseAllocERPNS_11InstructionERNS0_16PerFunctionStateE+0x3e6): undefined reference to `llvm::AllocaInst::AllocaInst(llvm::Type*, unsigned int, llvm::Value*, llvm::MaybeAlign, llvm::Twine const&, llvm::Instruction*)'
/usr/bin/ld: llvm/build/lib/libDummyLLVMAsmParser.a(LLParser.cpp.o): in function `llvm::DummyLLParser::ParseLoad(llvm::Instruction*&, llvm::DummyLLParser::PerFunctionState&)':
LLParser.cpp:(.text._ZN4llvm13DummyLLParser9ParseLoadERPNS_11InstructionERNS0_16PerFunctionStateE+0x35b): undefined reference to `llvm::LoadInst::LoadInst(llvm::Type*, llvm::Value*, llvm::Twine const&, bool, llvm::MaybeAlign, llvm::AtomicOrdering, unsigned char, llvm::Instruction*)'
/usr/bin/ld: llvm/build/lib/libDummyLLVMAsmParser.a(LLParser.cpp.o): in function `llvm::DummyLLParser::ParseStore(llvm::Instruction*&, llvm::DummyLLParser::PerFunctionState&)':
LLParser.cpp:(.text._ZN4llvm13DummyLLParser10ParseStoreERPNS_11InstructionERNS0_16PerFunctionStateE+0x34a): undefined reference to `llvm::StoreInst::StoreInst(llvm::Value*, llvm::Value*, bool, llvm::MaybeAlign, llvm::AtomicOrdering, unsigned char, llvm::Instruction*)'
/usr/bin/ld: llvm/build/lib/libDummyLLVMAsmParser.a(LLParser.cpp.o): in function `llvm::DummyLLParser::ParseCmpXchg(llvm::Instruction*&, llvm::DummyLLParser::PerFunctionState&)':
LLParser.cpp:(.text._ZN4llvm13DummyLLParser12ParseCmpXchgERPNS_11InstructionERNS0_16PerFunctionStateE+0x413): undefined reference to `llvm::AtomicCmpXchgInst::AtomicCmpXchgInst(llvm::Value*, llvm::Value*, llvm::Value*, llvm::AtomicOrdering, llvm::AtomicOrdering, unsigned char, llvm::Instruction*)'
/usr/bin/ld: llvm/build/lib/libDummyLLVMAsmParser.a(LLParser.cpp.o): in function `llvm::DummyLLParser::ParseAtomicRMW(llvm::Instruction*&, llvm::DummyLLParser::PerFunctionState&)':
LLParser.cpp:(.text._ZN4llvm13DummyLLParser14ParseAtomicRMWERPNS_11InstructionERNS0_16PerFunctionStateE+0x65c): undefined reference to `llvm::AtomicRMWInst::AtomicRMWInst(llvm::AtomicRMWInst::BinOp, llvm::Value*, llvm::Value*, llvm::AtomicOrdering, unsigned char, llvm::Instruction*)'
/usr/bin/ld: llvm/build/lib/libDummyLLVMAsmParser.a(LLParser.cpp.o): in function `llvm::SmallVectorTemplateCommon<llvm::BasicBlock*, void>::grow_pod(unsigned long, unsigned long)':
LLParser.cpp:(.text._ZN4llvm25SmallVectorTemplateCommonIPNS_10BasicBlockEvE8grow_podEmm[_ZN4llvm25SmallVectorTemplateCommonIPNS_10BasicBlockEvE8grow_podEmm]+0x3e): undefined reference to `llvm::SmallVectorBase::grow_pod(void*, unsigned long, unsigned long)'
/usr/bin/ld: llvm/build/lib/libDummyLLVMAsmParser.a(LLParser.cpp.o): in function `llvm::SmallVectorTemplateCommon<unsigned long, void>::grow_pod(unsigned long, unsigned long)':
LLParser.cpp:(.text._ZN4llvm25SmallVectorTemplateCommonImvE8grow_podEmm[_ZN4llvm25SmallVectorTemplateCommonImvE8grow_podEmm]+0x3e): undefined reference to `llvm::SmallVectorBase::grow_pod(void*, unsigned long, unsigned long)'
/usr/bin/ld: llvm/build/lib/libDummyLLVMAsmParser.a(LLParser.cpp.o): in function `llvm::SmallVectorTemplateCommon<llvm::Instruction*, void>::grow_pod(unsigned long, unsigned long)':
LLParser.cpp:(.text._ZN4llvm25SmallVectorTemplateCommonIPNS_11InstructionEvE8grow_podEmm[_ZN4llvm25SmallVectorTemplateCommonIPNS_11InstructionEvE8grow_podEmm]+0x3e): undefined reference to `llvm::SmallVectorBase::grow_pod(void*, unsigned long, unsigned long)'
/usr/bin/ld: llvm/build/lib/libDummyLLVMAsmParser.a(LLParser.cpp.o): in function `llvm::SmallVectorTemplateCommon<unsigned int, void>::grow_pod(unsigned long, unsigned long)':
LLParser.cpp:(.text._ZN4llvm25SmallVectorTemplateCommonIjvE8grow_podEmm[_ZN4llvm25SmallVectorTemplateCommonIjvE8grow_podEmm]+0x3e): undefined reference to `llvm::SmallVectorBase::grow_pod(void*, unsigned long, unsigned long)'
/usr/bin/ld: llvm/build/lib/libDummyLLVMAsmParser.a(LLParser.cpp.o): in function `llvm::SmallVectorTemplateCommon<llvm::DummyLLParser::ParamInfo, void>::grow_pod(unsigned long, unsigned long)':
LLParser.cpp:(.text._ZN4llvm25SmallVectorTemplateCommonINS_13DummyLLParser9ParamInfoEvE8grow_podEmm[_ZN4llvm25SmallVectorTemplateCommonINS_13DummyLLParser9ParamInfoEvE8grow_podEmm]+0x3e): undefined reference to `llvm::SmallVectorBase::grow_pod(void*, unsigned long, unsigned long)'
/usr/bin/ld: llvm/build/lib/libDummyLLVMAsmParser.a(LLParser.cpp.o):LLParser.cpp:(.text._ZN4llvm25SmallVectorTemplateCommonIPNS_4TypeEvE8grow_podEmm[_ZN4llvm25SmallVectorTemplateCommonIPNS_4TypeEvE8grow_podEmm]+0x3e): more undefined references to `llvm::SmallVectorBase::grow_pod(void*, unsigned long, unsigned long)' follow
collect2: error: ld returned 1 exit status
File "caml_startup", line 1:
Error: Error during linking
make: *** [Makefile:8: all] Error 1
hyunsukimsokcho commented 2 years ago

I guess some package update may have misconfigured the llvm version. In this case, checking the version of llvm-dev may help. Can you share the output of opam list | grep llvm command?

jh05013 commented 2 years ago

I just updated llvm to 13, but the same error occurs.

conf-llvm       13.0.0      Virtual package relying on llvm library installation
llvm            13.0.0      The OCaml bindings distributed with LLVM
hyunsukimsokcho commented 2 years ago

One shall use llvm version 10 for the homework. Try opam install llvm.10.0.0 then build again.

jh05013 commented 2 years ago

It works now. Thanks!