<span style="border-collapse:collapse;font-family:arial, sans-serif;font-size:13px">Hello all,<div><br></div><div>I am a LLVM newer who want to add a new backend(EBC) into LLVM. After coping the related </div>
<div>files from another target and modifying it, I meet a problem when I build the project. The</div><div>error message is as follows:</div><div><br></div><div>================================================================</div>

<div><div>[ 94%] Built target llvm-dis</div></div><div>Linking CXX executable ../../bin/llvm-mc</div><div>Undefined symbols:</div><div>  "llvm::TargetRegisterInfo::getInitialFrameState(std::vector<llvm::MachineMove, std::allocator<llvm::MachineMove> >&) const", referenced from:</div>

<div>      vtable for llvm::EBCRegisterInfoin libLLVMEBCCodeGen.a(EBCRegisterInfo.cpp.o)</div><div>      vtable for llvm::EBCGenRegisterInfoin libLLVMEBCCodeGen.a(EBCRegisterInfo.cpp.o)</div><div>  "llvm::TargetMachine::getAsmVerbosityDefault()", referenced from:</div>

<div>      getVerboseAsm()     in libLLVMCodeGen.a(LLVMTargetMachine.cpp.o)</div><div>  "llvm::TargetData::getPrefTypeAlignment(llvm::Type const*) const", referenced from:</div><div>      llvm::SelectionDAG::getConstantPool(llvm::MachineConstantPoolValue*, llvm::EVT, unsigned int, int, bool, unsigned char)in libLLVMSelectionDAG.a(SelectionDAG.cpp.o)</div>

<div>      llvm::SelectionDAG::getConstantPool(llvm::Constant const*, llvm::EVT, unsigned int, int, bool, unsigned char)in libLLVMSelectionDAG.a(SelectionDAG.cpp.o)</div><div>      llvm::SelectionDAG::CreateStackTemporary(llvm::EVT, llvm::EVT)in libLLVMSelectionDAG.a(SelectionDAG.cpp.o)</div>

<div>      llvm::SelectionDAG::CreateStackTemporary(llvm::EVT, llvm::EVT)in libLLVMSelectionDAG.a(SelectionDAG.cpp.o)</div><div>      llvm::SelectionDAG::CreateStackTemporary(llvm::EVT, unsigned int)in libLLVMSelectionDAG.a(SelectionDAG.cpp.o)</div>

<div>      llvm::SelectionDAGBuilder::visitInlineAsm(llvm::ImmutableCallSite)     in libLLVMSelectionDAG.a(SelectionDAGBuilder.cpp.o)</div><div>      llvm::SelectionDAGBuilder::LowerCallTo(llvm::ImmutableCallSite, llvm::SDValue, bool, llvm::MachineBasicBlock*)in libLLVMSelectionDAG.a(SelectionDAGBuilder.cpp.o)</div>

<div>      llvm::SelectionDAGBuilder::visitAlloca(llvm::AllocaInst const&)in libLLVMSelectionDAG.a(SelectionDAGBuilder.cpp.o)</div><div>      (anonymous namespace)::DAGCombiner::SimplifySelectCC(llvm::DebugLoc, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::ISD::CondCode, bool)                                                               in libLLVMSelectionDAG.a(DAGCombiner.cpp.o)</div>

<div>      llvm::FunctionLoweringInfo::set(llvm::Function const&, llvm::MachineFunction&)in libLLVMSelectionDAG.a(FunctionLoweringInfo.cpp.o)</div><div>      llvm::ComputeMaskedBits(llvm::Value*, llvm::APInt const&, llvm::APInt&, llvm::APInt&, llvm::TargetData const*, unsigned int)in libLLVMAnalysis.a(ValueTracking.cpp.o)</div>

<div>      (anonymous namespace)::SelectionDAGLegalize::EmitStackConvert(llvm::SDValue, llvm::EVT, llvm::EVT, llvm::DebugLoc)                                                                                                 in libLLVMSelectionDAG.a(LegalizeDAG.cpp.o)</div>

<div>      (anonymous namespace)::SelectionDAGLegalize::EmitStackConvert(llvm::SDValue, llvm::EVT, llvm::EVT, llvm::DebugLoc)                                                                                                 in libLLVMSelectionDAG.a(LegalizeDAG.cpp.o)</div>

<div>      llvm::isSafeToLoadUnconditionally(llvm::Value*, llvm::Instruction*, unsigned int, llvm::TargetData const*)in libLLVMAnalysis.a(Loads.cpp.o)</div><div>      llvm::DAGTypeLegalizer::SplitVecRes_INSERT_VECTOR_ELT(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)in libLLVMSelectionDAG.a(LegalizeVectorTypes.cpp.o)</div>

<div>      llvm::InstrEmitter::AddOperand(llvm::MachineInstr*, llvm::SDValue, unsigned int, llvm::TargetInstrDesc const*, llvm::DenseMap<llvm::SDValue, unsigned int, llvm::DenseMapInfo<llvm::SDValue>, llvm::DenseMapInfo<unsigned int> >&, bool, bool, bool)in libLLVMSelectionDAG.a(InstrEmitter.cpp.o)</div>

<div>      llvm::DAGTypeLegalizer::ExpandRes_BIT_CONVERT(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)in libLLVMSelectionDAG.a(LegalizeTypesGeneric.cpp.o)</div><div>  "llvm::TargetSubtarget::enablePostRAScheduler(llvm::CodeGenOpt::Level, llvm::TargetSubtarget::AntiDepBreakMode&, llvm::SmallVectorImpl<llvm::TargetRegisterClass*>&) const", referenced from:</div>

<div>      vtable for llvm::EBCSubtargetin libLLVMEBCCodeGen.a(EBCTargetMachine.cpp.o)</div><div>      vtable for llvm::EBCSubtargetin libLLVMEBCCodeGen.a(EBCSubtarget.cpp.o)</div><div>  "llvm::DisableFramePointerElim(llvm::MachineFunction const&)", referenced from:</div>

<div>      llvm::DwarfDebug::endFunction(llvm::MachineFunction const*)in libLLVMAsmPrinter.a(DwarfDebug.cpp.o)</div><div>  "typeinfo for llvm::TargetLoweringObjectFile", referenced from:</div><div>      typeinfo for llvm::TargetLoweringObjectFileELFin libLLVMCodeGen.a(TargetLoweringObjectFileImpl.cpp.o)</div>

<div>      typeinfo for llvm::TargetLoweringObjectFileMachOin libLLVMCodeGen.a(TargetLoweringObjectFileImpl.cpp.o)</div><div>      typeinfo for llvm::TargetLoweringObjectFileCOFFin libLLVMCodeGen.a(TargetLoweringObjectFileImpl.cpp.o)</div>

<div>  "llvm::GuaranteedTailCallOpt", referenced from:</div><div>      __ZN4llvm21GuaranteedTailCallOptE$non_lazy_ptr in libLLVMCodeGen.a(Analysis.cpp.o)</div><div>  "llvm::TargetLoweringObjectFile::SectionForGlobal(llvm::GlobalValue const*, llvm::SectionKind, llvm::Mangler*, llvm::TargetMachine const&) const", referenced from:</div>

<div>      llvm::AsmPrinter::EmitGlobalVariable(llvm::GlobalVariable const*)in libLLVMAsmPrinter.a(AsmPrinter.cpp.o)</div><div>      llvm::AsmPrinter::EmitGlobalVariable(llvm::GlobalVariable const*)in libLLVMAsmPrinter.a(AsmPrinter.cpp.o)</div>

<div>      llvm::TargetLoweringObjectFile::SectionForGlobal(llvm::GlobalValue const*, llvm::Mangler*, llvm::TargetMachine const&) constin libLLVMAsmPrinter.a(AsmPrinter.cpp.o)</div><div>  "llvm::TargetLoweringObjectFile::TargetLoweringObjectFile()", referenced from:</div>

<div>      llvm::TargetLoweringObjectFileCOFF::TargetLoweringObjectFileCOFF()in libLLVMEBCCodeGen.a(EBCISelLowering.cpp.o)</div><div>  "llvm::TargetLoweringObjectFile::~TargetLoweringObjectFile()", referenced from:</div>

<div>      llvm::TargetLoweringObjectFileELF::~TargetLoweringObjectFileELF()in libLLVMCodeGen.a(TargetLoweringObjectFileImpl.cpp.o)</div><div>      llvm::TargetLoweringObjectFileELF::~TargetLoweringObjectFileELF()in libLLVMCodeGen.a(TargetLoweringObjectFileImpl.cpp.o)</div>

<div>      llvm::TargetLoweringObjectFileMachO::~TargetLoweringObjectFileMachO()in libLLVMCodeGen.a(TargetLoweringObjectFileImpl.cpp.o)</div><div>      llvm::TargetLoweringObjectFileMachO::~TargetLoweringObjectFileMachO()in libLLVMCodeGen.a(TargetLoweringObjectFileImpl.cpp.o)</div>

<div>      llvm::TargetLoweringObjectFileCOFF::~TargetLoweringObjectFileCOFF()in libLLVMCodeGen.a(TargetLoweringObjectFileImpl.cpp.o)</div><div>      llvm::TargetLoweringObjectFileCOFF::~TargetLoweringObjectFileCOFF()in libLLVMCodeGen.a(TargetLoweringObjectFileImpl.cpp.o)</div>

<div>  "llvm::TargetData::getTypeSizeInBits(llvm::Type const*) const", referenced from:</div><div>      llvm::TargetData::getTypeStoreSize(llvm::Type const*) constin libLLVMAsmPrinter.a(AsmPrinter.cpp.o)</div><div>

      llvm::TargetData::getTypeStoreSize(llvm::Type const*) constin libLLVMSelectionDAG.a(TargetLowering.cpp.o)</div><div>      llvm::TargetData::getTypeStoreSize(llvm::Type const*) constin libLLVMCodeGen.a(MachineFunction.cpp.o)</div>

<div>      llvm::TargetData::getTypeStoreSize(llvm::Type const*) constin libLLVMSelectionDAG.a(SelectionDAGBuilder.cpp.o)</div><div>      llvm::SDISelAsmOperandInfo::getCallOperandValEVT(llvm::LLVMContext&, llvm::TargetLowering const&, llvm::TargetData const*) constin libLLVMSelectionDAG.a(SelectionDAGBuilder.cpp.o)</div>

<div>      CanCoerceMustAliasedValueToLoad(llvm::Value*, llvm::Type const*, llvm::TargetData const&)in libLLVMScalarOpts.a(GVN.cpp.o)</div><div>      CanCoerceMustAliasedValueToLoad(llvm::Value*, llvm::Type const*, llvm::TargetData const&)in libLLVMScalarOpts.a(GVN.cpp.o)</div>

<div>      CoerceAvailableValueToLoadType(llvm::Value*, llvm::Type const*, llvm::Instruction*, llvm::TargetData const&)in libLLVMScalarOpts.a(GVN.cpp.o)</div><div>      GetStoreValueForLoad(llvm::Value*, unsigned int, llvm::Type const*, llvm::Instruction*, llvm::TargetData const&)in libLLVMScalarOpts.a(GVN.cpp.o)</div>

<div>      GetStoreValueForLoad(llvm::Value*, unsigned int, llvm::Type const*, llvm::Instruction*, llvm::TargetData const&)in libLLVMScalarOpts.a(GVN.cpp.o)</div><div>      GetMemInstValueForLoad(llvm::MemIntrinsic*, unsigned int, llvm::Type const*, llvm::Instruction*, llvm::TargetData const&)in libLLVMScalarOpts.a(GVN.cpp.o)</div>

<div>      AnalyzeLoadFromClobberingWrite(llvm::Type const*, llvm::Value*, llvm::Value*, unsigned long long, llvm::TargetData const&)in libLLVMScalarOpts.a(GVN.cpp.o)</div><div>      AnalyzeLoadFromClobberingStore(llvm::Type const*, llvm::Value*, llvm::StoreInst*, llvm::TargetData const&)in libLLVMScalarOpts.a(GVN.cpp.o)</div>

<div>      llvm::TargetData::getTypeStoreSize(llvm::Type const*) constin libLLVMScalarOpts.a(GVN.cpp.o)</div><div>      llvm::TargetData::getTypeStoreSize(llvm::Type const*) constin libLLVMAnalysis.a(BasicAliasAnalysis.cpp.o)</div>

<div>      SymbolicallyEvaluateGEP(llvm::Constant* const*, unsigned int, llvm::Type const*, llvm::TargetData const*)in libLLVMAnalysis.a(ConstantFolding.cpp.o)</div><div>      llvm::TargetData::getTypeStoreSize(llvm::Type const*) constin libLLVMAnalysis.a(ConstantFolding.cpp.o)</div>

<div>      llvm::TargetData::getTypeStoreSize(llvm::Type const*) constin libLLVMSelectionDAG.a(DAGCombiner.cpp.o)</div><div>      llvm::TargetData::getTypeStoreSize(llvm::Type const*) constin libLLVMAnalysis.a(AliasAnalysis.cpp.o)</div>

<div>      llvm::TargetData::getTypeStoreSize(llvm::Type const*) constin libLLVMCodeGen.a(Analysis.cpp.o)</div><div>      llvm::TargetData::getTypeStoreSize(llvm::Type const*) constin libLLVMCodeGen.a(StackProtector.cpp.o)</div>

<div>      llvm::ScalarEvolution::getTypeSizeInBits(llvm::Type const*) constin libLLVMAnalysis.a(ScalarEvolution.cpp.o)</div><div>      llvm::TargetData::getTypeStoreSize(llvm::Type const*) constin libLLVMAnalysis.a(ScalarEvolution.cpp.o)</div>

<div>      llvm::TargetData::getTypeStoreSize(llvm::Type const*) constin libLLVMSelectionDAG.a(FastISel.cpp.o)</div><div>      llvm::TargetData::getTypeStoreSize(llvm::Type const*) constin libLLVMAnalysis.a(MemoryBuiltins.cpp.o)</div>

<div>      llvm::TargetData::getTypeStoreSize(llvm::Type const*) constin libLLVMSelectionDAG.a(FunctionLoweringInfo.cpp.o)</div><div>      llvm::TargetData::getTypeStoreSize(llvm::Type const*) constin libLLVMTransformUtils.a(AddrModeMatcher.cpp.o)</div>

<div>      llvm::ComputeMaskedBits(llvm::Value*, llvm::APInt const&, llvm::APInt&, llvm::APInt&, llvm::TargetData const*, unsigned int)in libLLVMAnalysis.a(ValueTracking.cpp.o)</div><div>      llvm::ComputeMaskedBits(llvm::Value*, llvm::APInt const&, llvm::APInt&, llvm::APInt&, llvm::TargetData const*, unsigned int)in libLLVMAnalysis.a(ValueTracking.cpp.o)</div>

<div>      llvm::ComputeNumSignBits(llvm::Value*, llvm::TargetData const*, unsigned int)in libLLVMAnalysis.a(ValueTracking.cpp.o)</div><div>      llvm::TargetData::getTypeStoreSize(llvm::Type const*) constin libLLVMAnalysis.a(ValueTracking.cpp.o)</div>

<div>      llvm::TargetData::getTypeStoreSize(llvm::Type const*) constin libLLVMSelectionDAG.a(LegalizeDAG.cpp.o)</div><div>      llvm::TargetData::getTypeStoreSize(llvm::Type const*) constin libLLVMAnalysis.a(Loads.cpp.o)</div>

<div>      llvm::TargetData::getTypeStoreSize(llvm::Type const*) constin libLLVMSelectionDAG.a(InstrEmitter.cpp.o)</div><div><br></div><div>.</div><div>.</div><div>.</div><div><br></div><div>ld: symbol(s) not found</div>
<div>
collect2: ld returned 1 exit status</div><div>make[2]: *** [bin/llvm-mc] Error 1</div><div>make[1]: *** [tools/llvm-mc/CMakeFiles/llvm-mc.dir/all] Error 2</div><div>make: *** [all] Error 2</div><div><br></div><div>================================================================</div>

<div><br></div><div>I just modify files in lib/Target/EBC/ and Triple.h/Triple.cpp. However there is some error</div><div>message about building LLVM core. Would someone mind to tell me how could I solve this</div><div>problem??</div>

<div><br></div><div>Thanks a lot</div><div><br></div><div>Yi-Hong</div></span>