Fwd: Trying to compile GHC under Ubuntu as a cross-compiler for ARM
Hello! Could someone help me with compiling GHC under Ubuntu as a ARM cross-compiler? Currently I have done those steps: sudo apt-get update sudo apt-get install autoconf alex happy libtool autopoint zlib1g-dev libncurses5-dev ghc-haddock sudo export PATH=~/.cabal/bin:$PATH sudo cabal install --reinstall happy alex terminfo libffi html regex-compat git clone http://darcs.haskell.org/ghc.git cd ghc ./sync-all --no-dph get ./sync-all pull ./boot sudo ./configure --target=arm-linux-gnueabi --enable-unregisterised cp mk/build.mk.sample mk/build.mk # here I enable quick-cross configuration sudo make and I get: echo "compiler_stage1_depfile_c_asm_EXISTS = YES" >> compiler/stage1/build/.depend-v.c_asm.tmp mv compiler/stage1/build/.depend-v.c_asm.tmp compiler/stage1/build/.depend-v.c_asm inplace/bin/deriveConstants --gen-header -o includes/dist-derivedconstants/header/DerivedConstants.h --tmpdir includes/dist-derivedconstants/header/ --gcc-program "/usr/bin/gcc" --gcc-flag -fno-stack-protector --gcc-flag -Iincludes --gcc-flag -Iincludes/dist --gcc-flag -Iincludes/dist-derivedconstants/header --gcc-flag -Iincludes/dist-ghcconstants/header --gcc-flag -Irts --gcc-flag -fcommon --nm-program "/usr/bin/arm-linux-gnueabi-nm" /usr/bin/arm-linux-gnueabi-nm: includes/dist-derivedconstants/header/tmp.o: File format not recognized deriveConstants: readProcess: /usr/bin/arm-linux-gnueabi-nm "includes/dist-derivedconstants/header/tmp.o" (exit 1): failed make[1]: *** [includes/dist-derivedconstants/header/DerivedConstants.h] Error 1 make: *** [all] Error 2 What I have done wrong? I did not understand the error message well, too.
Last time I did that (crossing to ARMv8) I needed to use --with-gcc=<cross compiler> option since for some reason I had not time to debug setting target triple with --target was not enough. Speaking about GHC HEAD as of new year eve (2014) time... But well, since it this is already some time I'm not sure this was to cure issue like you have now, but at least you may give it a try... Karel On 03/28/14 06:08 PM, eng. Vassil Ognyanov Keremidchiev wrote:
Hello!
Could someone help me with compiling GHC under Ubuntu as a ARM cross-compiler?
Currently I have done those steps: sudo apt-get update sudo apt-get install autoconf alex happy libtool autopoint zlib1g-dev libncurses5-dev ghc-haddock sudo export PATH=~/.cabal/bin:$PATH sudo cabal install --reinstall happy alex terminfo libffi html regex-compat
git clone http://darcs.haskell.org/ghc.git cd ghc
./sync-all --no-dph get ./sync-all pull ./boot sudo ./configure --target=arm-linux-gnueabi --enable-unregisterised cp mk/build.mk.sample mk/build.mk <http://build.mk> # here I enable quick-cross configuration sudo make
and I get:
echo "compiler_stage1_depfile_c_asm_EXISTS = YES" >> compiler/stage1/build/.depend-v.c_asm.tmp mv compiler/stage1/build/.depend-v.c_asm.tmp compiler/stage1/build/.depend-v.c_asm inplace/bin/deriveConstants --gen-header -o includes/dist-derivedconstants/header/DerivedConstants.h --tmpdir includes/dist-derivedconstants/header/ --gcc-program "/usr/bin/gcc" --gcc-flag -fno-stack-protector --gcc-flag -Iincludes --gcc-flag -Iincludes/dist --gcc-flag -Iincludes/dist-derivedconstants/header --gcc-flag -Iincludes/dist-ghcconstants/header --gcc-flag -Irts --gcc-flag -fcommon --nm-program "/usr/bin/arm-linux-gnueabi-nm" /usr/bin/arm-linux-gnueabi-nm: includes/dist-derivedconstants/header/tmp.o: File format not recognized deriveConstants: readProcess: /usr/bin/arm-linux-gnueabi-nm "includes/dist-derivedconstants/header/tmp.o" (exit 1): failed make[1]: *** [includes/dist-derivedconstants/header/DerivedConstants.h] Error 1 make: *** [all] Error 2
What I have done wrong? I did not understand the error message well, too.
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs
Hello! Thanks, it continued with building until some LLVM errors. But will --with-gcc= arm based compiler will create GHC with: Host: x86 Ubuntu (where compilation should happen) Target: ARMv7 Linux ? Because I don't want to have GHC on my slow and restricted ARM machine. Best regards, Vassil 2014-03-28 20:09 GMT+02:00 Karel Gardas <karel.gardas@centrum.cz>:
Last time I did that (crossing to ARMv8) I needed to use --with-gcc=<cross compiler> option since for some reason I had not time to debug setting target triple with --target was not enough. Speaking about GHC HEAD as of new year eve (2014) time...
But well, since it this is already some time I'm not sure this was to cure issue like you have now, but at least you may give it a try...
Karel
On 03/28/14 06:08 PM, eng. Vassil Ognyanov Keremidchiev wrote:
Hello!
Could someone help me with compiling GHC under Ubuntu as a ARM cross-compiler?
Currently I have done those steps: sudo apt-get update sudo apt-get install autoconf alex happy libtool autopoint zlib1g-dev libncurses5-dev ghc-haddock sudo export PATH=~/.cabal/bin:$PATH sudo cabal install --reinstall happy alex terminfo libffi html regex-compat
git clone http://darcs.haskell.org/ghc.git cd ghc
./sync-all --no-dph get ./sync-all pull ./boot sudo ./configure --target=arm-linux-gnueabi --enable-unregisterised cp mk/build.mk.sample mk/build.mk <http://build.mk>
# here I enable quick-cross configuration sudo make
and I get:
echo "compiler_stage1_depfile_c_asm_EXISTS = YES" >> compiler/stage1/build/.depend-v.c_asm.tmp mv compiler/stage1/build/.depend-v.c_asm.tmp compiler/stage1/build/.depend-v.c_asm inplace/bin/deriveConstants --gen-header -o includes/dist-derivedconstants/header/DerivedConstants.h --tmpdir includes/dist-derivedconstants/header/ --gcc-program "/usr/bin/gcc" --gcc-flag -fno-stack-protector --gcc-flag -Iincludes --gcc-flag -Iincludes/dist --gcc-flag -Iincludes/dist-derivedconstants/header --gcc-flag -Iincludes/dist-ghcconstants/header --gcc-flag -Irts --gcc-flag -fcommon --nm-program "/usr/bin/arm-linux-gnueabi-nm" /usr/bin/arm-linux-gnueabi-nm: includes/dist-derivedconstants/header/tmp.o: File format not recognized deriveConstants: readProcess: /usr/bin/arm-linux-gnueabi-nm "includes/dist-derivedconstants/header/tmp.o" (exit 1): failed make[1]: *** [includes/dist-derivedconstants/header/DerivedConstants.h] Error 1 make: *** [all] Error 2
What I have done wrong? I did not understand the error message well, too.
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs
have you read the cross compiler directions on the wiki? :) https://ghc.haskell.org/trac/ghc/wiki/CrossCompilation http://www.haskell.org/haskellwiki/ARM On Wed, Apr 2, 2014 at 12:30 PM, eng. Vassil Ognyanov Keremidchiev < varosi@gmail.com> wrote:
Hello!
Thanks, it continued with building until some LLVM errors. But will --with-gcc= arm based compiler will create GHC with: Host: x86 Ubuntu (where compilation should happen) Target: ARMv7 Linux ?
Because I don't want to have GHC on my slow and restricted ARM machine.
Best regards, Vassil
2014-03-28 20:09 GMT+02:00 Karel Gardas <karel.gardas@centrum.cz>:
Last time I did that (crossing to ARMv8) I needed to use --with-gcc=<cross compiler> option since for some reason I had not time to debug setting target triple with --target was not enough. Speaking about GHC HEAD as of new year eve (2014) time...
But well, since it this is already some time I'm not sure this was to cure issue like you have now, but at least you may give it a try...
Karel
On 03/28/14 06:08 PM, eng. Vassil Ognyanov Keremidchiev wrote:
Hello!
Could someone help me with compiling GHC under Ubuntu as a ARM cross-compiler?
Currently I have done those steps: sudo apt-get update sudo apt-get install autoconf alex happy libtool autopoint zlib1g-dev libncurses5-dev ghc-haddock sudo export PATH=~/.cabal/bin:$PATH sudo cabal install --reinstall happy alex terminfo libffi html regex-compat
git clone http://darcs.haskell.org/ghc.git cd ghc
./sync-all --no-dph get ./sync-all pull ./boot sudo ./configure --target=arm-linux-gnueabi --enable-unregisterised cp mk/build.mk.sample mk/build.mk <http://build.mk>
# here I enable quick-cross configuration sudo make
and I get:
echo "compiler_stage1_depfile_c_asm_EXISTS = YES" >> compiler/stage1/build/.depend-v.c_asm.tmp mv compiler/stage1/build/.depend-v.c_asm.tmp compiler/stage1/build/.depend-v.c_asm inplace/bin/deriveConstants --gen-header -o includes/dist-derivedconstants/header/DerivedConstants.h --tmpdir includes/dist-derivedconstants/header/ --gcc-program "/usr/bin/gcc" --gcc-flag -fno-stack-protector --gcc-flag -Iincludes --gcc-flag -Iincludes/dist --gcc-flag -Iincludes/dist-derivedconstants/header --gcc-flag -Iincludes/dist-ghcconstants/header --gcc-flag -Irts --gcc-flag -fcommon --nm-program "/usr/bin/arm-linux-gnueabi-nm" /usr/bin/arm-linux-gnueabi-nm: includes/dist-derivedconstants/header/tmp.o: File format not recognized deriveConstants: readProcess: /usr/bin/arm-linux-gnueabi-nm "includes/dist-derivedconstants/header/tmp.o" (exit 1): failed make[1]: *** [includes/dist-derivedconstants/header/DerivedConstants.h] Error 1 make: *** [all] Error 2
What I have done wrong? I did not understand the error message well, too.
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs
Yes, but I don't know what is missing in my workflow. I did not know if I need LLVM runtime on my target ARM machine. Do I need? I read that there is unregisterised version for ARM that doesn't need LLVM. So I just could build Haskell cross-compiler that could work on my Ubuntu and create binaries for my ARM v7 machine. Am I right? 2014-04-02 19:58 GMT+03:00 Carter Schonwald <carter.schonwald@gmail.com>:
have you read the cross compiler directions on the wiki? :) https://ghc.haskell.org/trac/ghc/wiki/CrossCompilation http://www.haskell.org/haskellwiki/ARM
On Wed, Apr 2, 2014 at 12:30 PM, eng. Vassil Ognyanov Keremidchiev < varosi@gmail.com> wrote:
Hello!
Thanks, it continued with building until some LLVM errors. But will --with-gcc= arm based compiler will create GHC with: Host: x86 Ubuntu (where compilation should happen) Target: ARMv7 Linux ?
Because I don't want to have GHC on my slow and restricted ARM machine.
Best regards, Vassil
2014-03-28 20:09 GMT+02:00 Karel Gardas <karel.gardas@centrum.cz>:
Last time I did that (crossing to ARMv8) I needed to use --with-gcc=<cross compiler> option since for some reason I had not time to debug setting target triple with --target was not enough. Speaking about GHC HEAD as of new year eve (2014) time...
But well, since it this is already some time I'm not sure this was to cure issue like you have now, but at least you may give it a try...
Karel
On 03/28/14 06:08 PM, eng. Vassil Ognyanov Keremidchiev wrote:
Hello!
Could someone help me with compiling GHC under Ubuntu as a ARM cross-compiler?
Currently I have done those steps: sudo apt-get update sudo apt-get install autoconf alex happy libtool autopoint zlib1g-dev libncurses5-dev ghc-haddock sudo export PATH=~/.cabal/bin:$PATH sudo cabal install --reinstall happy alex terminfo libffi html regex-compat
git clone http://darcs.haskell.org/ghc.git cd ghc
./sync-all --no-dph get ./sync-all pull ./boot sudo ./configure --target=arm-linux-gnueabi --enable-unregisterised cp mk/build.mk.sample mk/build.mk <http://build.mk>
# here I enable quick-cross configuration sudo make
and I get:
echo "compiler_stage1_depfile_c_asm_EXISTS = YES" >> compiler/stage1/build/.depend-v.c_asm.tmp mv compiler/stage1/build/.depend-v.c_asm.tmp compiler/stage1/build/.depend-v.c_asm inplace/bin/deriveConstants --gen-header -o includes/dist-derivedconstants/header/DerivedConstants.h --tmpdir includes/dist-derivedconstants/header/ --gcc-program "/usr/bin/gcc" --gcc-flag -fno-stack-protector --gcc-flag -Iincludes --gcc-flag -Iincludes/dist --gcc-flag -Iincludes/dist-derivedconstants/header --gcc-flag -Iincludes/dist-ghcconstants/header --gcc-flag -Irts --gcc-flag -fcommon --nm-program "/usr/bin/arm-linux-gnueabi-nm" /usr/bin/arm-linux-gnueabi-nm: includes/dist-derivedconstants/header/tmp.o: File format not recognized deriveConstants: readProcess: /usr/bin/arm-linux-gnueabi-nm "includes/dist-derivedconstants/header/tmp.o" (exit 1): failed make[1]: *** [includes/dist-derivedconstants/header/DerivedConstants.h] Error 1 make: *** [all] Error 2
What I have done wrong? I did not understand the error message well, too.
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs
On 04/ 3/14 04:05 PM, eng. Vassil Ognyanov Keremidchiev wrote:
Yes, but I don't know what is missing in my workflow.
I did not know if I need LLVM runtime on my target ARM machine.
No, you don't need LLVM runtime. You just need LLVM llc/opt if you'd like to cross-compile and build registerised ARM binaries.
Do I need? I read that there is unregisterised version for ARM that doesn't need LLVM. So I just could build Haskell cross-compiler that could work on my Ubuntu and create binaries for my ARM v7 machine.
If you'd like to use unregisterised /via-C binaries, then you don't need LLVM at all, you just need to configure with --enable-unregisterised IIRC, but I've not tested that so you are on your own. Also it comes with its own performance penalty of course: http://ghcarm.wordpress.com/2011/08/07/nofib-benchmarking/ Karel
I'm trying to compile LLVM as is described in: http://bgamari.github.io/posts/cross-compiling_llvm.html without success. This is the error: llvm[1]: Compiling StringMatcher.cpp for Debug+Asserts build llvm[1]: Compiling TGLexer.cpp for Debug+Asserts build llvm[1]: Compiling TGParser.cpp for Debug+Asserts build llvm[1]: Compiling TableGenBackend.cpp for Debug+Asserts build llvm[1]: Building Debug+Asserts Archive Library libLLVMTableGen.a make[1]: Leaving directory `/home/varosi/haskell/llvm/build/lib/TableGen' make[1]: Entering directory `/home/varosi/haskell/llvm/build/utils' make[2]: Entering directory `/home/varosi/haskell/llvm/build/utils/FileCheck' llvm[2]: Compiling FileCheck.cpp for Debug+Asserts build llvm[2]: Linking Debug+Asserts executable FileCheck /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::Option::Option(llvm::cl::NumOccurrencesFlag, llvm::cl::OptionHidden)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:242: undefined reference to `vtable for llvm::cl::Option' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:242: undefined reference to `llvm::cl::GeneralCategory' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::Option::~Option()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:281: undefined reference to `vtable for llvm::cl::Option' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::GenericOptionValue::~GenericOptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:356: undefined reference to `vtable for llvm::cl::GenericOptionValue' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::OptionValue<std::string>::OptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:461: undefined reference to `vtable for llvm::cl::OptionValue<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::basic_parser_impl::~basic_parser_impl()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:702: undefined reference to `vtable for llvm::cl::basic_parser_impl' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::PrettyStackTraceProgram::PrettyStackTraceProgram(int, char const* const*)': /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:63: undefined reference to `llvm::PrettyStackTraceEntry::PrettyStackTraceEntry()' /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:63: undefined reference to `vtable for llvm::PrettyStackTraceProgram' /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:64: undefined reference to `llvm::EnablePrettyStackTrace()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::raw_ostream::operator<<(char)': /home/varosi/haskell/llvm/include/llvm/Support/raw_ostream.h:136: undefined reference to `llvm::raw_ostream::write(unsigned char)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::raw_ostream::operator<<(llvm::StringRef)': /home/varosi/haskell/llvm/include/llvm/Support/raw_ostream.h:161: undefined reference to `llvm::raw_ostream::write(char const*, unsigned long)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::raw_ostream::operator<<(std::string const&)': /home/varosi/haskell/llvm/include/llvm/Support/raw_ostream.h:177: undefined reference to `llvm::raw_ostream::write(char const*, unsigned long)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::ParsePattern(llvm::StringRef, llvm::StringRef, llvm::SourceMgr&, unsigned int)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:176: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:182: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:183: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:198: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:202: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:234: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:247: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:260: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:269: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:/home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:277: more undefined references to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' follow /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::ParsePattern(llvm::StringRef, llvm::StringRef, llvm::SourceMgr&, unsigned int)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:313: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:314: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:315: undefined reference to `llvm::Regex::escape(llvm::StringRef)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::AddRegExToRegEx(llvm::StringRef, unsigned int&, llvm::SourceMgr&)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:324: undefined reference to `llvm::Regex::Regex(llvm::StringRef, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:326: undefined reference to `llvm::Regex::isValid(std::string&)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:328: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:333: undefined reference to `llvm::Regex::getNumMatches() const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:334: undefined reference to `llvm::Regex::~Regex()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::Match(llvm::StringRef, unsigned long&, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:376: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:403: undefined reference to `llvm::Regex::escape(llvm::StringRef)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:418: undefined reference to `llvm::Regex::Regex(llvm::StringRef, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:418: undefined reference to `llvm::Regex::match(llvm::StringRef, llvm::SmallVectorImpl<llvm::StringRef>*)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:418: undefined reference to `llvm::Regex::~Regex()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::ComputeMatchDistance(llvm::StringRef, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator> const&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:452: undefined reference to `llvm::StringRef::edit_distance(llvm::StringRef, bool, unsigned int) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::PrintFailureInfo(llvm::SourceMgr const&, llvm::StringRef, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator> const&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:462: undefined reference to `llvm::raw_svector_ostream::raw_svector_ostream(llvm::SmallVectorImpl<char>&)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:468: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:469: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:472: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:480: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:483: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:/home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:484: more undefined references to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' follow /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::PrintFailureInfo(llvm::SourceMgr const&, llvm::StringRef, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator> const&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:489: undefined reference to `llvm::raw_svector_ostream::str()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:489: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:490: undefined reference to `llvm::raw_svector_ostream::~raw_svector_ostream()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:527: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::FindRegexVarEnd(llvm::StringRef, llvm::SourceMgr&)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:558: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `CanonicalizeInputFile': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:655: undefined reference to `llvm::MemoryBuffer::getMemBufferCopy(llvm::StringRef, llvm::StringRef)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `CheckTypeSize': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:687: undefined reference to `llvm::llvm_unreachable_internal(char const*, char const*, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:690: undefined reference to `llvm::llvm_unreachable_internal(char const*, char const*, unsigned int)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `FindFirstCandidateMatch': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:748: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `ReadCheckFile': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:825: undefined reference to `llvm::MemoryBuffer::getFileOrSTDIN(llvm::StringRef, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>
&, long)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:827: undefined reference to `llvm::error_code::message() const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:826: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:868: undefined reference to `llvm::StringRef::find_first_not_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:871: undefined reference to `llvm::StringRef::find_first_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:886: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:897: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:926: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:930: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:932: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:935: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `PrintCheckFailed': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:947: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:951: undefined reference to `llvm::StringRef::find_first_not_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:954: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `CountNumNewlinesBetween': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:972: undefined reference to `llvm::StringRef::find_first_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `CheckString::CheckNext(llvm::SourceMgr const&, llvm::StringRef) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1036: undefined reference to `llvm::SourceMgr::FindBufferContainingLoc(llvm::SMLoc) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1046: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1048: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1050: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1056: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1058: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:/home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1060: more undefined references to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' follow /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `ValidateCheckPrefix': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1170: undefined reference to `llvm::Regex::Regex(llvm::StringRef, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1171: undefined reference to `llvm::Regex::match(llvm::StringRef, llvm::SmallVectorImpl<llvm::StringRef>*)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1171: undefined reference to `llvm::Regex::~Regex()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `main': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1199: undefined reference to `llvm::sys::PrintStackTraceOnErrorSignal()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1201: undefined reference to `llvm::cl::ParseCommandLineOptions(int, char const* const*, char const*)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1204: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1222: undefined reference to `llvm::MemoryBuffer::getFileOrSTDIN(llvm::StringRef, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> &, long)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1224: undefined reference to `llvm::error_code::message() const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1223: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1229: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1298: undefined reference to `llvm::SourceMgr::~SourceMgr()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::GenericOptionValue::GenericOptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:355: undefined reference to `vtable for llvm::cl::GenericOptionValue' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::OptionValue<std::string>::~OptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:458: undefined reference to `vtable for llvm::cl::OptionValue<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::basic_parser_impl::basic_parser_impl()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:700: undefined reference to `vtable for llvm::cl::basic_parser_impl' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::basic_parser<std::string>::~basic_parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:739: undefined reference to `vtable for llvm::cl::basic_parser<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::parser<std::string>::~parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:912: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::opt<llvm::cl::FormattingFlags, llvm::cl::desc, llvm::cl::NumOccurrencesFlag>(llvm::cl::FormattingFlags const&, llvm::cl::desc const&, llvm::cl::NumOccurrencesFlag const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1225: undefined reference to `vtable for llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1225: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1227: undefined reference to `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::done()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::opt<char [11], llvm::cl::desc, llvm::cl::initializer<char [2]>, llvm::cl::value_desc>(char const (&) [11], llvm::cl::desc const&, llvm::cl::initializer<char [2]> const&, llvm::cl::value_desc const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1232: undefined reference to `vtable for llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1232: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1234: undefined reference to `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::done()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::list<char [13], llvm::cl::desc>(char const (&) [13], llvm::cl::desc const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1385: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::basic_parser<bool>::basic_parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:739: undefined reference to `vtable for llvm::cl::basic_parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::basic_parser<bool>::~basic_parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:739: undefined reference to `vtable for llvm::cl::basic_parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::parser<bool>::parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:749: undefined reference to `vtable for llvm::cl::parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::parser<bool>::~parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:749: undefined reference to `vtable for llvm::cl::parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::opt<bool, false, llvm::cl::parser<bool> >::opt<char [18], llvm::cl::desc>(char const (&) [18], llvm::cl::desc const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1217: undefined reference to `vtable for llvm::cl::opt<bool, false, llvm::cl::parser<bool> >' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1219: undefined reference to `llvm::cl::opt<bool, false, llvm::cl::parser<bool> ::done()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `std::enable_if<std::numeric_limits<int>::is_signed, bool>::type llvm::StringRef::getAsInteger<int>(unsigned int, int&) const': /home/varosi/haskell/llvm/include/llvm/ADT/StringRef.h:346: undefined reference to `llvm::getAsSignedInteger(llvm::StringRef, unsigned int, long long&)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>::find(llvm::StringRef)': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:274: undefined reference to `llvm::StringMapImpl::FindKey(llvm::StringRef) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>::find(llvm::StringRef) const': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:280: undefined reference to `llvm::StringMapImpl::FindKey(llvm::StringRef) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::done()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1362: undefined reference to `llvm::cl::Option::addArgument()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::StringMapEntry<llvm::StringRef>& llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>::GetOrCreateValue<llvm::StringRef>(llvm::StringRef, llvm::StringRef)': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:345: undefined reference to `llvm::StringMapImpl::LookupBucketFor(llvm::StringRef)' /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:362: undefined reference to `llvm::StringMapImpl::RehashTable()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::SmallVectorTemplateCommon<char, void>::grow_pod(unsigned long, unsigned long)': /home/varosi/haskell/llvm/include/llvm/ADT/SmallVector.h:82: undefined reference to `llvm::SmallVectorBase::grow_pod(void*, unsigned long, unsigned long)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::StringMapEntry<char>& llvm::StringMap<char, llvm::MallocAllocator>::GetOrCreateValue<char>(llvm::StringRef, char)': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:345: undefined reference to `llvm::StringMapImpl::LookupBucketFor(llvm::StringRef)' /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:362: undefined reference to `llvm::StringMapImpl::RehashTable()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `void llvm::cl::initializer<char [2]>::apply<llvm::cl::opt<std::string, false, llvm::cl::parser<std::string>
(llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >&) const': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:315: undefined reference to `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::setInitialValue(std::string const&)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl4listISsbNS0_6parserISsEEEE[_ZTVN4llvm2cl4listISsbNS0_6parserISsEEEE]+0x20): undefined reference to `llvm::cl::Option::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl11OptionValueIbEE[_ZTVN4llvm2cl11OptionValueIbEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl15OptionValueBaseIbLb0EEE[_ZTVN4llvm2cl15OptionValueBaseIbLb0EEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl15OptionValueCopyIbEE[_ZTVN4llvm2cl15OptionValueCopyIbEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl15OptionValueCopyISsEE[_ZTVN4llvm2cl15OptionValueCopyISsEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::~opt()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1156: undefined reference to `vtable for llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::opt<bool, false, llvm::cl::parser<bool> >::~opt()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1156: undefined reference to `vtable for llvm::cl::opt<bool, false, llvm::cl::parser<bool> >' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::PrettyStackTraceProgram::~PrettyStackTraceProgram()': /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:58: undefined reference to `vtable for llvm::PrettyStackTraceProgram' /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:58: undefined reference to `llvm::PrettyStackTraceEntry::~PrettyStackTraceEntry()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::getOptionWidth() const': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1352: undefined reference to `llvm::cl::basic_parser_impl::getOptionWidth(llvm::cl::Option const&) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::printOptionInfo(unsigned long) const': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1354: undefined reference to `llvm::cl::basic_parser_impl::printOptionInfo(llvm::cl::Option const&, unsigned long) const' collect2: error: ld returned 1 exit status make[2]: *** [/home/varosi/haskell/llvm/build/Debug+Asserts/bin/FileCheck] Error 1 make[2]: Leaving directory `/home/varosi/haskell/llvm/build/utils/FileCheck' make[1]: *** [FileCheck/.makeall] Error 2 make[1]: Leaving directory `/home/varosi/haskell/llvm/build/utils' make: *** [all] Error 1
Another thing is that the link from: http://www.haskell.org/haskellwiki/ARM which is: http://www.haskell.org/pipermail/cvs-ghc/2012-February/070791.html Is invalid and there could be some more information on the topic. I had to install GCC 4.7 to compile latest LLVM on my Ubuntu 12. What could be the problem with LLVM? 2014-04-03 17:13 GMT+03:00 Karel Gardas <karel.gardas@centrum.cz>:
On 04/ 3/14 04:05 PM, eng. Vassil Ognyanov Keremidchiev wrote:
Yes, but I don't know what is missing in my workflow.
I did not know if I need LLVM runtime on my target ARM machine.
No, you don't need LLVM runtime. You just need LLVM llc/opt if you'd like to cross-compile and build registerised ARM binaries.
Do I
need? I read that there is unregisterised version for ARM that doesn't need LLVM. So I just could build Haskell cross-compiler that could work on my Ubuntu and create binaries for my ARM v7 machine.
If you'd like to use unregisterised /via-C binaries, then you don't need LLVM at all, you just need to configure with --enable-unregisterised IIRC, but I've not tested that so you are on your own.
Also it comes with its own performance penalty of course: http://ghcarm.wordpress.com/2011/08/07/nofib-benchmarking/
Karel
May be the problem is: arm-linux-gnueabi-gcc --version gives me 4.6.3 ? Is it possible to install earlier LLVM version? 2014-04-03 20:47 GMT+03:00 eng. Vassil Ognyanov Keremidchiev < varosi@gmail.com>:
I'm trying to compile LLVM as is described in: http://bgamari.github.io/posts/cross-compiling_llvm.html without success. This is the error:
llvm[1]: Compiling StringMatcher.cpp for Debug+Asserts build llvm[1]: Compiling TGLexer.cpp for Debug+Asserts build llvm[1]: Compiling TGParser.cpp for Debug+Asserts build llvm[1]: Compiling TableGenBackend.cpp for Debug+Asserts build llvm[1]: Building Debug+Asserts Archive Library libLLVMTableGen.a make[1]: Leaving directory `/home/varosi/haskell/llvm/build/lib/TableGen' make[1]: Entering directory `/home/varosi/haskell/llvm/build/utils' make[2]: Entering directory `/home/varosi/haskell/llvm/build/utils/FileCheck' llvm[2]: Compiling FileCheck.cpp for Debug+Asserts build llvm[2]: Linking Debug+Asserts executable FileCheck /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::Option::Option(llvm::cl::NumOccurrencesFlag, llvm::cl::OptionHidden)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:242: undefined reference to `vtable for llvm::cl::Option' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:242: undefined reference to `llvm::cl::GeneralCategory' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::Option::~Option()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:281: undefined reference to `vtable for llvm::cl::Option' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::GenericOptionValue::~GenericOptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:356: undefined reference to `vtable for llvm::cl::GenericOptionValue' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::OptionValue<std::string>::OptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:461: undefined reference to `vtable for llvm::cl::OptionValue<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::basic_parser_impl::~basic_parser_impl()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:702: undefined reference to `vtable for llvm::cl::basic_parser_impl' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::PrettyStackTraceProgram::PrettyStackTraceProgram(int, char const* const*)': /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:63: undefined reference to `llvm::PrettyStackTraceEntry::PrettyStackTraceEntry()' /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:63: undefined reference to `vtable for llvm::PrettyStackTraceProgram' /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:64: undefined reference to `llvm::EnablePrettyStackTrace()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::raw_ostream::operator<<(char)': /home/varosi/haskell/llvm/include/llvm/Support/raw_ostream.h:136: undefined reference to `llvm::raw_ostream::write(unsigned char)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::raw_ostream::operator<<(llvm::StringRef)': /home/varosi/haskell/llvm/include/llvm/Support/raw_ostream.h:161: undefined reference to `llvm::raw_ostream::write(char const*, unsigned long)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::raw_ostream::operator<<(std::string const&)': /home/varosi/haskell/llvm/include/llvm/Support/raw_ostream.h:177: undefined reference to `llvm::raw_ostream::write(char const*, unsigned long)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::ParsePattern(llvm::StringRef, llvm::StringRef, llvm::SourceMgr&, unsigned int)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:176: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:182: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:183: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:198: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:202: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:234: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:247: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:260: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:269: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:/home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:277: more undefined references to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' follow /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::ParsePattern(llvm::StringRef, llvm::StringRef, llvm::SourceMgr&, unsigned int)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:313: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:314: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:315: undefined reference to `llvm::Regex::escape(llvm::StringRef)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::AddRegExToRegEx(llvm::StringRef, unsigned int&, llvm::SourceMgr&)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:324: undefined reference to `llvm::Regex::Regex(llvm::StringRef, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:326: undefined reference to `llvm::Regex::isValid(std::string&)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:328: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:333: undefined reference to `llvm::Regex::getNumMatches() const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:334: undefined reference to `llvm::Regex::~Regex()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::Match(llvm::StringRef, unsigned long&, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:376: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:403: undefined reference to `llvm::Regex::escape(llvm::StringRef)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:418: undefined reference to `llvm::Regex::Regex(llvm::StringRef, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:418: undefined reference to `llvm::Regex::match(llvm::StringRef, llvm::SmallVectorImpl<llvm::StringRef>*)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:418: undefined reference to `llvm::Regex::~Regex()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::ComputeMatchDistance(llvm::StringRef, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator> const&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:452: undefined reference to `llvm::StringRef::edit_distance(llvm::StringRef, bool, unsigned int) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::PrintFailureInfo(llvm::SourceMgr const&, llvm::StringRef, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator> const&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:462: undefined reference to `llvm::raw_svector_ostream::raw_svector_ostream(llvm::SmallVectorImpl<char>&)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:468: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:469: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:472: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:480: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:483: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:/home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:484: more undefined references to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' follow /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::PrintFailureInfo(llvm::SourceMgr const&, llvm::StringRef, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator> const&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:489: undefined reference to `llvm::raw_svector_ostream::str()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:489: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:490: undefined reference to `llvm::raw_svector_ostream::~raw_svector_ostream()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:527: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::FindRegexVarEnd(llvm::StringRef, llvm::SourceMgr&)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:558: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `CanonicalizeInputFile': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:655: undefined reference to `llvm::MemoryBuffer::getMemBufferCopy(llvm::StringRef, llvm::StringRef)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `CheckTypeSize': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:687: undefined reference to `llvm::llvm_unreachable_internal(char const*, char const*, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:690: undefined reference to `llvm::llvm_unreachable_internal(char const*, char const*, unsigned int)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `FindFirstCandidateMatch': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:748: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `ReadCheckFile': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:825: undefined reference to `llvm::MemoryBuffer::getFileOrSTDIN(llvm::StringRef, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>
&, long)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:827: undefined reference to `llvm::error_code::message() const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:826: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:868: undefined reference to `llvm::StringRef::find_first_not_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:871: undefined reference to `llvm::StringRef::find_first_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:886: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:897: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:926: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:930: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:932: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:935: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `PrintCheckFailed': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:947: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:951: undefined reference to `llvm::StringRef::find_first_not_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:954: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `CountNumNewlinesBetween': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:972: undefined reference to `llvm::StringRef::find_first_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `CheckString::CheckNext(llvm::SourceMgr const&, llvm::StringRef) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1036: undefined reference to `llvm::SourceMgr::FindBufferContainingLoc(llvm::SMLoc) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1046: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1048: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1050: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1056: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1058: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:/home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1060: more undefined references to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' follow /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `ValidateCheckPrefix': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1170: undefined reference to `llvm::Regex::Regex(llvm::StringRef, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1171: undefined reference to `llvm::Regex::match(llvm::StringRef, llvm::SmallVectorImpl<llvm::StringRef>*)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1171: undefined reference to `llvm::Regex::~Regex()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `main': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1199: undefined reference to `llvm::sys::PrintStackTraceOnErrorSignal()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1201: undefined reference to `llvm::cl::ParseCommandLineOptions(int, char const* const*, char const*)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1204: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1222: undefined reference to `llvm::MemoryBuffer::getFileOrSTDIN(llvm::StringRef, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> &, long)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1224: undefined reference to `llvm::error_code::message() const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1223: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1229: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1298: undefined reference to `llvm::SourceMgr::~SourceMgr()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::GenericOptionValue::GenericOptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:355: undefined reference to `vtable for llvm::cl::GenericOptionValue' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::OptionValue<std::string>::~OptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:458: undefined reference to `vtable for llvm::cl::OptionValue<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::basic_parser_impl::basic_parser_impl()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:700: undefined reference to `vtable for llvm::cl::basic_parser_impl' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::basic_parser<std::string>::~basic_parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:739: undefined reference to `vtable for llvm::cl::basic_parser<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::parser<std::string>::~parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:912: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::opt<llvm::cl::FormattingFlags, llvm::cl::desc, llvm::cl::NumOccurrencesFlag>(llvm::cl::FormattingFlags const&, llvm::cl::desc const&, llvm::cl::NumOccurrencesFlag const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1225: undefined reference to `vtable for llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1225: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1227: undefined reference to `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::done()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::opt<char [11], llvm::cl::desc, llvm::cl::initializer<char [2]>, llvm::cl::value_desc>(char const (&) [11], llvm::cl::desc const&, llvm::cl::initializer<char [2]> const&, llvm::cl::value_desc const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1232: undefined reference to `vtable for llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1232: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1234: undefined reference to `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::done()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::list<char [13], llvm::cl::desc>(char const (&) [13], llvm::cl::desc const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1385: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::basic_parser<bool>::basic_parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:739: undefined reference to `vtable for llvm::cl::basic_parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::basic_parser<bool>::~basic_parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:739: undefined reference to `vtable for llvm::cl::basic_parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::parser<bool>::parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:749: undefined reference to `vtable for llvm::cl::parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::parser<bool>::~parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:749: undefined reference to `vtable for llvm::cl::parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::opt<bool, false, llvm::cl::parser<bool> >::opt<char [18], llvm::cl::desc>(char const (&) [18], llvm::cl::desc const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1217: undefined reference to `vtable for llvm::cl::opt<bool, false, llvm::cl::parser<bool> >' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1219: undefined reference to `llvm::cl::opt<bool, false, llvm::cl::parser<bool> ::done()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `std::enable_if<std::numeric_limits<int>::is_signed, bool>::type llvm::StringRef::getAsInteger<int>(unsigned int, int&) const': /home/varosi/haskell/llvm/include/llvm/ADT/StringRef.h:346: undefined reference to `llvm::getAsSignedInteger(llvm::StringRef, unsigned int, long long&)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>::find(llvm::StringRef)': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:274: undefined reference to `llvm::StringMapImpl::FindKey(llvm::StringRef) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>::find(llvm::StringRef) const': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:280: undefined reference to `llvm::StringMapImpl::FindKey(llvm::StringRef) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::done()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1362: undefined reference to `llvm::cl::Option::addArgument()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::StringMapEntry<llvm::StringRef>& llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>::GetOrCreateValue<llvm::StringRef>(llvm::StringRef, llvm::StringRef)': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:345: undefined reference to `llvm::StringMapImpl::LookupBucketFor(llvm::StringRef)' /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:362: undefined reference to `llvm::StringMapImpl::RehashTable()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::SmallVectorTemplateCommon<char, void>::grow_pod(unsigned long, unsigned long)': /home/varosi/haskell/llvm/include/llvm/ADT/SmallVector.h:82: undefined reference to `llvm::SmallVectorBase::grow_pod(void*, unsigned long, unsigned long)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::StringMapEntry<char>& llvm::StringMap<char, llvm::MallocAllocator>::GetOrCreateValue<char>(llvm::StringRef, char)': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:345: undefined reference to `llvm::StringMapImpl::LookupBucketFor(llvm::StringRef)' /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:362: undefined reference to `llvm::StringMapImpl::RehashTable()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `void llvm::cl::initializer<char [2]>::apply<llvm::cl::opt<std::string, false, llvm::cl::parser<std::string>
(llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >&) const': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:315: undefined reference to `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::setInitialValue(std::string const&)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl4listISsbNS0_6parserISsEEEE[_ZTVN4llvm2cl4listISsbNS0_6parserISsEEEE]+0x20): undefined reference to `llvm::cl::Option::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl11OptionValueIbEE[_ZTVN4llvm2cl11OptionValueIbEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl15OptionValueBaseIbLb0EEE[_ZTVN4llvm2cl15OptionValueBaseIbLb0EEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl15OptionValueCopyIbEE[_ZTVN4llvm2cl15OptionValueCopyIbEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl15OptionValueCopyISsEE[_ZTVN4llvm2cl15OptionValueCopyISsEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::~opt()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1156: undefined reference to `vtable for llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::opt<bool, false, llvm::cl::parser<bool> >::~opt()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1156: undefined reference to `vtable for llvm::cl::opt<bool, false, llvm::cl::parser<bool> >' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::PrettyStackTraceProgram::~PrettyStackTraceProgram()': /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:58: undefined reference to `vtable for llvm::PrettyStackTraceProgram' /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:58: undefined reference to `llvm::PrettyStackTraceEntry::~PrettyStackTraceEntry()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::getOptionWidth() const': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1352: undefined reference to `llvm::cl::basic_parser_impl::getOptionWidth(llvm::cl::Option const&) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::printOptionInfo(unsigned long) const': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1354: undefined reference to `llvm::cl::basic_parser_impl::printOptionInfo(llvm::cl::Option const&, unsigned long) const' collect2: error: ld returned 1 exit status make[2]: *** [/home/varosi/haskell/llvm/build/Debug+Asserts/bin/FileCheck] Error 1 make[2]: Leaving directory `/home/varosi/haskell/llvm/build/utils/FileCheck' make[1]: *** [FileCheck/.makeall] Error 2 make[1]: Leaving directory `/home/varosi/haskell/llvm/build/utils' make: *** [all] Error 1
Another thing is that the link from: http://www.haskell.org/haskellwiki/ARM
which is: http://www.haskell.org/pipermail/cvs-ghc/2012-February/070791.html
Is invalid and there could be some more information on the topic. I had to install GCC 4.7 to compile latest LLVM on my Ubuntu 12.
What could be the problem with LLVM?
2014-04-03 17:13 GMT+03:00 Karel Gardas <karel.gardas@centrum.cz>:
On 04/ 3/14 04:05 PM, eng. Vassil Ognyanov Keremidchiev wrote:
Yes, but I don't know what is missing in my workflow.
I did not know if I need LLVM runtime on my target ARM machine.
No, you don't need LLVM runtime. You just need LLVM llc/opt if you'd like to cross-compile and build registerised ARM binaries.
Do I
need? I read that there is unregisterised version for ARM that doesn't need LLVM. So I just could build Haskell cross-compiler that could work on my Ubuntu and create binaries for my ARM v7 machine.
If you'd like to use unregisterised /via-C binaries, then you don't need LLVM at all, you just need to configure with --enable-unregisterised IIRC, but I've not tested that so you are on your own.
Also it comes with its own performance penalty of course: http://ghcarm.wordpress.com/2011/08/07/nofib-benchmarking/
Karel
I don't understand why you are trying to cross-compile LLVM? I've though you'd like to cross-compile GHC itself... Karel On 04/ 3/14 08:00 PM, eng. Vassil Ognyanov Keremidchiev wrote:
May be the problem is: arm-linux-gnueabi-gcc --version gives me 4.6.3 ?
Is it possible to install earlier LLVM version?
2014-04-03 20:47 GMT+03:00 eng. Vassil Ognyanov Keremidchiev <varosi@gmail.com <mailto:varosi@gmail.com>>:
I'm trying to compile LLVM as is described in: http://bgamari.github.io/posts/cross-compiling_llvm.html without success. This is the error:
llvm[1]: Compiling StringMatcher.cpp for Debug+Asserts build llvm[1]: Compiling TGLexer.cpp for Debug+Asserts build llvm[1]: Compiling TGParser.cpp for Debug+Asserts build llvm[1]: Compiling TableGenBackend.cpp for Debug+Asserts build llvm[1]: Building Debug+Asserts Archive Library libLLVMTableGen.a make[1]: Leaving directory `/home/varosi/haskell/llvm/build/lib/TableGen' make[1]: Entering directory `/home/varosi/haskell/llvm/build/utils' make[2]: Entering directory `/home/varosi/haskell/llvm/build/utils/FileCheck' llvm[2]: Compiling FileCheck.cpp for Debug+Asserts build llvm[2]: Linking Debug+Asserts executable FileCheck /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::Option::Option(llvm::cl::NumOccurrencesFlag, llvm::cl::OptionHidden)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:242: undefined reference to `vtable for llvm::cl::Option' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:242: undefined reference to `llvm::cl::GeneralCategory' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::Option::~Option()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:281: undefined reference to `vtable for llvm::cl::Option' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::GenericOptionValue::~GenericOptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:356: undefined reference to `vtable for llvm::cl::GenericOptionValue' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::OptionValue<std::string>::OptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:461: undefined reference to `vtable for llvm::cl::OptionValue<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::basic_parser_impl::~basic_parser_impl()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:702: undefined reference to `vtable for llvm::cl::basic_parser_impl' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::PrettyStackTraceProgram::PrettyStackTraceProgram(int, char const* const*)': /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:63: undefined reference to `llvm::PrettyStackTraceEntry::PrettyStackTraceEntry()' /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:63: undefined reference to `vtable for llvm::PrettyStackTraceProgram' /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:64: undefined reference to `llvm::EnablePrettyStackTrace()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::raw_ostream::operator<<(char)': /home/varosi/haskell/llvm/include/llvm/Support/raw_ostream.h:136: undefined reference to `llvm::raw_ostream::write(unsigned char)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::raw_ostream::operator<<(llvm::StringRef)': /home/varosi/haskell/llvm/include/llvm/Support/raw_ostream.h:161: undefined reference to `llvm::raw_ostream::write(char const*, unsigned long)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::raw_ostream::operator<<(std::string const&)': /home/varosi/haskell/llvm/include/llvm/Support/raw_ostream.h:177: undefined reference to `llvm::raw_ostream::write(char const*, unsigned long)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::ParsePattern(llvm::StringRef, llvm::StringRef, llvm::SourceMgr&, unsigned int)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:176: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:182: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:183: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:198: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:202: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:234: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:247: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:260: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:269: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:/home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:277: more undefined references to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' follow /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::ParsePattern(llvm::StringRef, llvm::StringRef, llvm::SourceMgr&, unsigned int)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:313: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:314: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:315: undefined reference to `llvm::Regex::escape(llvm::StringRef)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::AddRegExToRegEx(llvm::StringRef, unsigned int&, llvm::SourceMgr&)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:324: undefined reference to `llvm::Regex::Regex(llvm::StringRef, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:326: undefined reference to `llvm::Regex::isValid(std::string&)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:328: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:333: undefined reference to `llvm::Regex::getNumMatches() const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:334: undefined reference to `llvm::Regex::~Regex()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::Match(llvm::StringRef, unsigned long&, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:376: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:403: undefined reference to `llvm::Regex::escape(llvm::StringRef)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:418: undefined reference to `llvm::Regex::Regex(llvm::StringRef, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:418: undefined reference to `llvm::Regex::match(llvm::StringRef, llvm::SmallVectorImpl<llvm::StringRef>*)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:418: undefined reference to `llvm::Regex::~Regex()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::ComputeMatchDistance(llvm::StringRef, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator> const&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:452: undefined reference to `llvm::StringRef::edit_distance(llvm::StringRef, bool, unsigned int) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::PrintFailureInfo(llvm::SourceMgr const&, llvm::StringRef, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator> const&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:462: undefined reference to `llvm::raw_svector_ostream::raw_svector_ostream(llvm::SmallVectorImpl<char>&)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:468: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:469: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:472: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:480: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:483: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:/home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:484: more undefined references to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' follow /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::PrintFailureInfo(llvm::SourceMgr const&, llvm::StringRef, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator> const&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:489: undefined reference to `llvm::raw_svector_ostream::str()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:489: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:490: undefined reference to `llvm::raw_svector_ostream::~raw_svector_ostream()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:527: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::FindRegexVarEnd(llvm::StringRef, llvm::SourceMgr&)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:558: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `CanonicalizeInputFile': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:655: undefined reference to `llvm::MemoryBuffer::getMemBufferCopy(llvm::StringRef, llvm::StringRef)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `CheckTypeSize': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:687: undefined reference to `llvm::llvm_unreachable_internal(char const*, char const*, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:690: undefined reference to `llvm::llvm_unreachable_internal(char const*, char const*, unsigned int)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `FindFirstCandidateMatch': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:748: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `ReadCheckFile': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:825: undefined reference to `llvm::MemoryBuffer::getFileOrSTDIN(llvm::StringRef, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >&, long)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:827: undefined reference to `llvm::error_code::message() const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:826: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:868: undefined reference to `llvm::StringRef::find_first_not_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:871: undefined reference to `llvm::StringRef::find_first_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:886: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:897: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:926: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:930: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:932: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:935: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `PrintCheckFailed': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:947: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:951: undefined reference to `llvm::StringRef::find_first_not_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:954: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `CountNumNewlinesBetween': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:972: undefined reference to `llvm::StringRef::find_first_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `CheckString::CheckNext(llvm::SourceMgr const&, llvm::StringRef) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1036: undefined reference to `llvm::SourceMgr::FindBufferContainingLoc(llvm::SMLoc) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1046: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1048: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1050: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1056: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1058: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:/home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1060: more undefined references to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' follow /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `ValidateCheckPrefix': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1170: undefined reference to `llvm::Regex::Regex(llvm::StringRef, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1171: undefined reference to `llvm::Regex::match(llvm::StringRef, llvm::SmallVectorImpl<llvm::StringRef>*)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1171: undefined reference to `llvm::Regex::~Regex()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `main': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1199: undefined reference to `llvm::sys::PrintStackTraceOnErrorSignal()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1201: undefined reference to `llvm::cl::ParseCommandLineOptions(int, char const* const*, char const*)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1204: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1222: undefined reference to `llvm::MemoryBuffer::getFileOrSTDIN(llvm::StringRef, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >&, long)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1224: undefined reference to `llvm::error_code::message() const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1223: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1229: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1298: undefined reference to `llvm::SourceMgr::~SourceMgr()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::GenericOptionValue::GenericOptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:355: undefined reference to `vtable for llvm::cl::GenericOptionValue' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::OptionValue<std::string>::~OptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:458: undefined reference to `vtable for llvm::cl::OptionValue<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::basic_parser_impl::basic_parser_impl()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:700: undefined reference to `vtable for llvm::cl::basic_parser_impl' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::basic_parser<std::string>::~basic_parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:739: undefined reference to `vtable for llvm::cl::basic_parser<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::parser<std::string>::~parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:912: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::opt<llvm::cl::FormattingFlags, llvm::cl::desc, llvm::cl::NumOccurrencesFlag>(llvm::cl::FormattingFlags const&, llvm::cl::desc const&, llvm::cl::NumOccurrencesFlag const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1225: undefined reference to `vtable for llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1225: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1227: undefined reference to `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::done()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::opt<char [11], llvm::cl::desc, llvm::cl::initializer<char [2]>, llvm::cl::value_desc>(char const (&) [11], llvm::cl::desc const&, llvm::cl::initializer<char [2]> const&, llvm::cl::value_desc const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1232: undefined reference to `vtable for llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1232: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1234: undefined reference to `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::done()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::list<char [13], llvm::cl::desc>(char const (&) [13], llvm::cl::desc const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1385: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::basic_parser<bool>::basic_parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:739: undefined reference to `vtable for llvm::cl::basic_parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::basic_parser<bool>::~basic_parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:739: undefined reference to `vtable for llvm::cl::basic_parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::parser<bool>::parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:749: undefined reference to `vtable for llvm::cl::parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::parser<bool>::~parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:749: undefined reference to `vtable for llvm::cl::parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::opt<bool, false, llvm::cl::parser<bool> >::opt<char [18], llvm::cl::desc>(char const (&) [18], llvm::cl::desc const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1217: undefined reference to `vtable for llvm::cl::opt<bool, false, llvm::cl::parser<bool> >' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1219: undefined reference to `llvm::cl::opt<bool, false, llvm::cl::parser<bool> >::done()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `std::enable_if<std::numeric_limits<int>::is_signed, bool>::type llvm::StringRef::getAsInteger<int>(unsigned int, int&) const': /home/varosi/haskell/llvm/include/llvm/ADT/StringRef.h:346: undefined reference to `llvm::getAsSignedInteger(llvm::StringRef, unsigned int, long long&)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>::find(llvm::StringRef)': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:274: undefined reference to `llvm::StringMapImpl::FindKey(llvm::StringRef) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>::find(llvm::StringRef) const': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:280: undefined reference to `llvm::StringMapImpl::FindKey(llvm::StringRef) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::done()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1362: undefined reference to `llvm::cl::Option::addArgument()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::StringMapEntry<llvm::StringRef>& llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>::GetOrCreateValue<llvm::StringRef>(llvm::StringRef, llvm::StringRef)': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:345: undefined reference to `llvm::StringMapImpl::LookupBucketFor(llvm::StringRef)' /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:362: undefined reference to `llvm::StringMapImpl::RehashTable()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::SmallVectorTemplateCommon<char, void>::grow_pod(unsigned long, unsigned long)': /home/varosi/haskell/llvm/include/llvm/ADT/SmallVector.h:82: undefined reference to `llvm::SmallVectorBase::grow_pod(void*, unsigned long, unsigned long)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::StringMapEntry<char>& llvm::StringMap<char, llvm::MallocAllocator>::GetOrCreateValue<char>(llvm::StringRef, char)': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:345: undefined reference to `llvm::StringMapImpl::LookupBucketFor(llvm::StringRef)' /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:362: undefined reference to `llvm::StringMapImpl::RehashTable()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `void llvm::cl::initializer<char [2]>::apply<llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> > >(llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >&) const': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:315: undefined reference to `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::setInitialValue(std::string const&)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl4listISsbNS0_6parserISsEEEE[_ZTVN4llvm2cl4listISsbNS0_6parserISsEEEE]+0x20): undefined reference to `llvm::cl::Option::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl11OptionValueIbEE[_ZTVN4llvm2cl11OptionValueIbEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl15OptionValueBaseIbLb0EEE[_ZTVN4llvm2cl15OptionValueBaseIbLb0EEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl15OptionValueCopyIbEE[_ZTVN4llvm2cl15OptionValueCopyIbEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl15OptionValueCopyISsEE[_ZTVN4llvm2cl15OptionValueCopyISsEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::~opt()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1156: undefined reference to `vtable for llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::opt<bool, false, llvm::cl::parser<bool> >::~opt()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1156: undefined reference to `vtable for llvm::cl::opt<bool, false, llvm::cl::parser<bool> >' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::PrettyStackTraceProgram::~PrettyStackTraceProgram()': /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:58: undefined reference to `vtable for llvm::PrettyStackTraceProgram' /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:58: undefined reference to `llvm::PrettyStackTraceEntry::~PrettyStackTraceEntry()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::getOptionWidth() const': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1352: undefined reference to `llvm::cl::basic_parser_impl::getOptionWidth(llvm::cl::Option const&) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::printOptionInfo(unsigned long) const': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1354: undefined reference to `llvm::cl::basic_parser_impl::printOptionInfo(llvm::cl::Option const&, unsigned long) const' collect2: error: ld returned 1 exit status make[2]: *** [/home/varosi/haskell/llvm/build/Debug+Asserts/bin/FileCheck] Error 1 make[2]: Leaving directory `/home/varosi/haskell/llvm/build/utils/FileCheck' make[1]: *** [FileCheck/.makeall] Error 2 make[1]: Leaving directory `/home/varosi/haskell/llvm/build/utils' make: *** [all] Error 1
Another thing is that the link from: http://www.haskell.org/haskellwiki/ARM
which is: http://www.haskell.org/pipermail/cvs-ghc/2012-February/070791.html
Is invalid and there could be some more information on the topic. I had to install GCC 4.7 to compile latest LLVM on my Ubuntu 12.
What could be the problem with LLVM?
2014-04-03 17:13 GMT+03:00 Karel Gardas <karel.gardas@centrum.cz <mailto:karel.gardas@centrum.cz>>:
On 04/ 3/14 04:05 PM, eng. Vassil Ognyanov Keremidchiev wrote:
Yes, but I don't know what is missing in my workflow.
I did not know if I need LLVM runtime on my target ARM machine.
No, you don't need LLVM runtime. You just need LLVM llc/opt if you'd like to cross-compile and build registerised ARM binaries.
Do I need? I read that there is unregisterised version for ARM that doesn't need LLVM. So I just could build Haskell cross-compiler that could work on my Ubuntu and create binaries for my ARM v7 machine.
If you'd like to use unregisterised /via-C binaries, then you don't need LLVM at all, you just need to configure with --enable-unregisterised IIRC, but I've not tested that so you are on your own.
Also it comes with its own performance penalty of course: http://ghcarm.wordpress.com/__2011/08/07/nofib-benchmarking/ <http://ghcarm.wordpress.com/2011/08/07/nofib-benchmarking/>
Karel
I would like to build GHC as a cross-compiler. So it can still run on x86 Ubuntu, but producing code for ARM v7. What should I do? 2014-04-03 21:05 GMT+03:00 Karel Gardas <karel.gardas@centrum.cz>:
I don't understand why you are trying to cross-compile LLVM? I've though you'd like to cross-compile GHC itself...
Karel
On 04/ 3/14 08:00 PM, eng. Vassil Ognyanov Keremidchiev wrote:
May be the problem is: arm-linux-gnueabi-gcc --version gives me 4.6.3 ?
Is it possible to install earlier LLVM version?
2014-04-03 20:47 GMT+03:00 eng. Vassil Ognyanov Keremidchiev <varosi@gmail.com <mailto:varosi@gmail.com>>:
I'm trying to compile LLVM as is described in: http://bgamari.github.io/posts/cross-compiling_llvm.html without success. This is the error:
llvm[1]: Compiling StringMatcher.cpp for Debug+Asserts build llvm[1]: Compiling TGLexer.cpp for Debug+Asserts build llvm[1]: Compiling TGParser.cpp for Debug+Asserts build llvm[1]: Compiling TableGenBackend.cpp for Debug+Asserts build llvm[1]: Building Debug+Asserts Archive Library libLLVMTableGen.a make[1]: Leaving directory `/home/varosi/haskell/llvm/build/lib/TableGen' make[1]: Entering directory `/home/varosi/haskell/llvm/build/utils' make[2]: Entering directory `/home/varosi/haskell/llvm/build/utils/FileCheck' llvm[2]: Compiling FileCheck.cpp for Debug+Asserts build llvm[2]: Linking Debug+Asserts executable FileCheck /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::Option::Option(llvm::cl::NumOccurrencesFlag, llvm::cl::OptionHidden)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:242: undefined reference to `vtable for llvm::cl::Option' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:242: undefined reference to `llvm::cl::GeneralCategory' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::Option::~Option()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:281: undefined reference to `vtable for llvm::cl::Option' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::GenericOptionValue::~GenericOptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:356: undefined reference to `vtable for llvm::cl::GenericOptionValue' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::OptionValue<std::string>::OptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:461: undefined reference to `vtable for llvm::cl::OptionValue<std:: string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::basic_parser_impl::~basic_parser_impl()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:702: undefined reference to `vtable for llvm::cl::basic_parser_impl' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::PrettyStackTraceProgram::PrettyStackTraceProgram(int, char const* const*)': /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:63: undefined reference to `llvm::PrettyStackTraceEntry::PrettyStackTraceEntry()' /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:63: undefined reference to `vtable for llvm::PrettyStackTraceProgram' /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:64: undefined reference to `llvm::EnablePrettyStackTrace()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::raw_ostream::operator<<(char)': /home/varosi/haskell/llvm/include/llvm/Support/raw_ostream.h:136: undefined reference to `llvm::raw_ostream::write(unsigned char)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::raw_ostream::operator<<(llvm::StringRef)': /home/varosi/haskell/llvm/include/llvm/Support/raw_ostream.h:161: undefined reference to `llvm::raw_ostream::write(char const*, unsigned long)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::raw_ostream::operator<<(std::string const&)': /home/varosi/haskell/llvm/include/llvm/Support/raw_ostream.h:177: undefined reference to `llvm::raw_ostream::write(char const*, unsigned long)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `Pattern::ParsePattern(llvm::StringRef, llvm::StringRef, llvm::SourceMgr&, unsigned int)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:176: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:182: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:183: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:198: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:202: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:234: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:247: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:260: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:269: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o:/home/varosi/haskell/llvm/utils/ FileCheck/FileCheck.cpp:277: more undefined references to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' follow /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `Pattern::ParsePattern(llvm::StringRef, llvm::StringRef, llvm::SourceMgr&, unsigned int)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:313: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:314: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:315: undefined reference to `llvm::Regex::escape(llvm::StringRef)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `Pattern::AddRegExToRegEx(llvm::StringRef, unsigned int&, llvm::SourceMgr&)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:324: undefined reference to `llvm::Regex::Regex(llvm::StringRef, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:326: undefined reference to `llvm::Regex::isValid(std::string&)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:328: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:333: undefined reference to `llvm::Regex::getNumMatches() const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:334: undefined reference to `llvm::Regex::~Regex()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `Pattern::Match(llvm::StringRef, unsigned long&, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:376: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:403: undefined reference to `llvm::Regex::escape(llvm::StringRef)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:418: undefined reference to `llvm::Regex::Regex(llvm::StringRef, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:418: undefined reference to `llvm::Regex::match(llvm::StringRef, llvm::SmallVectorImpl<llvm::StringRef>*)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:418: undefined reference to `llvm::Regex::~Regex()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `Pattern::ComputeMatchDistance(llvm::StringRef, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator> const&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:452: undefined reference to `llvm::StringRef::edit_distance(llvm::StringRef, bool, unsigned int) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `Pattern::PrintFailureInfo(llvm::SourceMgr const&, llvm::StringRef, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator> const&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:462: undefined reference to `llvm::raw_svector_ostream::raw_svector_ostream(llvm:: SmallVectorImpl<char>&)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:468: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:469: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:472: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:480: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:483: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o:/home/varosi/haskell/llvm/utils/ FileCheck/FileCheck.cpp:484: more undefined references to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' follow /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `Pattern::PrintFailureInfo(llvm::SourceMgr const&, llvm::StringRef, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator> const&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:489: undefined reference to `llvm::raw_svector_ostream::str()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:489: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:490: undefined reference to `llvm::raw_svector_ostream::~raw_svector_ostream()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:527: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `Pattern::FindRegexVarEnd(llvm::StringRef, llvm::SourceMgr&)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:558: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `CanonicalizeInputFile': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:655: undefined reference to `llvm::MemoryBuffer::getMemBufferCopy(llvm::StringRef, llvm::StringRef)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `CheckTypeSize': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:687: undefined reference to `llvm::llvm_unreachable_internal(char const*, char const*, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:690: undefined reference to `llvm::llvm_unreachable_internal(char const*, char const*, unsigned int)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `FindFirstCandidateMatch': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:748: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `ReadCheckFile': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:825: undefined reference to `llvm::MemoryBuffer::getFileOrSTDIN(llvm::StringRef, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >&, long)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:827: undefined reference to `llvm::error_code::message() const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:826: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:868: undefined reference to `llvm::StringRef::find_first_not_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:871: undefined reference to `llvm::StringRef::find_first_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:886: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:897: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:926: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:930: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:932: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:935: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `PrintCheckFailed': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:947: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:951: undefined reference to `llvm::StringRef::find_first_not_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:954: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `CountNumNewlinesBetween': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:972: undefined reference to `llvm::StringRef::find_first_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `CheckString::CheckNext(llvm::SourceMgr const&, llvm::StringRef) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1036: undefined reference to `llvm::SourceMgr::FindBufferContainingLoc(llvm::SMLoc) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1046: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1048: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1050: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1056: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1058: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o:/home/varosi/haskell/llvm/utils/ FileCheck/FileCheck.cpp:1060: more undefined references to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' follow /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `ValidateCheckPrefix': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1170: undefined reference to `llvm::Regex::Regex(llvm::StringRef, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1171: undefined reference to `llvm::Regex::match(llvm::StringRef, llvm::SmallVectorImpl<llvm::StringRef>*)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1171: undefined reference to `llvm::Regex::~Regex()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `main': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1199: undefined reference to `llvm::sys::PrintStackTraceOnErrorSignal()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1201: undefined reference to `llvm::cl::ParseCommandLineOptions(int, char const* const*, char const*)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1204: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1222: undefined reference to `llvm::MemoryBuffer::getFileOrSTDIN(llvm::StringRef, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >&, long)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1224: undefined reference to `llvm::error_code::message() const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1223: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1229: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1298: undefined reference to `llvm::SourceMgr::~SourceMgr()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::GenericOptionValue::GenericOptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:355: undefined reference to `vtable for llvm::cl::GenericOptionValue' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::OptionValue<std::string>::~OptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:458: undefined reference to `vtable for llvm::cl::OptionValue<std:: string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::basic_parser_impl::basic_parser_impl()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:700: undefined reference to `vtable for llvm::cl::basic_parser_impl' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::basic_parser<std::string>::~basic_parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:739: undefined reference to `vtable for llvm::cl::basic_parser<std:: string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::parser<std::string>::~parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:912: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::opt<llvm::cl::FormattingFlags, llvm::cl::desc, llvm::cl::NumOccurrencesFlag>(llvm::cl::FormattingFlags const&, llvm::cl::desc const&, llvm::cl::NumOccurrencesFlag const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1225: undefined reference to `vtable for llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1225: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1227: undefined reference to `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::done()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::opt<char [11], llvm::cl::desc, llvm::cl::initializer<char [2]>, llvm::cl::value_desc>(char const (&) [11], llvm::cl::desc const&, llvm::cl::initializer<char [2]> const&, llvm::cl::value_desc const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1232: undefined reference to `vtable for llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1232: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1234: undefined reference to `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::done()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::list<char [13], llvm::cl::desc>(char const (&) [13], llvm::cl::desc const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1385: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::basic_parser<bool>::basic_parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:739: undefined reference to `vtable for llvm::cl::basic_parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::basic_parser<bool>::~basic_parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:739: undefined reference to `vtable for llvm::cl::basic_parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::parser<bool>::parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:749: undefined reference to `vtable for llvm::cl::parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::parser<bool>::~parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:749: undefined reference to `vtable for llvm::cl::parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::opt<bool, false, llvm::cl::parser<bool> >::opt<char [18], llvm::cl::desc>(char const (&) [18], llvm::cl::desc const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1217: undefined reference to `vtable for llvm::cl::opt<bool, false, llvm::cl::parser<bool> >' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1219: undefined reference to `llvm::cl::opt<bool, false, llvm::cl::parser<bool> >::done()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `std::enable_if<std::numeric_limits<int>::is_signed, bool>::type llvm::StringRef::getAsInteger<int>(unsigned int, int&) const': /home/varosi/haskell/llvm/include/llvm/ADT/StringRef.h:346: undefined reference to `llvm::getAsSignedInteger(llvm::StringRef, unsigned int, long long&)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>::find(llvm::StringRef)': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:274: undefined reference to `llvm::StringMapImpl::FindKey(llvm::StringRef) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>::find(llvm::StringRef) const': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:280: undefined reference to `llvm::StringMapImpl::FindKey(llvm::StringRef) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::done()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1362: undefined reference to `llvm::cl::Option::addArgument()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::StringMapEntry<llvm::StringRef>& llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>::GetOrCreateValue<llvm:: StringRef>(llvm::StringRef, llvm::StringRef)': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:345: undefined reference to `llvm::StringMapImpl::LookupBucketFor(llvm::StringRef)' /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:362: undefined reference to `llvm::StringMapImpl::RehashTable()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::SmallVectorTemplateCommon<char, void>::grow_pod(unsigned long, unsigned long)': /home/varosi/haskell/llvm/include/llvm/ADT/SmallVector.h:82: undefined reference to `llvm::SmallVectorBase::grow_pod(void*, unsigned long, unsigned long)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::StringMapEntry<char>& llvm::StringMap<char, llvm::MallocAllocator>::GetOrCreateValue<char>(llvm::StringRef, char)': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:345: undefined reference to `llvm::StringMapImpl::LookupBucketFor(llvm::StringRef)' /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:362: undefined reference to `llvm::StringMapImpl::RehashTable()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `void llvm::cl::initializer<char [2]>::apply<llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> > >(llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >&) const': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:315: undefined reference to `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::setInitialValue(std::string const&)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl4listISsbNS0_ 6parserISsEEEE[_ZTVN4llvm2cl4listISsbNS0_6parserISsEEEE]+0x20): undefined reference to `llvm::cl::Option::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl11OptionValueIbEE[_ ZTVN4llvm2cl11OptionValueIbEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl15OptionValueBaseI bLb0EEE[_ZTVN4llvm2cl15OptionValueBaseIbLb0EEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl15OptionValueCopyIbEE[_ ZTVN4llvm2cl15OptionValueCopyIbEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl15OptionValueCopyISsEE[_ ZTVN4llvm2cl15OptionValueCopyISsEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::~opt()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1156: undefined reference to `vtable for llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::opt<bool, false, llvm::cl::parser<bool> >::~opt()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1156: undefined reference to `vtable for llvm::cl::opt<bool, false, llvm::cl::parser<bool> >' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::PrettyStackTraceProgram::~ PrettyStackTraceProgram()': /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:58: undefined reference to `vtable for llvm::PrettyStackTraceProgram' /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:58: undefined reference to `llvm::PrettyStackTraceEntry::~PrettyStackTraceEntry()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::getOptionWidth() const': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1352: undefined reference to `llvm::cl::basic_parser_impl::getOptionWidth(llvm::cl::Option const&) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::printOptionInfo(unsigned long) const': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1354: undefined reference to `llvm::cl::basic_parser_impl::printOptionInfo(llvm::cl::Option const&, unsigned long) const' collect2: error: ld returned 1 exit status make[2]: *** [/home/varosi/haskell/llvm/build/Debug+Asserts/bin/FileCheck] Error 1 make[2]: Leaving directory `/home/varosi/haskell/llvm/build/utils/FileCheck' make[1]: *** [FileCheck/.makeall] Error 2 make[1]: Leaving directory `/home/varosi/haskell/llvm/build/utils' make: *** [all] Error 1
Another thing is that the link from: http://www.haskell.org/haskellwiki/ARM
which is: http://www.haskell.org/pipermail/cvs-ghc/2012-February/070791.html
Is invalid and there could be some more information on the topic. I had to install GCC 4.7 to compile latest LLVM on my Ubuntu 12.
What could be the problem with LLVM?
2014-04-03 17:13 GMT+03:00 Karel Gardas <karel.gardas@centrum.cz <mailto:karel.gardas@centrum.cz>>:
On 04/ 3/14 04:05 PM, eng. Vassil Ognyanov Keremidchiev wrote:
Yes, but I don't know what is missing in my workflow.
I did not know if I need LLVM runtime on my target ARM machine.
No, you don't need LLVM runtime. You just need LLVM llc/opt if you'd like to cross-compile and build registerised ARM binaries.
Do I need? I read that there is unregisterised version for ARM that doesn't need LLVM. So I just could build Haskell cross-compiler that could work on my Ubuntu and create binaries for my ARM v7 machine.
If you'd like to use unregisterised /via-C binaries, then you don't need LLVM at all, you just need to configure with --enable-unregisterised IIRC, but I've not tested that so you are on your own.
Also it comes with its own performance penalty of course: http://ghcarm.wordpress.com/__2011/08/07/nofib-benchmarking/ <http://ghcarm.wordpress.com/2011/08/07/nofib-benchmarking/>
Karel
Okay, I got that LLVM is used here to build part of the GHC compiler for x86 and not for ARM directly. I have installed llvm-3.3 and build processed much longer until this error: configure: error: in `/home/varosi/haskell/ghc/libraries/terminfo': configure: error: curses library not found, so this package cannot be built See `config.log' for more details make[1]: *** [libraries/terminfo/dist-install/package-data.mk] Error 1 make: *** [all] Error 2 I didn't found curses library at apt-get or cabal. 2014-04-03 21:13 GMT+03:00 eng. Vassil Ognyanov Keremidchiev < varosi@gmail.com>:
I would like to build GHC as a cross-compiler. So it can still run on x86 Ubuntu, but producing code for ARM v7. What should I do?
2014-04-03 21:05 GMT+03:00 Karel Gardas <karel.gardas@centrum.cz>:
I don't understand why you are trying to cross-compile LLVM? I've though you'd like to cross-compile GHC itself...
Karel
On 04/ 3/14 08:00 PM, eng. Vassil Ognyanov Keremidchiev wrote:
May be the problem is: arm-linux-gnueabi-gcc --version gives me 4.6.3 ?
Is it possible to install earlier LLVM version?
2014-04-03 20:47 GMT+03:00 eng. Vassil Ognyanov Keremidchiev <varosi@gmail.com <mailto:varosi@gmail.com>>:
I'm trying to compile LLVM as is described in: http://bgamari.github.io/posts/cross-compiling_llvm.html without success. This is the error:
llvm[1]: Compiling StringMatcher.cpp for Debug+Asserts build llvm[1]: Compiling TGLexer.cpp for Debug+Asserts build llvm[1]: Compiling TGParser.cpp for Debug+Asserts build llvm[1]: Compiling TableGenBackend.cpp for Debug+Asserts build llvm[1]: Building Debug+Asserts Archive Library libLLVMTableGen.a make[1]: Leaving directory `/home/varosi/haskell/llvm/build/lib/TableGen' make[1]: Entering directory `/home/varosi/haskell/llvm/build/utils' make[2]: Entering directory `/home/varosi/haskell/llvm/build/utils/FileCheck' llvm[2]: Compiling FileCheck.cpp for Debug+Asserts build llvm[2]: Linking Debug+Asserts executable FileCheck /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::Option::Option(llvm::cl::NumOccurrencesFlag, llvm::cl::OptionHidden)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:242: undefined reference to `vtable for llvm::cl::Option' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:242: undefined reference to `llvm::cl::GeneralCategory' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::Option::~Option()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:281: undefined reference to `vtable for llvm::cl::Option' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::GenericOptionValue::~GenericOptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:356: undefined reference to `vtable for llvm::cl::GenericOptionValue' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::OptionValue<std::string>::OptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:461: undefined reference to `vtable for llvm::cl::OptionValue<std:: string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::basic_parser_impl::~basic_parser_impl()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:702: undefined reference to `vtable for llvm::cl::basic_parser_impl' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::PrettyStackTraceProgram::PrettyStackTraceProgram(int, char const* const*)': /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:63: undefined reference to `llvm::PrettyStackTraceEntry::PrettyStackTraceEntry()' /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:63: undefined reference to `vtable for llvm::PrettyStackTraceProgram' /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:64: undefined reference to `llvm::EnablePrettyStackTrace()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::raw_ostream::operator<<(char)': /home/varosi/haskell/llvm/include/llvm/Support/raw_ostream.h:136: undefined reference to `llvm::raw_ostream::write(unsigned char)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::raw_ostream::operator<<(llvm::StringRef)': /home/varosi/haskell/llvm/include/llvm/Support/raw_ostream.h:161: undefined reference to `llvm::raw_ostream::write(char const*, unsigned long)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::raw_ostream::operator<<(std::string const&)': /home/varosi/haskell/llvm/include/llvm/Support/raw_ostream.h:177: undefined reference to `llvm::raw_ostream::write(char const*, unsigned long)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `Pattern::ParsePattern(llvm::StringRef, llvm::StringRef, llvm::SourceMgr&, unsigned int)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:176: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:182: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:183: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:198: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:202: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:234: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:247: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:260: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:269: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o:/home/varosi/haskell/llvm/utils/ FileCheck/FileCheck.cpp:277: more undefined references to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' follow /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `Pattern::ParsePattern(llvm::StringRef, llvm::StringRef, llvm::SourceMgr&, unsigned int)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:313: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:314: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:315: undefined reference to `llvm::Regex::escape(llvm::StringRef)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `Pattern::AddRegExToRegEx(llvm::StringRef, unsigned int&, llvm::SourceMgr&)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:324: undefined reference to `llvm::Regex::Regex(llvm::StringRef, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:326: undefined reference to `llvm::Regex::isValid(std::string&)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:328: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:333: undefined reference to `llvm::Regex::getNumMatches() const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:334: undefined reference to `llvm::Regex::~Regex()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `Pattern::Match(llvm::StringRef, unsigned long&, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:376: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:403: undefined reference to `llvm::Regex::escape(llvm::StringRef)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:418: undefined reference to `llvm::Regex::Regex(llvm::StringRef, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:418: undefined reference to `llvm::Regex::match(llvm::StringRef, llvm::SmallVectorImpl<llvm::StringRef>*)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:418: undefined reference to `llvm::Regex::~Regex()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `Pattern::ComputeMatchDistance(llvm::StringRef, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator> const&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:452: undefined reference to `llvm::StringRef::edit_distance(llvm::StringRef, bool, unsigned int) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `Pattern::PrintFailureInfo(llvm::SourceMgr const&, llvm::StringRef, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator> const&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:462: undefined reference to `llvm::raw_svector_ostream::raw_svector_ostream(llvm:: SmallVectorImpl<char>&)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:468: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:469: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:472: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:480: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:483: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o:/home/varosi/haskell/llvm/utils/ FileCheck/FileCheck.cpp:484: more undefined references to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' follow /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `Pattern::PrintFailureInfo(llvm::SourceMgr const&, llvm::StringRef, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator> const&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:489: undefined reference to `llvm::raw_svector_ostream::str()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:489: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:490: undefined reference to `llvm::raw_svector_ostream::~raw_svector_ostream()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:527: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `Pattern::FindRegexVarEnd(llvm::StringRef, llvm::SourceMgr&)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:558: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `CanonicalizeInputFile': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:655: undefined reference to `llvm::MemoryBuffer::getMemBufferCopy(llvm::StringRef, llvm::StringRef)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `CheckTypeSize': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:687: undefined reference to `llvm::llvm_unreachable_internal(char const*, char const*, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:690: undefined reference to `llvm::llvm_unreachable_internal(char const*, char const*, unsigned int)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `FindFirstCandidateMatch': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:748: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `ReadCheckFile': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:825: undefined reference to `llvm::MemoryBuffer::getFileOrSTDIN(llvm::StringRef, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >&, long)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:827: undefined reference to `llvm::error_code::message() const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:826: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:868: undefined reference to `llvm::StringRef::find_first_not_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:871: undefined reference to `llvm::StringRef::find_first_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:886: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:897: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:926: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:930: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:932: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:935: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `PrintCheckFailed': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:947: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:951: undefined reference to `llvm::StringRef::find_first_not_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:954: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `CountNumNewlinesBetween': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:972: undefined reference to `llvm::StringRef::find_first_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `CheckString::CheckNext(llvm::SourceMgr const&, llvm::StringRef) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1036: undefined reference to `llvm::SourceMgr::FindBufferContainingLoc(llvm::SMLoc) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1046: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1048: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1050: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1056: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1058: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o:/home/varosi/haskell/llvm/utils/ FileCheck/FileCheck.cpp:1060: more undefined references to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' follow /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `ValidateCheckPrefix': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1170: undefined reference to `llvm::Regex::Regex(llvm::StringRef, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1171: undefined reference to `llvm::Regex::match(llvm::StringRef, llvm::SmallVectorImpl<llvm::StringRef>*)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1171: undefined reference to `llvm::Regex::~Regex()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `main': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1199: undefined reference to `llvm::sys::PrintStackTraceOnErrorSignal()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1201: undefined reference to `llvm::cl::ParseCommandLineOptions(int, char const* const*, char const*)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1204: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1222: undefined reference to `llvm::MemoryBuffer::getFileOrSTDIN(llvm::StringRef, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >&, long)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1224: undefined reference to `llvm::error_code::message() const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1223: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1229: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1298: undefined reference to `llvm::SourceMgr::~SourceMgr()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::GenericOptionValue::GenericOptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:355: undefined reference to `vtable for llvm::cl::GenericOptionValue' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::OptionValue<std::string>::~OptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:458: undefined reference to `vtable for llvm::cl::OptionValue<std:: string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::basic_parser_impl::basic_parser_impl()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:700: undefined reference to `vtable for llvm::cl::basic_parser_impl' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::basic_parser<std::string>::~basic_parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:739: undefined reference to `vtable for llvm::cl::basic_parser<std:: string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::parser<std::string>::~parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:912: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::opt<llvm::cl::FormattingFlags, llvm::cl::desc, llvm::cl::NumOccurrencesFlag>(llvm::cl::FormattingFlags const&, llvm::cl::desc const&, llvm::cl::NumOccurrencesFlag const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1225: undefined reference to `vtable for llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1225: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1227: undefined reference to `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::done()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::opt<char [11], llvm::cl::desc, llvm::cl::initializer<char [2]>, llvm::cl::value_desc>(char const (&) [11], llvm::cl::desc const&, llvm::cl::initializer<char [2]> const&, llvm::cl::value_desc const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1232: undefined reference to `vtable for llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1232: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1234: undefined reference to `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::done()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::list<char [13], llvm::cl::desc>(char const (&) [13], llvm::cl::desc const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1385: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::basic_parser<bool>::basic_parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:739: undefined reference to `vtable for llvm::cl::basic_parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::basic_parser<bool>::~basic_parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:739: undefined reference to `vtable for llvm::cl::basic_parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::parser<bool>::parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:749: undefined reference to `vtable for llvm::cl::parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::parser<bool>::~parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:749: undefined reference to `vtable for llvm::cl::parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::opt<bool, false, llvm::cl::parser<bool> >::opt<char [18], llvm::cl::desc>(char const (&) [18], llvm::cl::desc const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1217: undefined reference to `vtable for llvm::cl::opt<bool, false, llvm::cl::parser<bool> >' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1219: undefined reference to `llvm::cl::opt<bool, false, llvm::cl::parser<bool> >::done()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `std::enable_if<std::numeric_limits<int>::is_signed, bool>::type llvm::StringRef::getAsInteger<int>(unsigned int, int&) const': /home/varosi/haskell/llvm/include/llvm/ADT/StringRef.h:346: undefined reference to `llvm::getAsSignedInteger(llvm::StringRef, unsigned int, long long&)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>::find(llvm::StringRef)': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:274: undefined reference to `llvm::StringMapImpl::FindKey(llvm::StringRef) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>::find(llvm::StringRef) const': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:280: undefined reference to `llvm::StringMapImpl::FindKey(llvm::StringRef) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::done()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1362: undefined reference to `llvm::cl::Option::addArgument()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::StringMapEntry<llvm::StringRef>& llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>::GetOrCreateValue<llvm:: StringRef>(llvm::StringRef, llvm::StringRef)': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:345: undefined reference to `llvm::StringMapImpl::LookupBucketFor(llvm::StringRef)' /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:362: undefined reference to `llvm::StringMapImpl::RehashTable()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::SmallVectorTemplateCommon<char, void>::grow_pod(unsigned long, unsigned long)': /home/varosi/haskell/llvm/include/llvm/ADT/SmallVector.h:82: undefined reference to `llvm::SmallVectorBase::grow_pod(void*, unsigned long, unsigned long)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::StringMapEntry<char>& llvm::StringMap<char, llvm::MallocAllocator>::GetOrCreateValue<char>(llvm::StringRef, char)': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:345: undefined reference to `llvm::StringMapImpl::LookupBucketFor(llvm::StringRef)' /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:362: undefined reference to `llvm::StringMapImpl::RehashTable()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `void llvm::cl::initializer<char [2]>::apply<llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> > >(llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >&) const': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:315: undefined reference to `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::setInitialValue(std::string const&)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl4listISsbNS0_ 6parserISsEEEE[_ZTVN4llvm2cl4listISsbNS0_6parserISsEEEE]+0x20): undefined reference to `llvm::cl::Option::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl11OptionValueIbEE[_ ZTVN4llvm2cl11OptionValueIbEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl15OptionValueBaseI bLb0EEE[_ZTVN4llvm2cl15OptionValueBaseIbLb0EEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl15OptionValueCopyIbEE[_ ZTVN4llvm2cl15OptionValueCopyIbEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl15OptionValueCopyISsEE[_ ZTVN4llvm2cl15OptionValueCopyISsEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::~opt()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1156: undefined reference to `vtable for llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::opt<bool, false, llvm::cl::parser<bool> >::~opt()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1156: undefined reference to `vtable for llvm::cl::opt<bool, false, llvm::cl::parser<bool> >' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::PrettyStackTraceProgram::~ PrettyStackTraceProgram()': /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:58: undefined reference to `vtable for llvm::PrettyStackTraceProgram' /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:58: undefined reference to `llvm::PrettyStackTraceEntry::~PrettyStackTraceEntry()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::getOptionWidth() const': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1352: undefined reference to `llvm::cl::basic_parser_impl::getOptionWidth(llvm::cl::Option const&) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::printOptionInfo(unsigned long) const': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1354: undefined reference to `llvm::cl::basic_parser_impl::printOptionInfo(llvm::cl::Option const&, unsigned long) const' collect2: error: ld returned 1 exit status make[2]: *** [/home/varosi/haskell/llvm/build/Debug+Asserts/bin/FileCheck] Error 1 make[2]: Leaving directory `/home/varosi/haskell/llvm/build/utils/FileCheck' make[1]: *** [FileCheck/.makeall] Error 2 make[1]: Leaving directory `/home/varosi/haskell/llvm/build/utils' make: *** [all] Error 1
Another thing is that the link from: http://www.haskell.org/haskellwiki/ARM
which is: http://www.haskell.org/pipermail/cvs-ghc/2012-February/070791.html
Is invalid and there could be some more information on the topic. I had to install GCC 4.7 to compile latest LLVM on my Ubuntu 12.
What could be the problem with LLVM?
2014-04-03 17:13 GMT+03:00 Karel Gardas <karel.gardas@centrum.cz <mailto:karel.gardas@centrum.cz>>:
On 04/ 3/14 04:05 PM, eng. Vassil Ognyanov Keremidchiev wrote:
Yes, but I don't know what is missing in my workflow.
I did not know if I need LLVM runtime on my target ARM machine.
No, you don't need LLVM runtime. You just need LLVM llc/opt if you'd like to cross-compile and build registerised ARM binaries.
Do I need? I read that there is unregisterised version for ARM that doesn't need LLVM. So I just could build Haskell cross-compiler that could work on my Ubuntu and create binaries for my ARM v7 machine.
If you'd like to use unregisterised /via-C binaries, then you don't need LLVM at all, you just need to configure with --enable-unregisterised IIRC, but I've not tested that so you are on your own.
Also it comes with its own performance penalty of course: http://ghcarm.wordpress.com/__2011/08/07/nofib-benchmarking/ <http://ghcarm.wordpress.com/2011/08/07/nofib-benchmarking/>
Karel
try "libcurses" for more hands on support getting ghc working, #ghc on freenode (when people are around) also works are you following the cross compilation directions? On Thu, Apr 3, 2014 at 3:04 PM, eng. Vassil Ognyanov Keremidchiev < varosi@gmail.com> wrote:
Okay, I got that LLVM is used here to build part of the GHC compiler for x86 and not for ARM directly. I have installed llvm-3.3 and build processed much longer until this error:
configure: error: in `/home/varosi/haskell/ghc/libraries/terminfo': configure: error: curses library not found, so this package cannot be built See `config.log' for more details make[1]: *** [libraries/terminfo/dist-install/package-data.mk] Error 1 make: *** [all] Error 2
I didn't found curses library at apt-get or cabal.
2014-04-03 21:13 GMT+03:00 eng. Vassil Ognyanov Keremidchiev < varosi@gmail.com>:
I would like to build GHC as a cross-compiler. So it can still run on x86
Ubuntu, but producing code for ARM v7. What should I do?
2014-04-03 21:05 GMT+03:00 Karel Gardas <karel.gardas@centrum.cz>:
I don't understand why you are trying to cross-compile LLVM? I've though you'd like to cross-compile GHC itself...
Karel
On 04/ 3/14 08:00 PM, eng. Vassil Ognyanov Keremidchiev wrote:
May be the problem is: arm-linux-gnueabi-gcc --version gives me 4.6.3 ?
Is it possible to install earlier LLVM version?
2014-04-03 20:47 GMT+03:00 eng. Vassil Ognyanov Keremidchiev <varosi@gmail.com <mailto:varosi@gmail.com>>:
I'm trying to compile LLVM as is described in: http://bgamari.github.io/posts/cross-compiling_llvm.html without success. This is the error:
llvm[1]: Compiling StringMatcher.cpp for Debug+Asserts build llvm[1]: Compiling TGLexer.cpp for Debug+Asserts build llvm[1]: Compiling TGParser.cpp for Debug+Asserts build llvm[1]: Compiling TableGenBackend.cpp for Debug+Asserts build llvm[1]: Building Debug+Asserts Archive Library libLLVMTableGen.a make[1]: Leaving directory `/home/varosi/haskell/llvm/build/lib/TableGen' make[1]: Entering directory `/home/varosi/haskell/llvm/build/utils' make[2]: Entering directory `/home/varosi/haskell/llvm/build/utils/FileCheck' llvm[2]: Compiling FileCheck.cpp for Debug+Asserts build llvm[2]: Linking Debug+Asserts executable FileCheck /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::Option::Option(llvm::cl::NumOccurrencesFlag, llvm::cl::OptionHidden)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:242: undefined reference to `vtable for llvm::cl::Option' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:242: undefined reference to `llvm::cl::GeneralCategory' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::Option::~Option()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:281: undefined reference to `vtable for llvm::cl::Option' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::GenericOptionValue::~GenericOptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:356: undefined reference to `vtable for llvm::cl::GenericOptionValue' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::OptionValue<std::string>::OptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:461: undefined reference to `vtable for llvm::cl::OptionValue<std:: string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::basic_parser_impl::~basic_parser_impl()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:702: undefined reference to `vtable for llvm::cl::basic_parser_impl' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::PrettyStackTraceProgram::PrettyStackTraceProgram(int, char const* const*)': /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:63: undefined reference to `llvm::PrettyStackTraceEntry::PrettyStackTraceEntry()' /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:63: undefined reference to `vtable for llvm::PrettyStackTraceProgram' /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:64: undefined reference to `llvm::EnablePrettyStackTrace()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::raw_ostream::operator<<(char)': /home/varosi/haskell/llvm/include/llvm/Support/raw_ostream.h:136: undefined reference to `llvm::raw_ostream::write(unsigned char)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::raw_ostream::operator<<(llvm::StringRef)': /home/varosi/haskell/llvm/include/llvm/Support/raw_ostream.h:161: undefined reference to `llvm::raw_ostream::write(char const*, unsigned long)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::raw_ostream::operator<<(std::string const&)': /home/varosi/haskell/llvm/include/llvm/Support/raw_ostream.h:177: undefined reference to `llvm::raw_ostream::write(char const*, unsigned long)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `Pattern::ParsePattern(llvm::StringRef, llvm::StringRef, llvm::SourceMgr&, unsigned int)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:176: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:182: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:183: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:198: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:202: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:234: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:247: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:260: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:269: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o:/home/varosi/haskell/llvm/utils/ FileCheck/FileCheck.cpp:277: more undefined references to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' follow /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `Pattern::ParsePattern(llvm::StringRef, llvm::StringRef, llvm::SourceMgr&, unsigned int)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:313: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:314: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:315: undefined reference to `llvm::Regex::escape(llvm::StringRef)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `Pattern::AddRegExToRegEx(llvm::StringRef, unsigned int&, llvm::SourceMgr&)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:324: undefined reference to `llvm::Regex::Regex(llvm::StringRef, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:326: undefined reference to `llvm::Regex::isValid(std::string&)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:328: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:333: undefined reference to `llvm::Regex::getNumMatches() const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:334: undefined reference to `llvm::Regex::~Regex()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `Pattern::Match(llvm::StringRef, unsigned long&, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:376: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:403: undefined reference to `llvm::Regex::escape(llvm::StringRef)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:418: undefined reference to `llvm::Regex::Regex(llvm::StringRef, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:418: undefined reference to `llvm::Regex::match(llvm::StringRef, llvm::SmallVectorImpl<llvm::StringRef>*)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:418: undefined reference to `llvm::Regex::~Regex()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `Pattern::ComputeMatchDistance(llvm::StringRef, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator> const&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:452: undefined reference to `llvm::StringRef::edit_distance(llvm::StringRef, bool, unsigned int) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `Pattern::PrintFailureInfo(llvm::SourceMgr const&, llvm::StringRef, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator> const&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:462: undefined reference to `llvm::raw_svector_ostream::raw_svector_ostream(llvm:: SmallVectorImpl<char>&)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:468: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:469: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:472: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:480: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:483: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o:/home/varosi/haskell/llvm/utils/ FileCheck/FileCheck.cpp:484: more undefined references to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' follow /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `Pattern::PrintFailureInfo(llvm::SourceMgr const&, llvm::StringRef, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator> const&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:489: undefined reference to `llvm::raw_svector_ostream::str()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:489: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:490: undefined reference to `llvm::raw_svector_ostream::~raw_svector_ostream()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:527: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `Pattern::FindRegexVarEnd(llvm::StringRef, llvm::SourceMgr&)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:558: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `CanonicalizeInputFile': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:655: undefined reference to `llvm::MemoryBuffer::getMemBufferCopy(llvm::StringRef, llvm::StringRef)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `CheckTypeSize': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:687: undefined reference to `llvm::llvm_unreachable_internal(char const*, char const*, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:690: undefined reference to `llvm::llvm_unreachable_internal(char const*, char const*, unsigned int)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `FindFirstCandidateMatch': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:748: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `ReadCheckFile': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:825: undefined reference to `llvm::MemoryBuffer::getFileOrSTDIN(llvm::StringRef, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >&, long)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:827: undefined reference to `llvm::error_code::message() const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:826: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:868: undefined reference to `llvm::StringRef::find_first_not_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:871: undefined reference to `llvm::StringRef::find_first_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:886: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:897: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:926: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:930: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:932: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:935: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `PrintCheckFailed': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:947: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:951: undefined reference to `llvm::StringRef::find_first_not_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:954: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `CountNumNewlinesBetween': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:972: undefined reference to `llvm::StringRef::find_first_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `CheckString::CheckNext(llvm::SourceMgr const&, llvm::StringRef) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1036: undefined reference to `llvm::SourceMgr::FindBufferContainingLoc(llvm::SMLoc) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1046: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1048: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1050: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1056: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1058: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o:/home/varosi/haskell/llvm/utils/ FileCheck/FileCheck.cpp:1060: more undefined references to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' follow /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `ValidateCheckPrefix': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1170: undefined reference to `llvm::Regex::Regex(llvm::StringRef, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1171: undefined reference to `llvm::Regex::match(llvm::StringRef, llvm::SmallVectorImpl<llvm::StringRef>*)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1171: undefined reference to `llvm::Regex::~Regex()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `main': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1199: undefined reference to `llvm::sys::PrintStackTraceOnErrorSignal()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1201: undefined reference to `llvm::cl::ParseCommandLineOptions(int, char const* const*, char const*)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1204: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1222: undefined reference to `llvm::MemoryBuffer::getFileOrSTDIN(llvm::StringRef, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >&, long)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1224: undefined reference to `llvm::error_code::message() const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1223: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1229: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1298: undefined reference to `llvm::SourceMgr::~SourceMgr()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::GenericOptionValue::GenericOptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:355: undefined reference to `vtable for llvm::cl::GenericOptionValue' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::OptionValue<std::string>::~OptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:458: undefined reference to `vtable for llvm::cl::OptionValue<std:: string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::basic_parser_impl::basic_parser_impl()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:700: undefined reference to `vtable for llvm::cl::basic_parser_impl' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::basic_parser<std::string>::~basic_parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:739: undefined reference to `vtable for llvm::cl::basic_parser<std:: string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::parser<std::string>::~parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:912: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::opt<llvm::cl::FormattingFlags, llvm::cl::desc, llvm::cl::NumOccurrencesFlag>(llvm::cl::FormattingFlags const&, llvm::cl::desc const&, llvm::cl::NumOccurrencesFlag const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1225: undefined reference to `vtable for llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1225: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1227: undefined reference to `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::done()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::opt<char [11], llvm::cl::desc, llvm::cl::initializer<char [2]>, llvm::cl::value_desc>(char const (&) [11], llvm::cl::desc const&, llvm::cl::initializer<char [2]> const&, llvm::cl::value_desc const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1232: undefined reference to `vtable for llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1232: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1234: undefined reference to `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::done()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::list<char [13], llvm::cl::desc>(char const (&) [13], llvm::cl::desc const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1385: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::basic_parser<bool>::basic_parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:739: undefined reference to `vtable for llvm::cl::basic_parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::basic_parser<bool>::~basic_parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:739: undefined reference to `vtable for llvm::cl::basic_parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::parser<bool>::parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:749: undefined reference to `vtable for llvm::cl::parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::parser<bool>::~parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:749: undefined reference to `vtable for llvm::cl::parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::opt<bool, false, llvm::cl::parser<bool> >::opt<char [18], llvm::cl::desc>(char const (&) [18], llvm::cl::desc const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1217: undefined reference to `vtable for llvm::cl::opt<bool, false, llvm::cl::parser<bool> >' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1219: undefined reference to `llvm::cl::opt<bool, false, llvm::cl::parser<bool> >::done()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `std::enable_if<std::numeric_limits<int>::is_signed, bool>::type llvm::StringRef::getAsInteger<int>(unsigned int, int&) const': /home/varosi/haskell/llvm/include/llvm/ADT/StringRef.h:346: undefined reference to `llvm::getAsSignedInteger(llvm::StringRef, unsigned int, long long&)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>::find(llvm::StringRef)': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:274: undefined reference to `llvm::StringMapImpl::FindKey(llvm::StringRef) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>::find(llvm::StringRef) const': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:280: undefined reference to `llvm::StringMapImpl::FindKey(llvm::StringRef) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::done()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1362: undefined reference to `llvm::cl::Option::addArgument()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::StringMapEntry<llvm::StringRef>& llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>::GetOrCreateValue<llvm:: StringRef>(llvm::StringRef, llvm::StringRef)': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:345: undefined reference to `llvm::StringMapImpl::LookupBucketFor(llvm::StringRef)' /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:362: undefined reference to `llvm::StringMapImpl::RehashTable()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::SmallVectorTemplateCommon<char, void>::grow_pod(unsigned long, unsigned long)': /home/varosi/haskell/llvm/include/llvm/ADT/SmallVector.h:82: undefined reference to `llvm::SmallVectorBase::grow_pod(void*, unsigned long, unsigned long)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::StringMapEntry<char>& llvm::StringMap<char, llvm::MallocAllocator>::GetOrCreateValue<char>(llvm::StringRef, char)': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:345: undefined reference to `llvm::StringMapImpl::LookupBucketFor(llvm::StringRef)' /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:362: undefined reference to `llvm::StringMapImpl::RehashTable()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `void llvm::cl::initializer<char [2]>::apply<llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> > >(llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >&) const': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:315: undefined reference to `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::setInitialValue(std::string const&)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl4listISsbNS0_ 6parserISsEEEE[_ZTVN4llvm2cl4listISsbNS0_6parserISsEEEE]+0x20): undefined reference to `llvm::cl::Option::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl11OptionValueIbEE[_ ZTVN4llvm2cl11OptionValueIbEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl15OptionValueBaseI bLb0EEE[_ZTVN4llvm2cl15OptionValueBaseIbLb0EEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl15OptionValueCopyIbEE[_ ZTVN4llvm2cl15OptionValueCopyIbEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl15OptionValueCopyISsEE[_ ZTVN4llvm2cl15OptionValueCopyISsEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::~opt()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1156: undefined reference to `vtable for llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::opt<bool, false, llvm::cl::parser<bool> >::~opt()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1156: undefined reference to `vtable for llvm::cl::opt<bool, false, llvm::cl::parser<bool> >' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::PrettyStackTraceProgram::~ PrettyStackTraceProgram()': /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:58: undefined reference to `vtable for llvm::PrettyStackTraceProgram' /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:58: undefined reference to `llvm::PrettyStackTraceEntry:: ~PrettyStackTraceEntry()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::getOptionWidth() const': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1352: undefined reference to `llvm::cl::basic_parser_impl::getOptionWidth(llvm::cl::Option const&) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+ Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::printOptionInfo(unsigned long) const': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1354: undefined reference to `llvm::cl::basic_parser_impl::printOptionInfo(llvm::cl::Option const&, unsigned long) const' collect2: error: ld returned 1 exit status make[2]: *** [/home/varosi/haskell/llvm/build/Debug+Asserts/bin/FileCheck] Error 1 make[2]: Leaving directory `/home/varosi/haskell/llvm/build/utils/FileCheck' make[1]: *** [FileCheck/.makeall] Error 2 make[1]: Leaving directory `/home/varosi/haskell/llvm/build/utils' make: *** [all] Error 1
Another thing is that the link from: http://www.haskell.org/haskellwiki/ARM
which is: http://www.haskell.org/pipermail/cvs-ghc/2012-February/070791.html
Is invalid and there could be some more information on the topic. I had to install GCC 4.7 to compile latest LLVM on my Ubuntu 12.
What could be the problem with LLVM?
2014-04-03 17:13 GMT+03:00 Karel Gardas <karel.gardas@centrum.cz <mailto:karel.gardas@centrum.cz>>:
On 04/ 3/14 04:05 PM, eng. Vassil Ognyanov Keremidchiev wrote:
Yes, but I don't know what is missing in my workflow.
I did not know if I need LLVM runtime on my target ARM machine.
No, you don't need LLVM runtime. You just need LLVM llc/opt if you'd like to cross-compile and build registerised ARM binaries.
Do I need? I read that there is unregisterised version for ARM that doesn't need LLVM. So I just could build Haskell cross-compiler that could work on my Ubuntu and create binaries for my ARM v7 machine.
If you'd like to use unregisterised /via-C binaries, then you don't need LLVM at all, you just need to configure with --enable-unregisterised IIRC, but I've not tested that so you are on your own.
Also it comes with its own performance penalty of course: http://ghcarm.wordpress.com/__2011/08/07/nofib-benchmarking/ <http://ghcarm.wordpress.com/2011/08/07/nofib-benchmarking/>
Karel
Your libncurses is for host so your cross-compiler can't use it. See http://ghcarm.wordpress.com/2014/01/18/unregisterised-ghc-head-build-for-arm... -- especially bits about sysroot. Karel On 04/ 3/14 09:04 PM, eng. Vassil Ognyanov Keremidchiev wrote:
Okay, I got that LLVM is used here to build part of the GHC compiler for x86 and not for ARM directly. I have installed llvm-3.3 and build processed much longer until this error:
configure: error: in `/home/varosi/haskell/ghc/libraries/terminfo': configure: error: curses library not found, so this package cannot be built See `config.log' for more details make[1]: *** [libraries/terminfo/dist-install/package-data.mk <http://package-data.mk>] Error 1 make: *** [all] Error 2
I didn't found curses library at apt-get or cabal.
2014-04-03 21:13 GMT+03:00 eng. Vassil Ognyanov Keremidchiev <varosi@gmail.com <mailto:varosi@gmail.com>>:
I would like to build GHC as a cross-compiler. So it can still run on x86 Ubuntu, but producing code for ARM v7. What should I do?
2014-04-03 21:05 GMT+03:00 Karel Gardas <karel.gardas@centrum.cz <mailto:karel.gardas@centrum.cz>>:
I don't understand why you are trying to cross-compile LLVM? I've though you'd like to cross-compile GHC itself...
Karel
On 04/ 3/14 08:00 PM, eng. Vassil Ognyanov Keremidchiev wrote:
May be the problem is: arm-linux-gnueabi-gcc --version gives me 4.6.3 ?
Is it possible to install earlier LLVM version?
2014-04-03 20:47 GMT+03:00 eng. Vassil Ognyanov Keremidchiev <varosi@gmail.com <mailto:varosi@gmail.com> <mailto:varosi@gmail.com <mailto:varosi@gmail.com>>>:
I'm trying to compile LLVM as is described in: http://bgamari.github.io/__posts/cross-compiling_llvm.__html <http://bgamari.github.io/posts/cross-compiling_llvm.html> without success. This is the error:
llvm[1]: Compiling StringMatcher.cpp for Debug+Asserts build llvm[1]: Compiling TGLexer.cpp for Debug+Asserts build llvm[1]: Compiling TGParser.cpp for Debug+Asserts build llvm[1]: Compiling TableGenBackend.cpp for Debug+Asserts build llvm[1]: Building Debug+Asserts Archive Library libLLVMTableGen.a make[1]: Leaving directory `/home/varosi/haskell/llvm/__build/lib/TableGen' make[1]: Entering directory `/home/varosi/haskell/llvm/__build/utils' make[2]: Entering directory `/home/varosi/haskell/llvm/__build/utils/FileCheck' llvm[2]: Compiling FileCheck.cpp for Debug+Asserts build llvm[2]: Linking Debug+Asserts executable FileCheck
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::cl::Option::Option(__llvm::cl::NumOccurrencesFlag, llvm::cl::OptionHidden)':
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:242: undefined reference to `vtable for llvm::cl::Option'
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:242: undefined reference to `llvm::cl::GeneralCategory'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::cl::Option::~Option()':
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:281: undefined reference to `vtable for llvm::cl::Option'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::cl::GenericOptionValue:__:~GenericOptionValue()':
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:356: undefined reference to `vtable for llvm::cl::GenericOptionValue'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::cl::OptionValue<std::__string>::OptionValue()':
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:461: undefined reference to `vtable for llvm::cl::OptionValue<std::__string>'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::cl::basic_parser_impl::__~basic_parser_impl()':
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:702: undefined reference to `vtable for llvm::cl::basic_parser_impl'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function
`llvm::__PrettyStackTraceProgram::__PrettyStackTraceProgram(int, char const* const*)':
/home/varosi/haskell/llvm/__include/llvm/Support/__PrettyStackTrace.h:63: undefined reference to `llvm::PrettyStackTraceEntry::__PrettyStackTraceEntry()'
/home/varosi/haskell/llvm/__include/llvm/Support/__PrettyStackTrace.h:63: undefined reference to `vtable for llvm::PrettyStackTraceProgram'
/home/varosi/haskell/llvm/__include/llvm/Support/__PrettyStackTrace.h:64: undefined reference to `llvm::EnablePrettyStackTrace(__)'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::raw_ostream::operator<<__(char)':
/home/varosi/haskell/llvm/__include/llvm/Support/raw___ostream.h:136: undefined reference to `llvm::raw_ostream::write(__unsigned char)'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::raw_ostream::operator<<__(llvm::StringRef)':
/home/varosi/haskell/llvm/__include/llvm/Support/raw___ostream.h:161: undefined reference to `llvm::raw_ostream::write(char const*, unsigned long)'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::raw_ostream::operator<<__(std::string const&)':
/home/varosi/haskell/llvm/__include/llvm/Support/raw___ostream.h:177: undefined reference to `llvm::raw_ostream::write(char const*, unsigned long)'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `Pattern::ParsePattern(llvm::__StringRef, llvm::StringRef, llvm::SourceMgr&, unsigned int)':
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__176: undefined reference to `llvm::SourceMgr::__PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__182: undefined reference to `llvm::StringRef::find(llvm::__StringRef, unsigned long) const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__183: undefined reference to `llvm::StringRef::find(llvm::__StringRef, unsigned long) const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__198: undefined reference to `llvm::StringRef::find(llvm::__StringRef, unsigned long) const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__202: undefined reference to `llvm::SourceMgr::__PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__234: undefined reference to `llvm::SourceMgr::__PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__247: undefined reference to `llvm::SourceMgr::__PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__260: undefined reference to `llvm::SourceMgr::__PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__269: undefined reference to `llvm::SourceMgr::__PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o:/home/__varosi/haskell/llvm/utils/__FileCheck/FileCheck.cpp:277: more undefined references to `llvm::SourceMgr::__PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' follow
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `Pattern::ParsePattern(llvm::__StringRef, llvm::StringRef, llvm::SourceMgr&, unsigned int)':
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__313: undefined reference to `llvm::StringRef::find(llvm::__StringRef, unsigned long) const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__314: undefined reference to `llvm::StringRef::find(llvm::__StringRef, unsigned long) const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__315: undefined reference to `llvm::Regex::escape(llvm::__StringRef)'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `Pattern::AddRegExToRegEx(__llvm::StringRef, unsigned int&, llvm::SourceMgr&)':
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__324: undefined reference to `llvm::Regex::Regex(llvm::__StringRef, unsigned int)'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__326: undefined reference to `llvm::Regex::isValid(std::__string&)'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__328: undefined reference to `llvm::SourceMgr::__PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__333: undefined reference to `llvm::Regex::getNumMatches() const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__334: undefined reference to `llvm::Regex::~Regex()'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `Pattern::Match(llvm::__StringRef, unsigned long&, llvm::StringMap<llvm::__StringRef, llvm::MallocAllocator>&) const':
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__376: undefined reference to `llvm::StringRef::find(llvm::__StringRef, unsigned long) const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__403: undefined reference to `llvm::Regex::escape(llvm::__StringRef)'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__418: undefined reference to `llvm::Regex::Regex(llvm::__StringRef, unsigned int)'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__418: undefined reference to `llvm::Regex::match(llvm::__StringRef, llvm::SmallVectorImpl<llvm::__StringRef>*)'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__418: undefined reference to `llvm::Regex::~Regex()'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `Pattern::__ComputeMatchDistance(llvm::__StringRef, llvm::StringMap<llvm::__StringRef, llvm::MallocAllocator> const&) const':
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__452: undefined reference to `llvm::StringRef::edit___distance(llvm::StringRef, bool, unsigned int) const'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `Pattern::PrintFailureInfo(__llvm::SourceMgr const&, llvm::StringRef, llvm::StringMap<llvm::__StringRef, llvm::MallocAllocator> const&) const':
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__462: undefined reference to
`llvm::raw_svector_ostream::__raw_svector_ostream(llvm::__SmallVectorImpl<char>&)'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__468: undefined reference to `llvm::raw_ostream::write___escaped(llvm::StringRef, bool)'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__469: undefined reference to `llvm::raw_ostream::write___escaped(llvm::StringRef, bool)'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__472: undefined reference to `llvm::raw_ostream::write___escaped(llvm::StringRef, bool)'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__480: undefined reference to `llvm::raw_ostream::write___escaped(llvm::StringRef, bool)'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__483: undefined reference to `llvm::raw_ostream::write___escaped(llvm::StringRef, bool)'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o:/home/__varosi/haskell/llvm/utils/__FileCheck/FileCheck.cpp:484: more undefined references to `llvm::raw_ostream::write___escaped(llvm::StringRef, bool)' follow
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `Pattern::PrintFailureInfo(__llvm::SourceMgr const&, llvm::StringRef, llvm::StringMap<llvm::__StringRef, llvm::MallocAllocator> const&) const':
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__489: undefined reference to `llvm::raw_svector_ostream::__str()'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__489: undefined reference to `llvm::SourceMgr::__PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__490: undefined reference to `llvm::raw_svector_ostream::~__raw_svector_ostream()'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__527: undefined reference to `llvm::SourceMgr::__PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `Pattern::FindRegexVarEnd(__llvm::StringRef, llvm::SourceMgr&)':
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__558: undefined reference to `llvm::SourceMgr::__PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `CanonicalizeInputFile':
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__655: undefined reference to
`llvm::MemoryBuffer::__getMemBufferCopy(llvm::__StringRef, llvm::StringRef)'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `CheckTypeSize':
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__687: undefined reference to `llvm::llvm_unreachable___internal(char const*, char const*, unsigned int)'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__690: undefined reference to `llvm::llvm_unreachable___internal(char const*, char const*, unsigned int)'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `FindFirstCandidateMatch':
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__748: undefined reference to `llvm::StringRef::find(llvm::__StringRef, unsigned long) const'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `ReadCheckFile':
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__825: undefined reference to `llvm::MemoryBuffer::__getFileOrSTDIN(llvm::__StringRef, std::unique_ptr<llvm::__MemoryBuffer, std::default_delete<llvm::__MemoryBuffer> >&, long)'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__827: undefined reference to `llvm::error_code::message() const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__826: undefined reference to `llvm::errs()'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__868: undefined reference to `llvm::StringRef::find_first___not_of(llvm::StringRef, unsigned long) const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__871: undefined reference to `llvm::StringRef::find_first___of(llvm::StringRef, unsigned long) const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__886: undefined reference to `llvm::SourceMgr::__PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__897: undefined reference to `llvm::SourceMgr::__PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__926: undefined reference to `llvm::errs()'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__930: undefined reference to `llvm::errs()'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__932: undefined reference to `llvm::errs()'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__935: undefined reference to `llvm::errs()'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `PrintCheckFailed':
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__947: undefined reference to `llvm::SourceMgr::__PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__951: undefined reference to `llvm::StringRef::find_first___not_of(llvm::StringRef, unsigned long) const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__954: undefined reference to `llvm::SourceMgr::__PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `CountNumNewlinesBetween':
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__972: undefined reference to `llvm::StringRef::find_first___of(llvm::StringRef, unsigned long) const'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `CheckString::CheckNext(llvm::__SourceMgr const&, llvm::StringRef) const':
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__1036: undefined reference to
`llvm::SourceMgr::__FindBufferContainingLoc(llvm::__SMLoc) const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__1046: undefined reference to `llvm::SourceMgr::__PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__1048: undefined reference to `llvm::SourceMgr::__PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__1050: undefined reference to `llvm::SourceMgr::__PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__1056: undefined reference to `llvm::SourceMgr::__PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__1058: undefined reference to `llvm::SourceMgr::__PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o:/home/__varosi/haskell/llvm/utils/__FileCheck/FileCheck.cpp:1060: more undefined references to `llvm::SourceMgr::__PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' follow
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `ValidateCheckPrefix':
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__1170: undefined reference to `llvm::Regex::Regex(llvm::__StringRef, unsigned int)'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__1171: undefined reference to `llvm::Regex::match(llvm::__StringRef, llvm::SmallVectorImpl<llvm::__StringRef>*)'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__1171: undefined reference to `llvm::Regex::~Regex()'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `main':
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__1199: undefined reference to `llvm::sys::__PrintStackTraceOnErrorSignal()__'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__1201: undefined reference to `llvm::cl::__ParseCommandLineOptions(int, char const* const*, char const*)'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__1204: undefined reference to `llvm::errs()'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__1222: undefined reference to `llvm::MemoryBuffer::__getFileOrSTDIN(llvm::__StringRef, std::unique_ptr<llvm::__MemoryBuffer, std::default_delete<llvm::__MemoryBuffer> >&, long)'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__1224: undefined reference to `llvm::error_code::message() const'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__1223: undefined reference to `llvm::errs()'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__1229: undefined reference to `llvm::errs()'
/home/varosi/haskell/llvm/__utils/FileCheck/FileCheck.cpp:__1298: undefined reference to `llvm::SourceMgr::~SourceMgr()__'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::cl::GenericOptionValue:__:GenericOptionValue()':
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:355: undefined reference to `vtable for llvm::cl::GenericOptionValue'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::cl::OptionValue<std::__string>::~OptionValue()':
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:458: undefined reference to `vtable for llvm::cl::OptionValue<std::__string>'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::cl::basic_parser_impl::__basic_parser_impl()':
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:700: undefined reference to `vtable for llvm::cl::basic_parser_impl'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::cl::basic_parser<std::__string>::~basic_parser()':
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:739: undefined reference to `vtable for llvm::cl::basic_parser<std::__string>'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::cl::parser<std::string>__::~parser()':
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:912: undefined reference to `vtable for llvm::cl::parser<std::string>'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::opt<llvm::cl::__FormattingFlags, llvm::cl::desc,
llvm::cl::NumOccurrencesFlag>(__llvm::cl::FormattingFlags const&, llvm::cl::desc const&, llvm::cl::NumOccurrencesFlag const&)':
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:1225: undefined reference to `vtable for llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >'
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:1225: undefined reference to `vtable for llvm::cl::parser<std::string>'
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:1227: undefined reference to `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::done()'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::opt<char [11], llvm::cl::desc, llvm::cl::initializer<char [2]>, llvm::cl::value_desc>(char const (&) [11], llvm::cl::desc const&, llvm::cl::initializer<char [2]> const&, llvm::cl::value_desc const&)':
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:1232: undefined reference to `vtable for llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >'
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:1232: undefined reference to `vtable for llvm::cl::parser<std::string>'
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:1234: undefined reference to `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::done()'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::list<char [13], llvm::cl::desc>(char const (&) [13], llvm::cl::desc const&)':
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:1385: undefined reference to `vtable for llvm::cl::parser<std::string>'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::cl::basic_parser<bool>:__:basic_parser()':
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:739: undefined reference to `vtable for llvm::cl::basic_parser<bool>'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::cl::basic_parser<bool>:__:~basic_parser()':
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:739: undefined reference to `vtable for llvm::cl::basic_parser<bool>'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::cl::parser<bool>::__parser()':
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:749: undefined reference to `vtable for llvm::cl::parser<bool>'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::cl::parser<bool>::~__parser()':
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:749: undefined reference to `vtable for llvm::cl::parser<bool>'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::cl::opt<bool, false, llvm::cl::parser<bool> >::opt<char [18], llvm::cl::desc>(char const (&) [18], llvm::cl::desc const&)':
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:1217: undefined reference to `vtable for llvm::cl::opt<bool, false, llvm::cl::parser<bool> >'
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:1219: undefined reference to `llvm::cl::opt<bool, false, llvm::cl::parser<bool> >::done()'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `std::enable_if<std::numeric___limits<int>::is_signed, bool>::type llvm::StringRef::getAsInteger<__int>(unsigned int, int&) const':
/home/varosi/haskell/llvm/__include/llvm/ADT/StringRef.h:__346: undefined reference to `llvm::getAsSignedInteger(__llvm::StringRef, unsigned int, long long&)'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::StringMap<llvm::__StringRef, llvm::MallocAllocator>::find(__llvm::StringRef)':
/home/varosi/haskell/llvm/__include/llvm/ADT/StringMap.h:__274: undefined reference to `llvm::StringMapImpl::FindKey(__llvm::StringRef) const'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::StringMap<llvm::__StringRef, llvm::MallocAllocator>::find(__llvm::StringRef) const':
/home/varosi/haskell/llvm/__include/llvm/ADT/StringMap.h:__280: undefined reference to `llvm::StringMapImpl::FindKey(__llvm::StringRef) const'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::done()':
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:1362: undefined reference to `llvm::cl::Option::__addArgument()'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::StringMapEntry<llvm::__StringRef>& llvm::StringMap<llvm::__StringRef,
llvm::MallocAllocator>::__GetOrCreateValue<llvm::__StringRef>(llvm::StringRef, llvm::StringRef)':
/home/varosi/haskell/llvm/__include/llvm/ADT/StringMap.h:__345: undefined reference to `llvm::StringMapImpl::__LookupBucketFor(llvm::__StringRef)'
/home/varosi/haskell/llvm/__include/llvm/ADT/StringMap.h:__362: undefined reference to `llvm::StringMapImpl::__RehashTable()'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::__SmallVectorTemplateCommon<__char, void>::grow_pod(unsigned long, unsigned long)':
/home/varosi/haskell/llvm/__include/llvm/ADT/SmallVector.__h:82: undefined reference to `llvm::SmallVectorBase::grow___pod(void*, unsigned long, unsigned long)'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::StringMapEntry<char>& llvm::StringMap<char,
llvm::MallocAllocator>::__GetOrCreateValue<char>(llvm::__StringRef, char)':
/home/varosi/haskell/llvm/__include/llvm/ADT/StringMap.h:__345: undefined reference to `llvm::StringMapImpl::__LookupBucketFor(llvm::__StringRef)'
/home/varosi/haskell/llvm/__include/llvm/ADT/StringMap.h:__362: undefined reference to `llvm::StringMapImpl::__RehashTable()'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `void llvm::cl::initializer<char [2]>::apply<llvm::cl::opt<std:__:string, false, llvm::cl::parser<std::string> > >(llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >&) const':
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:315: undefined reference to `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::setInitialValue(std::string const&)'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o:(.data.__rel.ro.___ZTVN4llvm2cl4listISsbNS0___6parserISsEEEE[___ZTVN4llvm2cl4listISsbNS0___6parserISsEEEE]+0x20): undefined reference to `llvm::cl::Option::anchor()'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o:(.data.__rel.ro.___ZTVN4llvm2cl11OptionValueIbEE[_____ZTVN4llvm2cl11OptionValueIbEE]__+0x28): undefined reference to `llvm::cl::GenericOptionValue:__:anchor()'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o:(.data.__rel.ro.___ZTVN4llvm2cl15OptionValueBaseI__bLb0EEE[___ZTVN4llvm2cl15OptionValueBaseI__bLb0EEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue:__:anchor()'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o:(.data.__rel.ro.___ZTVN4llvm2cl15OptionValueCopyI__bEE[___ZTVN4llvm2cl15OptionValueCopyI__bEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue:__:anchor()'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o:(.data.__rel.ro.___ZTVN4llvm2cl15OptionValueCopyI__SsEE[___ZTVN4llvm2cl15OptionValueCopyI__SsEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue:__:anchor()'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::~opt()':
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:1156: undefined reference to `vtable for llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::cl::opt<bool, false, llvm::cl::parser<bool> >::~opt()':
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:1156: undefined reference to `vtable for llvm::cl::opt<bool, false, llvm::cl::parser<bool> >'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::__PrettyStackTraceProgram::~__PrettyStackTraceProgram()':
/home/varosi/haskell/llvm/__include/llvm/Support/__PrettyStackTrace.h:58: undefined reference to `vtable for llvm::PrettyStackTraceProgram'
/home/varosi/haskell/llvm/__include/llvm/Support/__PrettyStackTrace.h:58: undefined reference to `llvm::PrettyStackTraceEntry::__~PrettyStackTraceEntry()'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::getOptionWidth() const':
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:1352: undefined reference to
`llvm::cl::basic_parser_impl::__getOptionWidth(llvm::cl::__Option const&) const'
/home/varosi/haskell/llvm/__build/utils/FileCheck/Debug+__Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::printOptionInfo(unsigned long) const':
/home/varosi/haskell/llvm/__include/llvm/Support/__CommandLine.h:1354: undefined reference to
`llvm::cl::basic_parser_impl::__printOptionInfo(llvm::cl::__Option const&, unsigned long) const' collect2: error: ld returned 1 exit status make[2]: ***
[/home/varosi/haskell/llvm/__build/Debug+Asserts/bin/__FileCheck] Error 1 make[2]: Leaving directory `/home/varosi/haskell/llvm/__build/utils/FileCheck' make[1]: *** [FileCheck/.makeall] Error 2 make[1]: Leaving directory `/home/varosi/haskell/llvm/__build/utils' make: *** [all] Error 1
Another thing is that the link from: http://www.haskell.org/__haskellwiki/ARM <http://www.haskell.org/haskellwiki/ARM>
which is: http://www.haskell.org/__pipermail/cvs-ghc/2012-__February/070791.html <http://www.haskell.org/pipermail/cvs-ghc/2012-February/070791.html>
Is invalid and there could be some more information on the topic. I had to install GCC 4.7 to compile latest LLVM on my Ubuntu 12.
What could be the problem with LLVM?
2014-04-03 17:13 GMT+03:00 Karel Gardas <karel.gardas@centrum.cz <mailto:karel.gardas@centrum.cz> <mailto:karel.gardas@centrum.__cz <mailto:karel.gardas@centrum.cz>>>:
On 04/ 3/14 04:05 PM, eng. Vassil Ognyanov Keremidchiev wrote:
Yes, but I don't know what is missing in my workflow.
I did not know if I need LLVM runtime on my target ARM machine.
No, you don't need LLVM runtime. You just need LLVM llc/opt if you'd like to cross-compile and build registerised ARM binaries.
Do I need? I read that there is unregisterised version for ARM that doesn't need LLVM. So I just could build Haskell cross-compiler that could work on my Ubuntu and create binaries for my ARM v7 machine.
If you'd like to use unregisterised /via-C binaries, then you don't need LLVM at all, you just need to configure with --enable-unregisterised IIRC, but I've not tested that so you are on your own.
Also it comes with its own performance penalty of course: http://ghcarm.wordpress.com/____2011/08/07/nofib-benchmarking/ <http://ghcarm.wordpress.com/__2011/08/07/nofib-benchmarking/> <http://ghcarm.wordpress.com/__2011/08/07/nofib-benchmarking/ <http://ghcarm.wordpress.com/2011/08/07/nofib-benchmarking/>__>
Karel
There is the same error for 3.0 and 3.2 release branches which I think supports ARM. 2014-04-03 21:00 GMT+03:00 eng. Vassil Ognyanov Keremidchiev < varosi@gmail.com>:
May be the problem is: arm-linux-gnueabi-gcc --version gives me 4.6.3 ?
Is it possible to install earlier LLVM version?
2014-04-03 20:47 GMT+03:00 eng. Vassil Ognyanov Keremidchiev < varosi@gmail.com>:
I'm trying to compile LLVM as is described in:
http://bgamari.github.io/posts/cross-compiling_llvm.html without success. This is the error:
llvm[1]: Compiling StringMatcher.cpp for Debug+Asserts build llvm[1]: Compiling TGLexer.cpp for Debug+Asserts build llvm[1]: Compiling TGParser.cpp for Debug+Asserts build llvm[1]: Compiling TableGenBackend.cpp for Debug+Asserts build llvm[1]: Building Debug+Asserts Archive Library libLLVMTableGen.a make[1]: Leaving directory `/home/varosi/haskell/llvm/build/lib/TableGen' make[1]: Entering directory `/home/varosi/haskell/llvm/build/utils' make[2]: Entering directory `/home/varosi/haskell/llvm/build/utils/FileCheck' llvm[2]: Compiling FileCheck.cpp for Debug+Asserts build llvm[2]: Linking Debug+Asserts executable FileCheck /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::Option::Option(llvm::cl::NumOccurrencesFlag, llvm::cl::OptionHidden)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:242: undefined reference to `vtable for llvm::cl::Option' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:242: undefined reference to `llvm::cl::GeneralCategory' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::Option::~Option()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:281: undefined reference to `vtable for llvm::cl::Option' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::GenericOptionValue::~GenericOptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:356: undefined reference to `vtable for llvm::cl::GenericOptionValue' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::OptionValue<std::string>::OptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:461: undefined reference to `vtable for llvm::cl::OptionValue<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::basic_parser_impl::~basic_parser_impl()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:702: undefined reference to `vtable for llvm::cl::basic_parser_impl' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::PrettyStackTraceProgram::PrettyStackTraceProgram(int, char const* const*)': /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:63: undefined reference to `llvm::PrettyStackTraceEntry::PrettyStackTraceEntry()' /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:63: undefined reference to `vtable for llvm::PrettyStackTraceProgram' /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:64: undefined reference to `llvm::EnablePrettyStackTrace()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::raw_ostream::operator<<(char)': /home/varosi/haskell/llvm/include/llvm/Support/raw_ostream.h:136: undefined reference to `llvm::raw_ostream::write(unsigned char)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::raw_ostream::operator<<(llvm::StringRef)': /home/varosi/haskell/llvm/include/llvm/Support/raw_ostream.h:161: undefined reference to `llvm::raw_ostream::write(char const*, unsigned long)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::raw_ostream::operator<<(std::string const&)': /home/varosi/haskell/llvm/include/llvm/Support/raw_ostream.h:177: undefined reference to `llvm::raw_ostream::write(char const*, unsigned long)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::ParsePattern(llvm::StringRef, llvm::StringRef, llvm::SourceMgr&, unsigned int)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:176: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:182: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:183: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:198: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:202: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:234: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:247: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:260: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:269: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:/home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:277: more undefined references to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' follow /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::ParsePattern(llvm::StringRef, llvm::StringRef, llvm::SourceMgr&, unsigned int)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:313: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:314: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:315: undefined reference to `llvm::Regex::escape(llvm::StringRef)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::AddRegExToRegEx(llvm::StringRef, unsigned int&, llvm::SourceMgr&)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:324: undefined reference to `llvm::Regex::Regex(llvm::StringRef, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:326: undefined reference to `llvm::Regex::isValid(std::string&)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:328: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:333: undefined reference to `llvm::Regex::getNumMatches() const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:334: undefined reference to `llvm::Regex::~Regex()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::Match(llvm::StringRef, unsigned long&, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:376: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:403: undefined reference to `llvm::Regex::escape(llvm::StringRef)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:418: undefined reference to `llvm::Regex::Regex(llvm::StringRef, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:418: undefined reference to `llvm::Regex::match(llvm::StringRef, llvm::SmallVectorImpl<llvm::StringRef>*)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:418: undefined reference to `llvm::Regex::~Regex()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::ComputeMatchDistance(llvm::StringRef, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator> const&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:452: undefined reference to `llvm::StringRef::edit_distance(llvm::StringRef, bool, unsigned int) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::PrintFailureInfo(llvm::SourceMgr const&, llvm::StringRef, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator> const&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:462: undefined reference to `llvm::raw_svector_ostream::raw_svector_ostream(llvm::SmallVectorImpl<char>&)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:468: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:469: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:472: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:480: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:483: undefined reference to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:/home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:484: more undefined references to `llvm::raw_ostream::write_escaped(llvm::StringRef, bool)' follow /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::PrintFailureInfo(llvm::SourceMgr const&, llvm::StringRef, llvm::StringMap<llvm::StringRef, llvm::MallocAllocator> const&) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:489: undefined reference to `llvm::raw_svector_ostream::str()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:489: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:490: undefined reference to `llvm::raw_svector_ostream::~raw_svector_ostream()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:527: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `Pattern::FindRegexVarEnd(llvm::StringRef, llvm::SourceMgr&)': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:558: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `CanonicalizeInputFile': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:655: undefined reference to `llvm::MemoryBuffer::getMemBufferCopy(llvm::StringRef, llvm::StringRef)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `CheckTypeSize': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:687: undefined reference to `llvm::llvm_unreachable_internal(char const*, char const*, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:690: undefined reference to `llvm::llvm_unreachable_internal(char const*, char const*, unsigned int)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `FindFirstCandidateMatch': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:748: undefined reference to `llvm::StringRef::find(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `ReadCheckFile': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:825: undefined reference to `llvm::MemoryBuffer::getFileOrSTDIN(llvm::StringRef, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>
&, long)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:827: undefined reference to `llvm::error_code::message() const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:826: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:868: undefined reference to `llvm::StringRef::find_first_not_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:871: undefined reference to `llvm::StringRef::find_first_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:886: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:897: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:926: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:930: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:932: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:935: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `PrintCheckFailed': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:947: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:951: undefined reference to `llvm::StringRef::find_first_not_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:954: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `CountNumNewlinesBetween': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:972: undefined reference to `llvm::StringRef::find_first_of(llvm::StringRef, unsigned long) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `CheckString::CheckNext(llvm::SourceMgr const&, llvm::StringRef) const': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1036: undefined reference to `llvm::SourceMgr::FindBufferContainingLoc(llvm::SMLoc) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1046: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1048: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1050: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1056: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1058: undefined reference to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:/home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1060: more undefined references to `llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::SourceMgr::DiagKind, llvm::Twine const&, llvm::ArrayRef<llvm::SMRange>, llvm::ArrayRef<llvm::SMFixIt>, bool) const' follow /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `ValidateCheckPrefix': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1170: undefined reference to `llvm::Regex::Regex(llvm::StringRef, unsigned int)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1171: undefined reference to `llvm::Regex::match(llvm::StringRef, llvm::SmallVectorImpl<llvm::StringRef>*)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1171: undefined reference to `llvm::Regex::~Regex()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `main': /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1199: undefined reference to `llvm::sys::PrintStackTraceOnErrorSignal()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1201: undefined reference to `llvm::cl::ParseCommandLineOptions(int, char const* const*, char const*)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1204: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1222: undefined reference to `llvm::MemoryBuffer::getFileOrSTDIN(llvm::StringRef, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> &, long)' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1224: undefined reference to `llvm::error_code::message() const' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1223: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1229: undefined reference to `llvm::errs()' /home/varosi/haskell/llvm/utils/FileCheck/FileCheck.cpp:1298: undefined reference to `llvm::SourceMgr::~SourceMgr()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::GenericOptionValue::GenericOptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:355: undefined reference to `vtable for llvm::cl::GenericOptionValue' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::OptionValue<std::string>::~OptionValue()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:458: undefined reference to `vtable for llvm::cl::OptionValue<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::basic_parser_impl::basic_parser_impl()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:700: undefined reference to `vtable for llvm::cl::basic_parser_impl' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::basic_parser<std::string>::~basic_parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:739: undefined reference to `vtable for llvm::cl::basic_parser<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::parser<std::string>::~parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:912: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::opt<llvm::cl::FormattingFlags, llvm::cl::desc, llvm::cl::NumOccurrencesFlag>(llvm::cl::FormattingFlags const&, llvm::cl::desc const&, llvm::cl::NumOccurrencesFlag const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1225: undefined reference to `vtable for llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1225: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1227: undefined reference to `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::done()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::opt<char [11], llvm::cl::desc, llvm::cl::initializer<char [2]>, llvm::cl::value_desc>(char const (&) [11], llvm::cl::desc const&, llvm::cl::initializer<char [2]> const&, llvm::cl::value_desc const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1232: undefined reference to `vtable for llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1232: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1234: undefined reference to `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::done()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::list<char [13], llvm::cl::desc>(char const (&) [13], llvm::cl::desc const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1385: undefined reference to `vtable for llvm::cl::parser<std::string>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::basic_parser<bool>::basic_parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:739: undefined reference to `vtable for llvm::cl::basic_parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::basic_parser<bool>::~basic_parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:739: undefined reference to `vtable for llvm::cl::basic_parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::parser<bool>::parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:749: undefined reference to `vtable for llvm::cl::parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::parser<bool>::~parser()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:749: undefined reference to `vtable for llvm::cl::parser<bool>' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::opt<bool, false, llvm::cl::parser<bool> >::opt<char [18], llvm::cl::desc>(char const (&) [18], llvm::cl::desc const&)': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1217: undefined reference to `vtable for llvm::cl::opt<bool, false, llvm::cl::parser<bool> >' /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1219: undefined reference to `llvm::cl::opt<bool, false, llvm::cl::parser<bool> ::done()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `std::enable_if<std::numeric_limits<int>::is_signed, bool>::type llvm::StringRef::getAsInteger<int>(unsigned int, int&) const': /home/varosi/haskell/llvm/include/llvm/ADT/StringRef.h:346: undefined reference to `llvm::getAsSignedInteger(llvm::StringRef, unsigned int, long long&)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>::find(llvm::StringRef)': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:274: undefined reference to `llvm::StringMapImpl::FindKey(llvm::StringRef) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>::find(llvm::StringRef) const': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:280: undefined reference to `llvm::StringMapImpl::FindKey(llvm::StringRef) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::done()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1362: undefined reference to `llvm::cl::Option::addArgument()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::StringMapEntry<llvm::StringRef>& llvm::StringMap<llvm::StringRef, llvm::MallocAllocator>::GetOrCreateValue<llvm::StringRef>(llvm::StringRef, llvm::StringRef)': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:345: undefined reference to `llvm::StringMapImpl::LookupBucketFor(llvm::StringRef)' /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:362: undefined reference to `llvm::StringMapImpl::RehashTable()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::SmallVectorTemplateCommon<char, void>::grow_pod(unsigned long, unsigned long)': /home/varosi/haskell/llvm/include/llvm/ADT/SmallVector.h:82: undefined reference to `llvm::SmallVectorBase::grow_pod(void*, unsigned long, unsigned long)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::StringMapEntry<char>& llvm::StringMap<char, llvm::MallocAllocator>::GetOrCreateValue<char>(llvm::StringRef, char)': /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:345: undefined reference to `llvm::StringMapImpl::LookupBucketFor(llvm::StringRef)' /home/varosi/haskell/llvm/include/llvm/ADT/StringMap.h:362: undefined reference to `llvm::StringMapImpl::RehashTable()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `void llvm::cl::initializer<char [2]>::apply<llvm::cl::opt<std::string, false, llvm::cl::parser<std::string>
(llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >&) const': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:315: undefined reference to `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::setInitialValue(std::string const&)' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl4listISsbNS0_6parserISsEEEE[_ZTVN4llvm2cl4listISsbNS0_6parserISsEEEE]+0x20): undefined reference to `llvm::cl::Option::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl11OptionValueIbEE[_ZTVN4llvm2cl11OptionValueIbEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl15OptionValueBaseIbLb0EEE[_ZTVN4llvm2cl15OptionValueBaseIbLb0EEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl15OptionValueCopyIbEE[_ZTVN4llvm2cl15OptionValueCopyIbEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o:(.data.rel.ro._ZTVN4llvm2cl15OptionValueCopyISsEE[_ZTVN4llvm2cl15OptionValueCopyISsEE]+0x28): undefined reference to `llvm::cl::GenericOptionValue::anchor()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::~opt()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1156: undefined reference to `vtable for llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::opt<bool, false, llvm::cl::parser<bool> >::~opt()': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1156: undefined reference to `vtable for llvm::cl::opt<bool, false, llvm::cl::parser<bool> >' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::PrettyStackTraceProgram::~PrettyStackTraceProgram()': /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:58: undefined reference to `vtable for llvm::PrettyStackTraceProgram' /home/varosi/haskell/llvm/include/llvm/Support/PrettyStackTrace.h:58: undefined reference to `llvm::PrettyStackTraceEntry::~PrettyStackTraceEntry()' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::getOptionWidth() const': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1352: undefined reference to `llvm::cl::basic_parser_impl::getOptionWidth(llvm::cl::Option const&) const' /home/varosi/haskell/llvm/build/utils/FileCheck/Debug+Asserts/FileCheck.o: In function `llvm::cl::list<std::string, bool, llvm::cl::parser<std::string> >::printOptionInfo(unsigned long) const': /home/varosi/haskell/llvm/include/llvm/Support/CommandLine.h:1354: undefined reference to `llvm::cl::basic_parser_impl::printOptionInfo(llvm::cl::Option const&, unsigned long) const' collect2: error: ld returned 1 exit status make[2]: *** [/home/varosi/haskell/llvm/build/Debug+Asserts/bin/FileCheck] Error 1 make[2]: Leaving directory `/home/varosi/haskell/llvm/build/utils/FileCheck' make[1]: *** [FileCheck/.makeall] Error 2 make[1]: Leaving directory `/home/varosi/haskell/llvm/build/utils' make: *** [all] Error 1
Another thing is that the link from: http://www.haskell.org/haskellwiki/ARM
which is: http://www.haskell.org/pipermail/cvs-ghc/2012-February/070791.html
Is invalid and there could be some more information on the topic. I had to install GCC 4.7 to compile latest LLVM on my Ubuntu 12.
What could be the problem with LLVM?
2014-04-03 17:13 GMT+03:00 Karel Gardas <karel.gardas@centrum.cz>:
On 04/ 3/14 04:05 PM, eng. Vassil Ognyanov Keremidchiev wrote:
Yes, but I don't know what is missing in my workflow.
I did not know if I need LLVM runtime on my target ARM machine.
No, you don't need LLVM runtime. You just need LLVM llc/opt if you'd like to cross-compile and build registerised ARM binaries.
Do I
need? I read that there is unregisterised version for ARM that doesn't need LLVM. So I just could build Haskell cross-compiler that could work on my Ubuntu and create binaries for my ARM v7 machine.
If you'd like to use unregisterised /via-C binaries, then you don't need LLVM at all, you just need to configure with --enable-unregisterised IIRC, but I've not tested that so you are on your own.
Also it comes with its own performance penalty of course: http://ghcarm.wordpress.com/2011/08/07/nofib-benchmarking/
Karel
participants (3)
-
Carter Schonwald -
eng. Vassil Ognyanov Keremidchiev -
Karel Gardas