Hi, all
I want to use the alias analysises in project poolalloc, but I encounter some problem during installing it. I install poolalloc as follow:
- cd llvm/projects
svn co http://llvm.org/svn/llvm-project/poolalloc/branches/release_32 poolalloc
- cd LLVM-object-directory
make tools-only
cd projects/poolalloc
make
When I carried out “make”, I get the next error information:
llvm[2]: Compiling AddressTakenAnalysis.cpp for Release+Asserts build (PIC)
AddressTakenAnalysis.cpp:18:30: fatal error: llvm/IR/CallSite.h: No such file or directory compilation terminated.
/bin/rm: cannot remove /home/gu/installed/llvm-2.9/projects/poolalloc/lib/DSA/Release+Asserts/AddressTakenAnalysis.d.tmp': No such file or directory make[2]: *** [/home/gu/installed/llvm-2.9/projects/poolalloc/lib/DSA/Release+Asserts/AddressTakenAnalysis.o] Error 1 make[2]: Leaving directory
/home/gu/installed/llvm-2.9/projects/poolalloc/lib/DSA’
make[1]: *** [all] Error 1
make[1]: Leaving directory `/home/gu/installed/llvm-2.9/projects/poolalloc/lib’
make: *** [all] Error 1
Does poolalloc dependent on some other project which has not been installed now? What should I do for incorrectly installing poolalloc? Thank you all in advance.
Dear Qiuping,
If you use the release_32 branch of poolalloc, then you need to use LLVM 3.2.
For directions on compiling poolalloc with LLVM 3.2, please the SAFECode build directions at http://safecode.cs.illinois.edu/docs/Install.html. You can just skip the steps in the directions that compile SAFECode.
Regards,
John Criswell
Thank you. But now I am using LLVM 2.9, so which version of poolalloc I should use ?
Why are you using LLVM 2.9? That’s an old version of LLVM (even by my standards). Is there some other LLVM-based tool that requires that you use LLVM 2.9? Regards, John Criswell
I am just not upgrade my LLVM. So I must use some higer LLVM version, right?
Yes. For working with poolalloc, I would recommend using LLVM 3.2 as we know poolalloc compiles with LLVM 3.2. If there’s a release_29 branch for poolalloc, you could use that, but you won’t get any bug fixes that we added between poolalloc 2.9 and poolalloc 3.2. Regards, John Criswell
Hi, John Criswell
Thank you very much.
I am installing LLVM-3.2, but I encounter the next error when carrying out “make”:
llvm[3]: Compiling ClangASTNodesEmitter.cpp for Release+Asserts build
ClangASTNodesEmitter.cpp: In member function ‘std::pair<llvm::Record*, llvm::Record*>::ClangASTNodesEmitter::EmitNode(const std::multimap<llvm::Record*, llvm::Record*, std::lessllvm::Record*, std::allocator<std::pair<llvm::Record* const, llvm::Record*> > >&, llvm::raw_ostream&, llvm::Record*)’:
ClangASTNodesEmitter.cpp:80: error: ‘nullptr’ was not declared in this scope
make[3]: *** [/home/guest/installed/llvm-3.2/tools/clang/utils/TableGen/Release+Asserts/ClangASTNodesEmitter.o] Error 1
make[3]: Leaving directory /home/guest/installed/llvm-3.2/tools/clang/utils/TableGen' make[2]: *** [all] Error 1 make[2]: Leaving directory
/home/guest/installed/llvm-3.2/tools/clang’
make[1]: *** [clang/.makeall] Error 2
make[1]: Leaving directory `/home/guest/installed/llvm-3.2/tools’
make: *** [all] Error 1
What’s wrong? What should I do?
Which compiler are you using to compile poolalloc? Looks like it doesn’t support C++11 (doesn’t recognize nullptr).
Jingyue
My gcc version is “gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)”
Is this error occurring when compiling the version of Clang within SAFECode or standard Clang? If it’s the former, you should know that you don’t need to compile SAFECode to use poolalloc; the SAFECode directions just specify how to download and build the correct version of LLVM to match the version of poolalloc that you’re using. If you’ve downloaded Clang to use with LLVM 3.2, did you download Clang 3.2, or did you download the latest Clang release? You need to make sure that all the version numbers match (LLVM 3.2, Clang 3.2, Poolalloc 3.2). If they don’t match, it won’t compile. Regards, John Criswell
Yes, all the version numbers match. I use LLVM 3.2, Clang 3.2, Poolalloc 3.2, and compiler-rt 3.2.