karelklic / canal

Abstract interpreter for real-world application programs
https://github.com/karelklic/canal/wiki
Other
32 stars 2 forks source link

Canal

Canal is a static analysis tool designed to analyze behaviour of application programs written in C. It is based on the theoretical framework of abstract interpretation, with focus on the scalability to large programs and proper handling of real-world source code.

Canal comes with a versatile command line tool that can step through the analysis of a program like a debugger can step through the execution of a program, and investigate values of variables and other parts of the analysis.

Canal is divided into three basic components, each with specific responsibility:

LLVM framework is used as the technological foundation of the analysis, and CLang is used to compile C programs to the LLVM intermediate representation. Canal works with LLVM 2.8 to 3.2 and any recent Linux distributions (Fedora 16+, RHEL 6+, Ubuntu, Gentoo).