Awesome
Pointer Analysis Framework for Symbolic Execution
A pointer analysis framework for the KLEE symbolic virtual machine.
Build
Build SVF fork:
Build KLEE:
git checkout master
mkdir klee_build
cd klee_build
CXXFLAGS="-fno-rtti" cmake \
-DENABLE_SOLVER_STP=ON \
-DENABLE_POSIX_RUNTIME=ON \
-DENABLE_KLEE_UCLIBC=ON \
-DKLEE_UCLIBC_PATH=<UCLIBC_PATH>
-DLLVM_CONFIG_BINARY=<LLVM_CONFIG> \
-DLLVMCC=<LLVMCC> \
-DLLVMCXX=<LLVMCXX> \
-DENABLE_UNIT_TESTS=OFF \
-DKLEE_RUNTIME_BUILD_TYPE=Release+Asserts \
-DENABLE_SYSTEM_TESTS=ON \
-DENABLE_TCMALLOC=ON \
-DSVF_PATH=<SVF_ROOT_DIR> \
<KLEE_ROOT_DIR>
make
Options
Pointer Analysis Modes
Use the following option to perform static analysis:
-use-pta-mode=static
Use the following option to perform past-sensitive analysis:
-use-pta-mode=symbolic
Target Functions
The target functions to analyze are set using the following option:
-pta-target=<function1>[:line1/line2/...],<function2>[:line1/line2/...],...
Allocation Sites
Use the following option to create a unique allocation sites for each dynamic allocation (on by default):
-create-unique-as
Debugging
Use the following option to dump basic points-to information:
-collect-pta-stats
Use the following option to dump detailed points-to information:
-collect-pta-results
Use the following option to dump the mod set for the target function:
-collect-modref