ldc-developers / ldc

The LLVM-based D Compiler.
http://wiki.dlang.org/LDC
Other
1.2k stars 260 forks source link

Building LDC fails with link errors #2788

Closed PetarKirov closed 6 years ago

PetarKirov commented 6 years ago

I was eager to try the support for WebAssembly (great work guys!) and I decided to build ldc myself (since I expect to do some hacking on druntime / phobos), however I ran into link errors.

Here's my script to build ldc:

#!/usr/bin/bash

if [[ -v USE_LLVM_WITH_ASSERTS && $USE_LLVM_WITH_ASSERTS -eq 1 ]]
then
    LLVM=llvm-6.0.1-2-linux-x86_64-withAsserts
else
    LLVM=llvm-6.0.1-2-linux-x86_64
fi

set -euxo pipefail

wget https://github.com/ldc-developers/llvm/releases/download/ldc-v6.0.1-2/$LLVM.tar.xz
tar xvf $LLVM.tar.xz
git clone --recursive https://github.com/ldc-developers/ldc
mkdir ldc/build && cd ldc/build
cmake -G Ninja -DLLVM_CONFIG=../../$LLVM/bin/llvm-config ..
ninja

Here's the build output from ninja:

[100/231] Linking CXX executable bin/not
FAILED: bin/not 
: && /usr/bin/c++  -DDMDV2 -DHAVE_SC_ARG_MAX -DLLVM_INTRINSIC_TD_PATH="/home/zlx/code/repos/llvm-6.0.1-2-linux-x86_64-withAsserts/include"  -rdynamic utils/CMakeFiles/not.dir/not.cpp.o  -o bin/not  -lLLVMWindowsManifest -lLLVMLTO -lLLVMPasses -lLLVMObjCARCOpts -lLLVMLibDriver -lLLVMOption -lLLVMDebugInfoPDB -lLLVMDebugInfoDWARF -lLLVMWebAssemblyDisassembler -lLLVMWebAssemblyCodeGen -lLLVMWebAssemblyDesc -lLLVMWebAssemblyInfo -lLLVMWebAssemblyAsmPrinter -lLLVMRISCVDisassembler -lLLVMRISCVCodeGen -lLLVMRISCVAsmParser -lLLVMRISCVDesc -lLLVMRISCVInfo -lLLVMRISCVAsmPrinter -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMPowerPCDisassembler -lLLVMPowerPCCodeGen -lLLVMPowerPCAsmParser -lLLVMPowerPCDesc -lLLVMPowerPCInfo -lLLVMPowerPCAsmPrinter -lLLVMNVPTXCodeGen -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMNVPTXDesc -lLLVMNVPTXInfo -lLLVMNVPTXAsmPrinter -lLLVMMSP430CodeGen -lLLVMMSP430Desc -lLLVMMSP430Info -lLLVMMSP430AsmPrinter -lLLVMMipsDisassembler -lLLVMMipsCodeGen -lLLVMMipsAsmParser -lLLVMMipsDesc -lLLVMMipsInfo -lLLVMMipsAsmPrinter -lLLVMARMDisassembler -lLLVMARMCodeGen -lLLVMARMAsmParser -lLLVMARMDesc -lLLVMARMInfo -lLLVMARMAsmPrinter -lLLVMARMUtils -lLLVMAArch64Disassembler -lLLVMMCDisassembler -lLLVMAArch64CodeGen -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMAArch64AsmParser -lLLVMMCParser -lLLVMAArch64Desc -lLLVMAArch64Info -lLLVMAArch64AsmPrinter -lLLVMMC -lLLVMAArch64Utils -lLLVMSupport -lLLVMDemangle -ltinfo -ldl -L/home/zlx/code/repos/llvm-6.0.1-2-linux-x86_64-withAsserts/lib -lrt -ldl -lpthread -lm && :
utils/CMakeFiles/not.dir/not.cpp.o: In function `main':
not.cpp:(.text.startup.main+0x97): undefined reference to `llvm::sys::findProgramByName[abi:cxx11](llvm::StringRef, llvm::ArrayRef<llvm::StringRef>)'
not.cpp:(.text.startup.main+0xde): undefined reference to `llvm::sys::ExecuteAndWait(llvm::StringRef, char const**, char const**, llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*)'
collect2: error: ld returned 1 exit status
[102/231] Generating bin/ldmd2
FAILED: bin/ldmd2 
cd /home/zlx/code/repos/ldc/build && /usr/bin/c++ -o /home/zlx/code/repos/ldc/build/bin/ldmd2 /home/zlx/code/repos/ldc/build/bin/ldmd2.o /home/zlx/code/repos/ldc/build/lib/libldmd.a -llldDriver -llldMinGW -llldCOFF -llldELF -llldMachO -llldWasm -llldYAML -llldReaderWriter -llldCommon -llldCore -lLLVMWindowsManifest -lLLVMLTO -lLLVMPasses -lLLVMObjCARCOpts -lLLVMLibDriver -lLLVMOption -lLLVMDebugInfoPDB -lLLVMDebugInfoDWARF -lLLVMWebAssemblyDisassembler -lLLVMWebAssemblyCodeGen -lLLVMWebAssemblyDesc -lLLVMWebAssemblyInfo -lLLVMWebAssemblyAsmPrinter -lLLVMRISCVDisassembler -lLLVMRISCVCodeGen -lLLVMRISCVAsmParser -lLLVMRISCVDesc -lLLVMRISCVInfo -lLLVMRISCVAsmPrinter -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMPowerPCDisassembler -lLLVMPowerPCCodeGen -lLLVMPowerPCAsmParser -lLLVMPowerPCDesc -lLLVMPowerPCInfo -lLLVMPowerPCAsmPrinter -lLLVMNVPTXCodeGen -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMNVPTXDesc -lLLVMNVPTXInfo -lLLVMNVPTXAsmPrinter -lLLVMMSP430CodeGen -lLLVMMSP430Desc -lLLVMMSP430Info -lLLVMMSP430AsmPrinter -lLLVMMipsDisassembler -lLLVMMipsCodeGen -lLLVMMipsAsmParser -lLLVMMipsDesc -lLLVMMipsInfo -lLLVMMipsAsmPrinter -lLLVMARMDisassembler -lLLVMARMCodeGen -lLLVMARMAsmParser -lLLVMARMDesc -lLLVMARMInfo -lLLVMARMAsmPrinter -lLLVMARMUtils -lLLVMAArch64Disassembler -lLLVMMCDisassembler -lLLVMAArch64CodeGen -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMAArch64AsmParser -lLLVMMCParser -lLLVMAArch64Desc -lLLVMAArch64Info -lLLVMAArch64AsmPrinter -lLLVMMC -lLLVMAArch64Utils -lLLVMSupport -lLLVMDemangle -L/home/zlx/code/repos/llvm-6.0.1-2-linux-x86_64-withAsserts/lib -lrt -ldl -lpthread -lm -Wl,--export-dynamic -m64 -L/home/zlx/dlang/dmd-2.081.1/linux/bin64/../lib64 -Xlinker --export-dynamic -Xlinker -Bstatic -lphobos2 -Xlinker -Bdynamic -lpthread -lm -lrt -ldl
/home/zlx/code/repos/ldc/build/lib/libldmd.a(exe_path.cpp.o): In function `exe_path::initialize(char const*)':
exe_path.cpp:(.text._ZN8exe_path10initializeEPKc+0x36): undefined reference to `llvm::sys::fs::getMainExecutable[abi:cxx11](char const*, void*)'
/home/zlx/code/repos/ldc/build/lib/libldmd.a(ldmd.cpp.o): In function `execute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const**)':
ldmd.cpp:(.text._Z7executeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPPKc+0x4e): undefined reference to `llvm::sys::ExecuteAndWait(llvm::StringRef, char const**, char const**, llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*)'
/home/zlx/code/repos/ldc/build/lib/libldmd.a(ldmd.cpp.o): In function `locateBinary(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
ldmd.cpp:(.text._Z12locateBinaryNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0xfb): undefined reference to `llvm::sys::findProgramByName[abi:cxx11](llvm::StringRef, llvm::ArrayRef<llvm::StringRef>)'
collect2: error: ld returned 1 exit status
[109/231] Generating bin/ldc-build-runtime.o
ninja: build stopped: subcommand failed

(The build fails in the same way no matter if I use the llvm built with asserts or not.)

If I then do ninja clean && ninja ldc2 from the build dir I get this:

ninja ldc2
[9/99] Building CXX object CMakeFiles/LDCShared.dir/gen/abi-x86-64.cpp.o
../gen/abi-x86-64.cpp: In member function ‘{anonymous}::RegCount& X86_64TargetABI::getRegCount(IrFuncTy&)’:
../gen/abi-x86-64.cpp:244:45: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
     return reinterpret_cast<RegCount &>(fty.tag);
                                         ~~~~^~~
[99/99] Generating bin/ldc2
FAILED: bin/ldc2 
cd /home/zlx/code/repos/ldc/build && /usr/bin/c++ -o /home/zlx/code/repos/ldc/build/bin/ldc2 /home/zlx/code/repos/ldc/build/bin/ldc2.o /home/zlx/code/repos/ldc/build/lib/libldc.a -llldDriver -llldMinGW -llldCOFF -llldELF -llldMachO -llldWasm -llldYAML -llldReaderWriter -llldCommon -llldCore -lLLVMWindowsManifest -lLLVMLTO -lLLVMPasses -lLLVMObjCARCOpts -lLLVMLibDriver -lLLVMOption -lLLVMDebugInfoPDB -lLLVMDebugInfoDWARF -lLLVMWebAssemblyDisassembler -lLLVMWebAssemblyCodeGen -lLLVMWebAssemblyDesc -lLLVMWebAssemblyInfo -lLLVMWebAssemblyAsmPrinter -lLLVMRISCVDisassembler -lLLVMRISCVCodeGen -lLLVMRISCVAsmParser -lLLVMRISCVDesc -lLLVMRISCVInfo -lLLVMRISCVAsmPrinter -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMPowerPCDisassembler -lLLVMPowerPCCodeGen -lLLVMPowerPCAsmParser -lLLVMPowerPCDesc -lLLVMPowerPCInfo -lLLVMPowerPCAsmPrinter -lLLVMNVPTXCodeGen -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMNVPTXDesc -lLLVMNVPTXInfo -lLLVMNVPTXAsmPrinter -lLLVMMSP430CodeGen -lLLVMMSP430Desc -lLLVMMSP430Info -lLLVMMSP430AsmPrinter -lLLVMMipsDisassembler -lLLVMMipsCodeGen -lLLVMMipsAsmParser -lLLVMMipsDesc -lLLVMMipsInfo -lLLVMMipsAsmPrinter -lLLVMARMDisassembler -lLLVMARMCodeGen -lLLVMARMAsmParser -lLLVMARMDesc -lLLVMARMInfo -lLLVMARMAsmPrinter -lLLVMARMUtils -lLLVMAArch64Disassembler -lLLVMMCDisassembler -lLLVMAArch64CodeGen -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMAArch64AsmParser -lLLVMMCParser -lLLVMAArch64Desc -lLLVMAArch64Info -lLLVMAArch64AsmPrinter -lLLVMMC -lLLVMAArch64Utils -lLLVMSupport -lLLVMDemangle -L/home/zlx/code/repos/llvm-6.0.1-2-linux-x86_64-withAsserts/lib -lrt -ldl -lpthread -lm -Wl,--export-dynamic -m64 -L/home/zlx/dlang/dmd-2.081.1/linux/bin64/../lib64 -Xlinker --export-dynamic -Xlinker -Bstatic -lphobos2 -Xlinker -Bdynamic -lpthread -lm -lrt -ldl
/home/zlx/code/repos/ldc/build/lib/libldc.a(dibuilder.cpp.o): In function `ldc::DIBuilder::CreateTypeDescription(Type*)':
dibuilder.cpp:(.text._ZN3ldc9DIBuilder21CreateTypeDescriptionEP4Type+0x2b5): undefined reference to `llvm::Twine::str[abi:cxx11]() const'
/home/zlx/code/repos/ldc/build/lib/libldc.a(GarbageCollect2Stack.cpp.o):(.data.rel.ro._ZTVN12_GLOBAL__N_120GarbageCollect2StackE+0x40): undefined reference to `llvm::FunctionPass::createPrinterPass(llvm::raw_ostream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const'
/home/zlx/code/repos/ldc/build/lib/libldc.a(modules.cpp.o): In function `(anonymous namespace)::ForcePassLinking::ForcePassLinking() [clone .isra.338]':
modules.cpp:(.text.startup._ZN12_GLOBAL__N_116ForcePassLinkingC2Ev.isra.338+0x41a): undefined reference to `llvm::createPrintModulePass(llvm::raw_ostream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)'
modules.cpp:(.text.startup._ZN12_GLOBAL__N_116ForcePassLinkingC2Ev.isra.338+0x44c): undefined reference to `llvm::createPrintFunctionPass(llvm::raw_ostream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
modules.cpp:(.text.startup._ZN12_GLOBAL__N_116ForcePassLinkingC2Ev.isra.338+0x47c): undefined reference to `llvm::createPrintBasicBlockPass(llvm::raw_ostream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/home/zlx/code/repos/ldc/build/lib/libldc.a(optimizer.cpp.o): In function `__static_initialization_and_destruction_0(int, int) [clone .constprop.151]':
optimizer.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.151+0x1f55): undefined reference to `llvm::createPrintModulePass(llvm::raw_ostream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)'
optimizer.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.151+0x1f81): undefined reference to `llvm::createPrintFunctionPass(llvm::raw_ostream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
optimizer.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.151+0x1faa): undefined reference to `llvm::createPrintBasicBlockPass(llvm::raw_ostream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/home/zlx/code/repos/ldc/build/lib/libldc.a(SimplifyDRuntimeCalls.cpp.o):(.data.rel.ro._ZTVN12_GLOBAL__N_121SimplifyDRuntimeCallsE+0x40): undefined reference to `llvm::FunctionPass::createPrinterPass(llvm::raw_ostream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const'
/home/zlx/code/repos/ldc/build/lib/libldc.a(StripExternals.cpp.o):(.data.rel.ro._ZTVN12_GLOBAL__N_114StripExternalsE+0x40): undefined reference to `llvm::ModulePass::createPrinterPass(llvm::raw_ostream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const'
/home/zlx/code/repos/ldc/build/lib/libldc.a(pgo_ASTbased.cpp.o): In function `CodeGenPGO::setFuncName(llvm::StringRef, llvm::GlobalValue::LinkageTypes)':
pgo_ASTbased.cpp:(.text._ZN10CodeGenPGO11setFuncNameEN4llvm9StringRefENS0_11GlobalValue12LinkageTypesE+0x71): undefined reference to `llvm::getPGOFuncName[abi:cxx11](llvm::StringRef, llvm::GlobalValue::LinkageTypes, llvm::StringRef, unsigned long)'
/home/zlx/code/repos/ldc/build/lib/libldc.a(cl_options.cpp.o): In function `llvm::cl::opt<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::~opt()':
cl_options.cpp:(.text._ZN4llvm2cl3optINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ENS0_6parserIS7_EEED2Ev[_ZN4llvm2cl3optINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ENS0_6parserIS7_EEED5Ev]+0x3): undefined reference to `vtable for llvm::cl::opt<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >'
/home/zlx/code/repos/ldc/build/lib/libldc.a(cl_options.cpp.o): In function `llvm::cl::opt<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::opt<char [3], llvm::cl::value_desc, llvm::cl::FormattingFlags, llvm::cl::desc, llvm::cl::NumOccurrencesFlag>(char const (&) [3], llvm::cl::value_desc const&, llvm::cl::FormattingFlags const&, llvm::cl::desc const&, llvm::cl::NumOccurrencesFlag const&)':
cl_options.cpp:(.text._ZN4llvm2cl3optINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ENS0_6parserIS7_EEEC2IJA3_cNS0_10value_descENS0_15FormattingFlagsENS0_4descENS0_18NumOccurrencesFlagEEEEDpRKT_[_ZN4llvm2cl3optINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ENS0_6parserIS7_EEEC5IJA3_cNS0_10value_descENS0_15FormattingFlagsENS0_4descENS0_18NumOccurrencesFlagEEEEDpRKT_]+0xe4): undefined reference to `vtable for llvm::cl::OptionValue<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
cl_options.cpp:(.text._ZN4llvm2cl3optINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ENS0_6parserIS7_EEEC2IJA3_cNS0_10value_descENS0_15FormattingFlagsENS0_4descENS0_18NumOccurrencesFlagEEEEDpRKT_[_ZN4llvm2cl3optINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ENS0_6parserIS7_EEEC5IJA3_cNS0_10value_descENS0_15FormattingFlagsENS0_4descENS0_18NumOccurrencesFlagEEEEDpRKT_]+0xf6): undefined reference to `vtable for llvm::cl::opt<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >'
cl_options.cpp:(.text._ZN4llvm2cl3optINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ENS0_6parserIS7_EEEC2IJA3_cNS0_10value_descENS0_15FormattingFlagsENS0_4descENS0_18NumOccurrencesFlagEEEEDpRKT_[_ZN4llvm2cl3optINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ENS0_6parserIS7_EEEC5IJA3_cNS0_10value_descENS0_15FormattingFlagsENS0_4descENS0_18NumOccurrencesFlagEEEEDpRKT_]+0x104): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
/home/zlx/code/repos/ldc/build/lib/libldc.a(cl_options.cpp.o): In function `llvm::cl::opt<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::opt<char [3], llvm::cl::desc, llvm::cl::value_desc, llvm::cl::FormattingFlags, llvm::cl::NumOccurrencesFlag>(char const (&) [3], llvm::cl::desc const&, llvm::cl::value_desc const&, llvm::cl::FormattingFlags const&, llvm::cl::NumOccurrencesFlag const&)':
cl_options.cpp:(.text._ZN4llvm2cl3optINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ENS0_6parserIS7_EEEC2IJA3_cNS0_4descENS0_10value_descENS0_15FormattingFlagsENS0_18NumOccurrencesFlagEEEEDpRKT_[_ZN4llvm2cl3optINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ENS0_6parserIS7_EEEC5IJA3_cNS0_4descENS0_10value_descENS0_15FormattingFlagsENS0_18NumOccurrencesFlagEEEEDpRKT_]+0xe4): undefined reference to `vtable for llvm::cl::OptionValue<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
cl_options.cpp:(.text._ZN4llvm2cl3optINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ENS0_6parserIS7_EEEC2IJA3_cNS0_4descENS0_10value_descENS0_15FormattingFlagsENS0_18NumOccurrencesFlagEEEEDpRKT_[_ZN4llvm2cl3optINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ENS0_6parserIS7_EEEC5IJA3_cNS0_4descENS0_10value_descENS0_15FormattingFlagsENS0_18NumOccurrencesFlagEEEEDpRKT_]+0xf6): undefined reference to `vtable for llvm::cl::opt<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >'
cl_options.cpp:(.text._ZN4llvm2cl3optINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ENS0_6parserIS7_EEEC2IJA3_cNS0_4descENS0_10value_descENS0_15FormattingFlagsENS0_18NumOccurrencesFlagEEEEDpRKT_[_ZN4llvm2cl3optINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ENS0_6parserIS7_EEEC5IJA3_cNS0_4descENS0_10value_descENS0_15FormattingFlagsENS0_18NumOccurrencesFlagEEEEDpRKT_]+0x104): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
/home/zlx/code/repos/ldc/build/lib/libldc.a(cl_options.cpp.o): In function `llvm::cl::opt<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::opt<char [3], llvm::cl::NumOccurrencesFlag, llvm::cl::FormattingFlags, llvm::cl::desc, llvm::cl::value_desc>(char const (&) [3], llvm::cl::NumOccurrencesFlag const&, llvm::cl::FormattingFlags const&, llvm::cl::desc const&, llvm::cl::value_desc const&)':
cl_options.cpp:(.text._ZN4llvm2cl3optINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ENS0_6parserIS7_EEEC2IJA3_cNS0_18NumOccurrencesFlagENS0_15FormattingFlagsENS0_4descENS0_10value_descEEEEDpRKT_[_ZN4llvm2cl3optINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ENS0_6parserIS7_EEEC5IJA3_cNS0_18NumOccurrencesFlagENS0_15FormattingFlagsENS0_4descENS0_10value_descEEEEDpRKT_]+0xe4): undefined reference to `vtable for llvm::cl::OptionValue<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
cl_options.cpp:(.text._ZN4llvm2cl3optINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ENS0_6parserIS7_EEEC2IJA3_cNS0_18NumOccurrencesFlagENS0_15FormattingFlagsENS0_4descENS0_10value_descEEEEDpRKT_[_ZN4llvm2cl3optINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ENS0_6parserIS7_EEEC5IJA3_cNS0_18NumOccurrencesFlagENS0_15FormattingFlagsENS0_4descENS0_10value_descEEEEDpRKT_]+0xf6): undefined reference to `vtable for llvm::cl::opt<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >'
cl_options.cpp:(.text._ZN4llvm2cl3optINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ENS0_6parserIS7_EEEC2IJA3_cNS0_18NumOccurrencesFlagENS0_15FormattingFlagsENS0_4descENS0_10value_descEEEEDpRKT_[_ZN4llvm2cl3optINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ENS0_6parserIS7_EEEC5IJA3_cNS0_18NumOccurrencesFlagENS0_15FormattingFlagsENS0_4descENS0_10value_descEEEEDpRKT_]+0x104): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
/home/zlx/code/repos/ldc/build/lib/libldc.a(cl_options.cpp.o): In function `__static_initialization_and_destruction_0(int, int) [clone .constprop.355]':
cl_options.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.355+0xfd): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
cl_options.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.355+0x1278): undefined reference to `vtable for llvm::cl::OptionValue<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
cl_options.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.355+0x154a): undefined reference to `vtable for llvm::cl::opt<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >'
cl_options.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.355+0x1576): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
cl_options.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.355+0x1c0d): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
cl_options.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.355+0x2048): undefined reference to `vtable for llvm::cl::opt<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >'
cl_options.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.355+0x2073): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
cl_options.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.355+0x23e8): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
cl_options.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.355+0x2583): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
cl_options.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.355+0x2ad5): undefined reference to `vtable for llvm::cl::opt<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >'
cl_options.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.355+0x2ec1): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
cl_options.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.355+0x305b): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
cl_options.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.355+0x446e): undefined reference to `vtable for llvm::cl::opt<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >'
cl_options.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.355+0x448c): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
/home/zlx/code/repos/ldc/build/lib/libldc.a(cl_options.cpp.o): In function `llvm::cl::opt<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::~opt()':
cl_options.cpp:(.text._ZN4llvm2cl3optINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ENS0_6parserIS7_EEED0Ev[_ZN4llvm2cl3optINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb0ENS0_6parserIS7_EEED5Ev]+0x3): undefined reference to `vtable for llvm::cl::opt<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >'
/home/zlx/code/repos/ldc/build/lib/libldc.a(cl_options_instrumentation.cpp.o): In function `__static_initialization_and_destruction_0(int, int) [clone .constprop.55]':
cl_options_instrumentation.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.55+0x119): undefined reference to `vtable for llvm::cl::OptionValue<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
cl_options_instrumentation.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.55+0x124): undefined reference to `vtable for llvm::cl::opt<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >'
cl_options_instrumentation.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.55+0x136): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
/home/zlx/code/repos/ldc/build/lib/libldc.a(cl_options_sanitizers.cpp.o): In function `opts::initializeSanitizerOptionsFromCmdline()':
cl_options_sanitizers.cpp:(.text._ZN4opts37initializeSanitizerOptionsFromCmdlineEv+0x423): undefined reference to `llvm::SpecialCaseList::create(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
/home/zlx/code/repos/ldc/build/lib/libldc.a(cl_options_sanitizers.cpp.o): In function `_GLOBAL__sub_I_cl_options_sanitizers.cpp':
cl_options_sanitizers.cpp:(.text.startup._GLOBAL__sub_I_cl_options_sanitizers.cpp+0x8e): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
/home/zlx/code/repos/ldc/build/lib/libldc.a(cl_options-llvm.cpp.o): In function `opts::getFeaturesStr[abi:cxx11]()':
cl_options-llvm.cpp:(.text._ZN4opts14getFeaturesStrB5cxx11Ev+0xac): undefined reference to `llvm::SubtargetFeatures::getString[abi:cxx11]() const'
/home/zlx/code/repos/ldc/build/lib/libldc.a(cl_options-llvm.cpp.o): In function `__static_initialization_and_destruction_0(int, int) [clone .constprop.295]':
cl_options-llvm.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.295+0xb9f): undefined reference to `vtable for llvm::cl::OptionValue<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
cl_options-llvm.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.295+0xbc4): undefined reference to `vtable for llvm::cl::opt<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >'
cl_options-llvm.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.295+0xbec): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
cl_options-llvm.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.295+0xd76): undefined reference to `vtable for llvm::cl::OptionValue<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
cl_options-llvm.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.295+0xd8b): undefined reference to `vtable for llvm::cl::opt<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >'
cl_options-llvm.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.295+0xdaa): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
cl_options-llvm.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.295+0x1106): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
cl_options-llvm.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.295+0x2d95): undefined reference to `vtable for llvm::cl::OptionValue<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
cl_options-llvm.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.295+0x2dba): undefined reference to `vtable for llvm::cl::opt<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >'
cl_options-llvm.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.295+0x2de2): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
/home/zlx/code/repos/ldc/build/lib/libldc.a(configfile.cpp.o): In function `_GLOBAL__sub_I_configfile.cpp':
configfile.cpp:(.text.startup._GLOBAL__sub_I_configfile.cpp+0x83): undefined reference to `vtable for llvm::cl::OptionValue<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
configfile.cpp:(.text.startup._GLOBAL__sub_I_configfile.cpp+0xa9): undefined reference to `vtable for llvm::cl::opt<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >'
configfile.cpp:(.text.startup._GLOBAL__sub_I_configfile.cpp+0xd1): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
/home/zlx/code/repos/ldc/build/lib/libldc.a(exe_path.cpp.o): In function `exe_path::initialize(char const*)':
exe_path.cpp:(.text._ZN8exe_path10initializeEPKc+0x36): undefined reference to `llvm::sys::fs::getMainExecutable[abi:cxx11](char const*, void*)'
/home/zlx/code/repos/ldc/build/lib/libldc.a(targetmachine.cpp.o): In function `lookupTarget(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, llvm::Triple&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)':
targetmachine.cpp:(.text._Z12lookupTargetRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERN4llvm6TripleERS4_+0x243): undefined reference to `llvm::TargetRegistry::lookupTarget(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
/home/zlx/code/repos/ldc/build/lib/libldc.a(targetmachine.cpp.o): In function `createTargetMachine(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, ExplicitBitness::Type, FloatABI::Type&, llvm::Optional<llvm::Reloc::Model>, llvm::Optional<llvm::CodeModel::Model>, llvm::CodeGenOpt::Level, bool)':
targetmachine.cpp:(.text._Z19createTargetMachineNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_S4_S4_N15ExplicitBitness4TypeERN8FloatABI4TypeEN4llvm8OptionalINSA_5Reloc5ModelEEENSB_INSA_9CodeModel5ModelEEENSA_10CodeGenOpt5LevelEb+0xc6): undefined reference to `llvm::sys::getDefaultTargetTriple[abi:cxx11]()'
targetmachine.cpp:(.text._Z19createTargetMachineNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_S4_S4_N15ExplicitBitness4TypeERN8FloatABI4TypeEN4llvm8OptionalINSA_5Reloc5ModelEEENSB_INSA_9CodeModel5ModelEEENSA_10CodeGenOpt5LevelEb+0x2f7): undefined reference to `llvm::Triple::normalize[abi:cxx11](llvm::StringRef)'
targetmachine.cpp:(.text._Z19createTargetMachineNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_S4_S4_N15ExplicitBitness4TypeERN8FloatABI4TypeEN4llvm8OptionalINSA_5Reloc5ModelEEENSB_INSA_9CodeModel5ModelEEENSA_10CodeGenOpt5LevelEb+0x565): undefined reference to `llvm::SubtargetFeatures::getString[abi:cxx11]() const'
/home/zlx/code/repos/ldc/build/lib/libldc.a(archiver.cpp.o): In function `llvm_ar::getDefaultForHost()':
archiver.cpp:(.text._ZN7llvm_ar17getDefaultForHostEv+0x29): undefined reference to `llvm::sys::getProcessTriple[abi:cxx11]()'
/home/zlx/code/repos/ldc/build/lib/libldc.a(archiver.cpp.o): In function `llvm_ar::performWriteOperation(llvm::object::Archive*, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >)':
archiver.cpp:(.text._ZN7llvm_ar21performWriteOperationEPN4llvm6object7ArchiveESt10unique_ptrINS0_12MemoryBufferESt14default_deleteIS5_EE+0x203): undefined reference to `llvm::Twine::str[abi:cxx11]() const'
/home/zlx/code/repos/ldc/build/lib/libldc.a(archiver.cpp.o): In function `llvm_ar::performOperation() [clone .part.171]':
archiver.cpp:(.text._ZN7llvm_ar16performOperationEv.part.171+0xfb): undefined reference to `llvm::Twine::str[abi:cxx11]() const'
archiver.cpp:(.text._ZN7llvm_ar16performOperationEv.part.171+0x339): undefined reference to `llvm::Twine::str[abi:cxx11]() const'
/home/zlx/code/repos/ldc/build/lib/libldc.a(archiver.cpp.o): In function `_GLOBAL__sub_I_archiver.cpp':
archiver.cpp:(.text.startup._GLOBAL__sub_I_archiver.cpp+0xac): undefined reference to `vtable for llvm::cl::OptionValue<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
archiver.cpp:(.text.startup._GLOBAL__sub_I_archiver.cpp+0xd2): undefined reference to `vtable for llvm::cl::opt<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >'
archiver.cpp:(.text.startup._GLOBAL__sub_I_archiver.cpp+0xfa): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
/home/zlx/code/repos/ldc/build/lib/libldc.a(linker.cpp.o): In function `__static_initialization_and_destruction_0(int, int) [clone .constprop.113]':
linker.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.113+0x329): undefined reference to `vtable for llvm::cl::OptionValue<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
linker.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.113+0x33d): undefined reference to `vtable for llvm::cl::opt<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >'
linker.cpp:(.text.startup._Z41__static_initialization_and_destruction_0ii.constprop.113+0x35e): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
/home/zlx/code/repos/ldc/build/lib/libldc.a(linker.cpp.o): In function `getDefaultLibNames()':
linker.cpp:(.text._ZL18getDefaultLibNamesv+0x34f): undefined reference to `llvm::Twine::str[abi:cxx11]() const'
/home/zlx/code/repos/ldc/build/lib/libldc.a(linker-gcc.cpp.o): In function `(anonymous namespace)::getFullClangCompilerRTLibPath(llvm::Triple const&, llvm::StringRef, bool)':
linker-gcc.cpp:(.text._ZN12_GLOBAL__N_129getFullClangCompilerRTLibPathERKN4llvm6TripleENS0_9StringRefEb+0x172): undefined reference to `llvm::Twine::str[abi:cxx11]() const'
/home/zlx/code/repos/ldc/build/lib/libldc.a(linker-gcc.cpp.o): In function `(anonymous namespace)::LdArgsBuilder::addLdFlag(llvm::Twine const&)':
linker-gcc.cpp:(.text._ZN12_GLOBAL__N_113LdArgsBuilder9addLdFlagERKN4llvm5TwineE+0x20): undefined reference to `llvm::Twine::str[abi:cxx11]() const'
/home/zlx/code/repos/ldc/build/lib/libldc.a(linker-gcc.cpp.o): In function `(anonymous namespace)::LdArgsBuilder::addLdFlag(llvm::Twine const&, llvm::Twine const&)':
linker-gcc.cpp:(.text._ZN12_GLOBAL__N_113LdArgsBuilder9addLdFlagERKN4llvm5TwineES4_+0x2b): undefined reference to `llvm::Twine::str[abi:cxx11]() const'
linker-gcc.cpp:(.text._ZN12_GLOBAL__N_113LdArgsBuilder9addLdFlagERKN4llvm5TwineES4_+0x76): undefined reference to `llvm::Twine::str[abi:cxx11]() const'
/home/zlx/code/repos/ldc/build/lib/libldc.a(linker-gcc.cpp.o):linker-gcc.cpp:(.text._ZN12_GLOBAL__N_111ArgsBuilder9addLdFlagERKN4llvm5TwineE+0x66): more undefined references to `llvm::Twine::str[abi:cxx11]() const' follow
/home/zlx/code/repos/ldc/build/lib/libldc.a(linker-gcc.cpp.o): In function `_GLOBAL__sub_I_linker_gcc.cpp':
linker-gcc.cpp:(.text.startup._GLOBAL__sub_I_linker_gcc.cpp+0x77): undefined reference to `vtable for llvm::cl::OptionValue<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
linker-gcc.cpp:(.text.startup._GLOBAL__sub_I_linker_gcc.cpp+0x9a): undefined reference to `vtable for llvm::cl::opt<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >'
linker-gcc.cpp:(.text.startup._GLOBAL__sub_I_linker_gcc.cpp+0xc0): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
/home/zlx/code/repos/ldc/build/lib/libldc.a(linker-msvc.cpp.o): In function `linkObjToBinaryMSVC(llvm::StringRef, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)':
linker-msvc.cpp:(.text._Z19linkObjToBinaryMSVCN4llvm9StringRefERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EE+0x208): undefined reference to `llvm::Twine::str[abi:cxx11]() const'
linker-msvc.cpp:(.text._Z19linkObjToBinaryMSVCN4llvm9StringRefERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EE+0x37b): undefined reference to `llvm::Twine::str[abi:cxx11]() const'
linker-msvc.cpp:(.text._Z19linkObjToBinaryMSVCN4llvm9StringRefERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EE+0x427): undefined reference to `llvm::Twine::str[abi:cxx11]() const'
/home/zlx/code/repos/ldc/build/lib/libldc.a(linker-msvc.cpp.o): In function `_GLOBAL__sub_I_linker_msvc.cpp':
linker-msvc.cpp:(.text.startup._GLOBAL__sub_I_linker_msvc.cpp+0x83): undefined reference to `vtable for llvm::cl::OptionValue<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
linker-msvc.cpp:(.text.startup._GLOBAL__sub_I_linker_msvc.cpp+0xa9): undefined reference to `vtable for llvm::cl::opt<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >'
linker-msvc.cpp:(.text.startup._GLOBAL__sub_I_linker_msvc.cpp+0xd1): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
/home/zlx/code/repos/ldc/build/lib/libldc.a(main.cpp.o): In function `printVersion(llvm::raw_ostream&)':
main.cpp:(.text._Z12printVersionRN4llvm11raw_ostreamE+0x2e0): undefined reference to `llvm::sys::getDefaultTargetTriple[abi:cxx11]()'
/home/zlx/code/repos/ldc/build/lib/libldc.a(main.cpp.o): In function `(anonymous namespace)::ForcePassLinking::ForcePassLinking() [clone .isra.186]':
main.cpp:(.text.startup._ZN12_GLOBAL__N_116ForcePassLinkingC2Ev.isra.186+0x41a): undefined reference to `llvm::createPrintModulePass(llvm::raw_ostream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)'
main.cpp:(.text.startup._ZN12_GLOBAL__N_116ForcePassLinkingC2Ev.isra.186+0x44c): undefined reference to `llvm::createPrintFunctionPass(llvm::raw_ostream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
main.cpp:(.text.startup._ZN12_GLOBAL__N_116ForcePassLinkingC2Ev.isra.186+0x47c): undefined reference to `llvm::createPrintBasicBlockPass(llvm::raw_ostream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/home/zlx/code/repos/ldc/build/lib/libldc.a(main.cpp.o): In function `cppmain(int, char**)':
main.cpp:(.text._Z7cppmainiPPc+0x44c): undefined reference to `llvm::sys::getDefaultTargetTriple[abi:cxx11]()'
main.cpp:(.text._Z7cppmainiPPc+0x5d4): undefined reference to `llvm::Triple::normalize[abi:cxx11](llvm::StringRef)'
main.cpp:(.text._Z7cppmainiPPc+0x23ac): undefined reference to `llvm::Triple::normalize[abi:cxx11](llvm::StringRef)'
/home/zlx/code/repos/ldc/build/lib/libldc.a(main.cpp.o): In function `_GLOBAL__sub_I_main.cpp':
main.cpp:(.text.startup._GLOBAL__sub_I_main.cpp+0x120): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
/home/zlx/code/repos/ldc/build/lib/libldc.a(plugins.cpp.o): In function `loadAllPlugins()':
plugins.cpp:(.text._Z14loadAllPluginsv+0x6a): undefined reference to `llvm::sys::DynamicLibrary::getPermanentLibrary(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)'
/home/zlx/code/repos/ldc/build/lib/libldc.a(plugins.cpp.o): In function `_GLOBAL__sub_I_plugins.cpp':
plugins.cpp:(.text.startup._GLOBAL__sub_I_plugins.cpp+0xa2): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
/home/zlx/code/repos/ldc/build/lib/libldc.a(tool.cpp.o): In function `findProgramByName(llvm::StringRef)':
tool.cpp:(.text._ZL17findProgramByNameN4llvm9StringRefE+0x2b): undefined reference to `llvm::sys::findProgramByName[abi:cxx11](llvm::StringRef, llvm::ArrayRef<llvm::StringRef>)'
/home/zlx/code/repos/ldc/build/lib/libldc.a(tool.cpp.o): In function `executeToolAndWait(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool)':
tool.cpp:(.text._Z18executeToolAndWaitRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS4_SaIS4_EEb+0xae): undefined reference to `llvm::sys::ExecuteAndWait(llvm::StringRef, char const**, char const**, llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*)'
/home/zlx/code/repos/ldc/build/lib/libldc.a(tool.cpp.o): In function `_GLOBAL__sub_I_tool.cpp':
tool.cpp:(.text.startup._GLOBAL__sub_I_tool.cpp+0x54): undefined reference to `vtable for llvm::cl::OptionValue<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
tool.cpp:(.text.startup._GLOBAL__sub_I_tool.cpp+0xf4): undefined reference to `vtable for llvm::cl::opt<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >'
tool.cpp:(.text.startup._GLOBAL__sub_I_tool.cpp+0xff): undefined reference to `vtable for llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
/home/zlx/code/repos/ldc/build/lib/libldc.a(ldctraits.cpp.o): In function `traitsTargetHasFeature(Dstring)':
ldctraits.cpp:(.text._Z22traitsTargetHasFeature7Dstring+0x23f): undefined reference to `llvm::Twine::str[abi:cxx11]() const'
ldctraits.cpp:(.text._Z22traitsTargetHasFeature7Dstring+0x36e): undefined reference to `llvm::Twine::str[abi:cxx11]() const'
/home/zlx/code/repos/ldc/build/lib/libldc.a(mangling.cpp.o): In function `getIRMangledModuleRefSymbolName[abi:cxx11](char const*)':
mangling.cpp:(.text._Z31getIRMangledModuleRefSymbolNameB5cxx11PKc+0x7e): undefined reference to `llvm::Twine::str[abi:cxx11]() const'
/home/zlx/code/repos/ldc/build/lib/libldc.a(uda.cpp.o): In function `(anonymous namespace)::applyAttrTarget(StructLiteralExp*, llvm::Function*, IrFunction*) [clone .isra.107]':
uda.cpp:(.text._ZN12_GLOBAL__N_115applyAttrTargetEP16StructLiteralExpPN4llvm8FunctionEP10IrFunction.isra.107+0x328): undefined reference to `llvm::Twine::str[abi:cxx11]() const'
uda.cpp:(.text._ZN12_GLOBAL__N_115applyAttrTargetEP16StructLiteralExpPN4llvm8FunctionEP10IrFunction.isra.107+0x513): undefined reference to `llvm::Twine::str[abi:cxx11]() const'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

System Info:

$ uname -a
Linux acervx15-zlx 4.17.6-1-ARCH #1 SMP PREEMPT Wed Jul 11 19:14:29 UTC 2018 x86_64 GNU/Linux

$ cmake --version
cmake version 3.11.4

CMake suite maintained and supported by Kitware (kitware.com/cmake).

$ g++ --version                                                                                                                                              Sun 22 Jul 2018 03:28:00 PM EEST
g++ (GCC) 8.1.1 20180531
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ clang++ --version
clang version 6.0.1 (tags/RELEASE_601/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

$ dmd --version
DMD64 D Compiler v2.081.1
Copyright (C) 1999-2018 by The D Language Foundation, All Rights Reserved written by Walter Bright

$ ldc2 --version
LDC - the LLVM D compiler (1.11.0-beta2):
  based on DMD v2.081.1 and LLVM 6.0.1
  built with LDC - the LLVM D compiler (1.11.0-beta2)

$ ninja --version
1.8.2

$ git rev-parse HEAD
4d5871a0277a709760d9b19a27b836560305c5ed

I tried building with either dmd or ldc activated (via the install.sh script) but I got the same result. The failure is really strange considering that your various CIs must have done multiple successful builds of the same thing.

PetarKirov commented 6 years ago

Since the problem at the linking stage, my guess is that there's some ABI incompatibility between my local compiler (gcc/g++ 8.1.1 20180531) and the compiler that was used to build the release of your fork of llvm. I also tried clang/clang++ 6.0.1 (tags/RELEASE_601/final), but I get the same error.

I'll try building your llvm fork locally and see how it goes.

kinke commented 6 years ago

my guess is that there's some ABI incompatibility between my local compiler (gcc/g++ 8.1.1 20180531) and the compiler that was used to build the release of your fork of llvm

Yep, that's almost certainly the culprit. The prebuilt LLVM is built on Ubuntu 14.04 with backported g++ 6.4.

PetarKirov commented 6 years ago

Yep, building llvm with GCC 8 solved the issue for me. Curiously enough my first attempt at building llvm with clang failed with another linker error:

$ cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=(dirname $PWD)/llvm-x64 -DLLVM_TARGETS_TO_BUILD="AArch64;ARM;Mips;MSP430;NVPTX;PowerPC;X86" -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="RISCV;WebAssembly" -DLLVM_ENABLE_ASSERTIONS=$LLVM_ENABLE_ASSERTIONS -DCOMPILER_RT_INCLUDE_TESTS=OFF $extraCMakeFlags ..

$ ninja -k 5

...

[1/3] Linking CXX shared library lib/libLTO.so.6.0.1
FAILED: lib/libLTO.so.6.0.1 
: && /usr/bin/clang++ -fPIC -static-libstdc++ -fvisibility-inlines-hidden -std=c++11 -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wnon-virtual-dtor -fcolor-diagnostics -O3  -Wl,-z,defs -Wl,-z,nodelete   -Wl,-rpath-link,/home/zlx/code/repos/llvm/ninja-llvm/./lib  -Wl,-O3 -Wl,--gc-sections  -Wl,--version-script,/home/zlx/code/repos/llvm/ninja-llvm/tools/lto/LTO.exports -shared -Wl,-soname,libLTO.so.6 -o lib/libLTO.so.6.0.1 tools/lto/CMakeFiles/LTO.dir/LTODisassembler.cpp.o tools/lto/CMakeFiles/LTO.dir/lto.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib" lib/libLLVMAArch64CodeGen.a lib/libLLVMAArch64AsmParser.a lib/libLLVMAArch64AsmPrinter.a lib/libLLVMAArch64Desc.a lib/libLLVMAArch64Disassembler.a lib/libLLVMAArch64Info.a lib/libLLVMAArch64Utils.a lib/libLLVMARMCodeGen.a lib/libLLVMARMAsmParser.a lib/libLLVMARMAsmPrinter.a lib/libLLVMARMDesc.a lib/libLLVMARMDisassembler.a lib/libLLVMARMInfo.a lib/libLLVMARMUtils.a lib/libLLVMMipsCodeGen.a lib/libLLVMMipsAsmParser.a lib/libLLVMMipsAsmPrinter.a lib/libLLVMMipsDesc.a lib/libLLVMMipsDisassembler.a lib/libLLVMMipsInfo.a lib/libLLVMMSP430CodeGen.a lib/libLLVMMSP430AsmPrinter.a lib/libLLVMMSP430Desc.a lib/libLLVMMSP430Info.a lib/libLLVMNVPTXCodeGen.a lib/libLLVMNVPTXAsmPrinter.a lib/libLLVMNVPTXDesc.a lib/libLLVMNVPTXInfo.a lib/libLLVMPowerPCCodeGen.a lib/libLLVMPowerPCAsmParser.a lib/libLLVMPowerPCAsmPrinter.a lib/libLLVMPowerPCDesc.a lib/libLLVMPowerPCDisassembler.a lib/libLLVMPowerPCInfo.a lib/libLLVMX86CodeGen.a lib/libLLVMX86AsmParser.a lib/libLLVMX86AsmPrinter.a lib/libLLVMX86Desc.a lib/libLLVMX86Disassembler.a lib/libLLVMX86Info.a lib/libLLVMX86Utils.a lib/libLLVMRISCVCodeGen.a lib/libLLVMRISCVAsmParser.a lib/libLLVMRISCVAsmPrinter.a lib/libLLVMRISCVDesc.a lib/libLLVMRISCVDisassembler.a lib/libLLVMRISCVInfo.a lib/libLLVMWebAssemblyCodeGen.a lib/libLLVMWebAssemblyAsmPrinter.a lib/libLLVMWebAssemblyDesc.a lib/libLLVMWebAssemblyDisassembler.a lib/libLLVMWebAssemblyInfo.a lib/libLLVMBitReader.a lib/libLLVMCore.a lib/libLLVMLTO.a lib/libLLVMMC.a lib/libLLVMMCDisassembler.a lib/libLLVMSupport.a lib/libLLVMTarget.a lib/libLLVMAArch64Desc.a lib/libLLVMAArch64AsmPrinter.a lib/libLLVMAArch64Info.a lib/libLLVMAArch64Utils.a lib/libLLVMARMDesc.a lib/libLLVMARMAsmPrinter.a lib/libLLVMARMUtils.a lib/libLLVMARMInfo.a lib/libLLVMMipsAsmPrinter.a lib/libLLVMMSP430AsmPrinter.a lib/libLLVMNVPTXAsmPrinter.a lib/libLLVMPowerPCAsmPrinter.a lib/libLLVMGlobalISel.a lib/libLLVMX86AsmPrinter.a lib/libLLVMX86Utils.a lib/libLLVMRISCVAsmPrinter.a lib/libLLVMWebAssemblyAsmPrinter.a lib/libLLVMAsmPrinter.a lib/libLLVMDebugInfoCodeView.a lib/libLLVMDebugInfoMSF.a lib/libLLVMSelectionDAG.a lib/libLLVMMCDisassembler.a lib/libLLVMObjCARCOpts.a lib/libLLVMPasses.a lib/libLLVMCodeGen.a lib/libLLVMTarget.a lib/libLLVMipo.a lib/libLLVMScalarOpts.a lib/libLLVMVectorize.a lib/libLLVMBitWriter.a lib/libLLVMLinker.a lib/libLLVMIRReader.a lib/libLLVMAsmParser.a lib/libLLVMInstCombine.a lib/libLLVMInstrumentation.a lib/libLLVMTransformUtils.a lib/libLLVMAnalysis.a lib/libLLVMObject.a lib/libLLVMBitReader.a lib/libLLVMMCParser.a lib/libLLVMMC.a lib/libLLVMProfileData.a lib/libLLVMCore.a lib/libLLVMBinaryFormat.a lib/libLLVMSupport.a -lz -lrt -ldl -ltinfo -lpthread -lm lib/libLLVMDemangle.a && :
/usr/bin/ld: lib/libLLVMSupport.a(PrettyStackTrace.cpp.o): relocation R_X86_64_TPOFF32 against `_ZL20PrettyStackTraceHead' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Nonrepresentable section on output
clang-6.0: error: linker command failed with exit code 1 (use -v to see invocation)
[2/3] Linking CXX shared module lib/LLVMgold.so
FAILED: lib/LLVMgold.so 
: && /usr/bin/clang++ -fPIC -static-libstdc++ -fvisibility-inlines-hidden -std=c++11 -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wnon-virtual-dtor -fcolor-diagnostics -O3  -Wl,-rpath-link,/home/zlx/code/repos/llvm/ninja-llvm/./lib  -Wl,-O3 -Wl,--gc-sections  -Wl,--version-script,/home/zlx/code/repos/llvm/ninja-llvm/tools/gold/LLVMgold.exports -shared  -o lib/LLVMgold.so tools/gold/CMakeFiles/LLVMgold.dir/gold-plugin.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib" lib/libLLVMAArch64CodeGen.a lib/libLLVMAArch64AsmParser.a lib/libLLVMAArch64AsmPrinter.a lib/libLLVMAArch64Desc.a lib/libLLVMAArch64Disassembler.a lib/libLLVMAArch64Info.a lib/libLLVMAArch64Utils.a lib/libLLVMARMCodeGen.a lib/libLLVMARMAsmParser.a lib/libLLVMARMAsmPrinter.a lib/libLLVMARMDesc.a lib/libLLVMARMDisassembler.a lib/libLLVMARMInfo.a lib/libLLVMARMUtils.a lib/libLLVMMipsCodeGen.a lib/libLLVMMipsAsmParser.a lib/libLLVMMipsAsmPrinter.a lib/libLLVMMipsDesc.a lib/libLLVMMipsDisassembler.a lib/libLLVMMipsInfo.a lib/libLLVMMSP430CodeGen.a lib/libLLVMMSP430AsmPrinter.a lib/libLLVMMSP430Desc.a lib/libLLVMMSP430Info.a lib/libLLVMNVPTXCodeGen.a lib/libLLVMNVPTXAsmPrinter.a lib/libLLVMNVPTXDesc.a lib/libLLVMNVPTXInfo.a lib/libLLVMPowerPCCodeGen.a lib/libLLVMPowerPCAsmParser.a lib/libLLVMPowerPCAsmPrinter.a lib/libLLVMPowerPCDesc.a lib/libLLVMPowerPCDisassembler.a lib/libLLVMPowerPCInfo.a lib/libLLVMX86CodeGen.a lib/libLLVMX86AsmParser.a lib/libLLVMX86AsmPrinter.a lib/libLLVMX86Desc.a lib/libLLVMX86Disassembler.a lib/libLLVMX86Info.a lib/libLLVMX86Utils.a lib/libLLVMRISCVCodeGen.a lib/libLLVMRISCVAsmParser.a lib/libLLVMRISCVAsmPrinter.a lib/libLLVMRISCVDesc.a lib/libLLVMRISCVDisassembler.a lib/libLLVMRISCVInfo.a lib/libLLVMWebAssemblyCodeGen.a lib/libLLVMWebAssemblyAsmPrinter.a lib/libLLVMWebAssemblyDesc.a lib/libLLVMWebAssemblyDisassembler.a lib/libLLVMWebAssemblyInfo.a lib/libLLVMLinker.a lib/libLLVMLTO.a lib/libLLVMBitWriter.a lib/libLLVMipo.a lib/libLLVMAArch64Desc.a lib/libLLVMAArch64AsmPrinter.a lib/libLLVMAArch64Info.a lib/libLLVMAArch64Utils.a lib/libLLVMARMDesc.a lib/libLLVMARMAsmPrinter.a lib/libLLVMARMUtils.a lib/libLLVMARMInfo.a lib/libLLVMMipsAsmPrinter.a lib/libLLVMMSP430AsmPrinter.a lib/libLLVMNVPTXAsmPrinter.a lib/libLLVMPowerPCAsmPrinter.a lib/libLLVMGlobalISel.a lib/libLLVMX86AsmPrinter.a lib/libLLVMX86Utils.a lib/libLLVMRISCVAsmPrinter.a lib/libLLVMWebAssemblyAsmPrinter.a lib/libLLVMAsmPrinter.a lib/libLLVMDebugInfoCodeView.a lib/libLLVMDebugInfoMSF.a lib/libLLVMSelectionDAG.a lib/libLLVMMCDisassembler.a lib/libLLVMObjCARCOpts.a lib/libLLVMPasses.a lib/libLLVMipo.a lib/libLLVMLinker.a lib/libLLVMIRReader.a lib/libLLVMAsmParser.a lib/libLLVMCodeGen.a lib/libLLVMBitWriter.a lib/libLLVMScalarOpts.a lib/libLLVMTarget.a lib/libLLVMVectorize.a lib/libLLVMInstCombine.a lib/libLLVMInstrumentation.a lib/libLLVMTransformUtils.a lib/libLLVMAnalysis.a lib/libLLVMObject.a lib/libLLVMMCParser.a lib/libLLVMMC.a lib/libLLVMBitReader.a lib/libLLVMProfileData.a lib/libLLVMCore.a lib/libLLVMBinaryFormat.a lib/libLLVMSupport.a -lz -lrt -ldl -ltinfo -lpthread -lm lib/libLLVMDemangle.a && :
/usr/bin/ld: lib/libLLVMSupport.a(PrettyStackTrace.cpp.o): relocation R_X86_64_TPOFF32 against `_ZL20PrettyStackTraceHead' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Nonrepresentable section on output
clang-6.0: error: linker command failed with exit code 1 (use -v to see invocation)

Anyway, I now managed to compile ldc and build my first working wasm program with simply ldc2 --mtriple=wasm32-unknown-unknown-wasm -betterC --link-internally, amazing!!! :heart_eyes:

joakim-noah commented 6 years ago

Btw, unrelated to this issue, but someone with a HN account want to set this Rust guy straight on building ldc (see first response to Walter)? It's never taken me 10X as long to build ldc as dmd, plus not sure how he blames a pre-built LLVM for the difference.

kinke commented 6 years ago

[I don't have an account and don't plan on getting one.] But a build taking 21 mins on a non-ancient x86 machine is a ridiculous statement. Even CircleCI manages to build in just under 4 minutes, incl. default libs.