All Projects → seahorn → Crab Llvm

seahorn / Crab Llvm

Licence: apache-2.0
Static Analyzer for LLVM bitcode based on Abstract Interpretation

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Crab Llvm

clam
Static Analyzer for LLVM bitcode based on Abstract Interpretation
Stars: ✭ 180 (+25.87%)
Mutual labels:  llvm, static-analysis, program-analysis
progge.rs
Program analysis playground for a simple, imperative language
Stars: ✭ 29 (-79.72%)
Mutual labels:  llvm, static-analysis, program-analysis
Phasar
A LLVM-based static analysis framework.
Stars: ✭ 503 (+251.75%)
Mutual labels:  static-analysis, llvm, program-analysis
Seahorn
SeaHorn Verification Framework
Stars: ✭ 270 (+88.81%)
Mutual labels:  static-analysis, llvm, program-analysis
Dg
[LLVM Static Slicer] Various program analyses, construction of dependence graphs and program slicing of LLVM bitcode.
Stars: ✭ 242 (+69.23%)
Mutual labels:  static-analysis, llvm, program-analysis
Clang Power Tools
Bringing clang-tidy magic to Visual Studio C++ developers.
Stars: ✭ 285 (+99.3%)
Mutual labels:  static-analysis, llvm
Clangkit
ClangKit provides an Objective-C frontend to LibClang. Source tokenization, diagnostics and fix-its are actually implemented.
Stars: ✭ 330 (+130.77%)
Mutual labels:  static-analysis, llvm
Wala
T.J. Watson Libraries for Analysis
Stars: ✭ 395 (+176.22%)
Mutual labels:  static-analysis, program-analysis
Domtresat
Dominator Tree LLVM Pass to Test Satisfiability
Stars: ✭ 42 (-70.63%)
Mutual labels:  static-analysis, llvm
Svf
Static Value-Flow Analysis Framework for Source Code
Stars: ✭ 540 (+277.62%)
Mutual labels:  static-analysis, llvm
Stoat
STatic (LLVM) Object file Analysis Tool
Stars: ✭ 44 (-69.23%)
Mutual labels:  static-analysis, llvm
Linter
Static Analysis Compiler Plugin for Scala
Stars: ✭ 273 (+90.91%)
Mutual labels:  static-analysis, program-analysis
Sea Dsa
A new context, field, and array-sensitive heap analysis for LLVM bitcode based on DSA.
Stars: ✭ 90 (-37.06%)
Mutual labels:  static-analysis, llvm
Codechecker
CodeChecker is an analyzer tooling, defect database and viewer extension for the Clang Static Analyzer and Clang Tidy
Stars: ✭ 1,209 (+745.45%)
Mutual labels:  static-analysis, llvm
Ikos
Static analyzer for C/C++ based on the theory of Abstract Interpretation.
Stars: ✭ 1,368 (+856.64%)
Mutual labels:  static-analysis, program-analysis
Pyre Check
Performant type-checking for python.
Stars: ✭ 5,716 (+3897.2%)
Mutual labels:  static-analysis, program-analysis
Bap
Binary Analysis Platform
Stars: ✭ 1,385 (+868.53%)
Mutual labels:  static-analysis, program-analysis
tiro
TIRO - A hybrid iterative deobfuscation framework for Android applications
Stars: ✭ 20 (-86.01%)
Mutual labels:  static-analysis, program-analysis
surveyor
A symbolic debugger for C/C++ (via LLVM), machine code, and JVM programs
Stars: ✭ 14 (-90.21%)
Mutual labels:  llvm, program-analysis
Cxxctp
DEPRECATED. USE INSTEAD github.com/blockspacer/flextool
Stars: ✭ 58 (-59.44%)
Mutual labels:  static-analysis, llvm

Clam: Crab for Llvm Abstraction Manager

llvm logocrab logo

Description

Clam is a static analyzer that computes inductive invariants for LLVM-based languages based on the Crab library. This branch supports LLVM 10.

The available documentation can be found in our wiki.

Docker

You can get the latest binary from Docker Hub (nightly built) using the command:

 docker pull seahorn/clam-llvm10:nightly

Requirements for compiling from sources

Clam is written in C++ and uses heavily the Boost library. The main requirements are:

  • Modern C++ compiler supporting c++14
  • Boost >= 1.65
  • GMP
  • MPFR (if -DCRAB_USE_APRON=ON or -DCRAB_USE_ELINA=ON)

In linux, you can install requirements typing the commands:

 sudo apt-get install libboost-all-dev libboost-program-options-dev
 sudo apt-get install libgmp-dev
 sudo apt-get install libmpfr-dev	

To run tests you need to install lit and OutputCheck. In Linux:

 apt-get install python-pip
 pip install lit
 pip install OutputCheck

Compiling from sources and installation

The basic compilation steps are:

 mkdir build && cd build
 cmake -DCMAKE_INSTALL_PREFIX=_DIR_ ../
 cmake --build . --target crab && cmake ..
 cmake --build . --target llvm && cmake ..      
 cmake --build . --target install 

Clam provides several components that are installed via the extra target. These components can be used by other projects outside of Clam.

  • sea-dsa: git clone https://github.com/seahorn/sea-dsa.git

    sea-dsa is the heap analysis used to translate LLVM memory instructions. Details can be found here and here.

  • llvm-seahorn: git clone https://github.com/seahorn/llvm-seahorn.git

    llvm-seahorn provides specialized versions of InstCombine and IndVarSimplify LLVM passes as well as a LLVM pass to convert undefined values into nondeterministic calls.

The component sea-dsa is mandatory and llvm-seahorn is optional but highly recommended. To include these external components, type instead:

 mkdir build && cd build
 cmake -DCMAKE_INSTALL_PREFIX=_DIR_ ../
 cmake --build . --target extra            
 cmake --build . --target crab && cmake ..
 cmake --build . --target llvm && cmake ..           
 cmake --build . --target install 

The Boxes/Apron/Elina domains require third-party libraries. To avoid the burden to users who are not interested in those domains, the installation of the libraries is optional.

  • If you want to use the Boxes domain then add -DCRAB_USE_LDD=ON option.

  • If you want to use the Apron library domains then add -DCRAB_USE_APRON=ON option.

  • If you want to use the Elina library domains then add -DCRAB_USE_ELINA=ON option.

Important: Apron and Elina are currently not compatible so you cannot enable -DCRAB_USE_APRON=ON and -DCRAB_USE_ELINA=ON at the same time.

For instance, to install Clam with Boxes and Apron:

 mkdir build && cd build
 cmake -DCMAKE_INSTALL_PREFIX=_DIR_ -DCRAB_USE_LDD=ON -DCRAB_USE_APRON=ON ../
 cmake --build . --target extra                 
 cmake --build . --target crab && cmake ..
 cmake --build . --target ldd && cmake ..
 cmake --build . --target apron && cmake ..
 cmake --build . --target llvm && cmake ..                
 cmake --build . --target install 

Checking installation

To run some regression tests:

 cmake --build . --target test-simple
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].