How to install poolalloc?

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:

  1. cd llvm/projects
    svn co poolalloc
  2. cd LLVM-object-directory
    make tools-only
    cd projects/poolalloc

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 You can just skip the steps in the directions that compile SAFECode.


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).


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.