All Projects → SRI-CSL → OCCAM

SRI-CSL / OCCAM

Licence: BSD-3-Clause license
OCCAM: Object Culling and Concretization for Assurance Maximization

Projects that are alternatives of or similar to OCCAM

clam
Static Analyzer for LLVM bitcode based on Abstract Interpretation
Stars: ✭ 180 (+800%)
Mutual labels:  llvm, static-analysis, abstract-interpretation
progge.rs
Program analysis playground for a simple, imperative language
Stars: ✭ 29 (+45%)
Mutual labels:  llvm, static-analysis, abstract-interpretation
Domtresat
Dominator Tree LLVM Pass to Test Satisfiability
Stars: ✭ 42 (+110%)
Mutual labels:  llvm, static-analysis
Stoat
STatic (LLVM) Object file Analysis Tool
Stars: ✭ 44 (+120%)
Mutual labels:  llvm, static-analysis
Sea Dsa
A new context, field, and array-sensitive heap analysis for LLVM bitcode based on DSA.
Stars: ✭ 90 (+350%)
Mutual labels:  llvm, static-analysis
Clangkit
ClangKit provides an Objective-C frontend to LibClang. Source tokenization, diagnostics and fix-its are actually implemented.
Stars: ✭ 330 (+1550%)
Mutual labels:  llvm, static-analysis
Phasar
A LLVM-based static analysis framework.
Stars: ✭ 503 (+2415%)
Mutual labels:  llvm, static-analysis
Codechecker
CodeChecker is an analyzer tooling, defect database and viewer extension for the Clang Static Analyzer and Clang Tidy
Stars: ✭ 1,209 (+5945%)
Mutual labels:  llvm, static-analysis
Sys
Sys: A Static/Symbolic Tool for Finding Good Bugs in Good (Browser) Code
Stars: ✭ 149 (+645%)
Mutual labels:  llvm, static-analysis
Dg
[LLVM Static Slicer] Various program analyses, construction of dependence graphs and program slicing of LLVM bitcode.
Stars: ✭ 242 (+1110%)
Mutual labels:  llvm, static-analysis
SCAF
A Speculation-Aware Collaborative Dependence Analysis Framework
Stars: ✭ 25 (+25%)
Mutual labels:  llvm, static-analysis
Clang Power Tools
Bringing clang-tidy magic to Visual Studio C++ developers.
Stars: ✭ 285 (+1325%)
Mutual labels:  llvm, static-analysis
Seahorn
SeaHorn Verification Framework
Stars: ✭ 270 (+1250%)
Mutual labels:  llvm, static-analysis
Svf
Static Value-Flow Analysis Framework for Source Code
Stars: ✭ 540 (+2600%)
Mutual labels:  llvm, static-analysis
Lyra
No description or website provided.
Stars: ✭ 23 (+15%)
Mutual labels:  static-analysis, abstract-interpretation
Cxxctp
DEPRECATED. USE INSTEAD github.com/blockspacer/flextool
Stars: ✭ 58 (+190%)
Mutual labels:  llvm, static-analysis
monadic-cfa
Generic implementation of different CFA families based on monadic decomposition
Stars: ✭ 16 (-20%)
Mutual labels:  static-analysis, abstract-interpretation
Pyre Check
Performant type-checking for python.
Stars: ✭ 5,716 (+28480%)
Mutual labels:  static-analysis, abstract-interpretation
Crab Llvm
Static Analyzer for LLVM bitcode based on Abstract Interpretation
Stars: ✭ 143 (+615%)
Mutual labels:  llvm, static-analysis
sturdy
Sturdy is a library for developing sound static analyses in Haskell.
Stars: ✭ 49 (+145%)
Mutual labels:  static-analysis, abstract-interpretation

PyPI version Build Status

Description

OCCAM is a whole-program partial evaluator for LLVM bitcode. It can be used to debloat programs and shared/static libraries. To do so, it relies on a manifest that describes the specific deployment context. It uses LLVM version 10.

The available documentation can be found in our wiki.

Docker

A pre-built and installed version of OCCAM can be obtained using Docker:

docker pull sricsl/occam:bionic
docker run -v `pwd`:/host -it sricsl/occam:bionic

Alternatively, it can be built and installed from source as follows.

Prerequisites

OCCAM works on Linux, macOS, and FreeBSD. It depends on an installation of LLVM. OCCAM is built on the top of llvm-10.0 which requires a C++ compiler supporting c++14. You will also need the Google protocol buffer compiler protoc and the corresponding Python package. Some OCCAM components (such as sea-dsa and crab require the boost library >= 1.65.

If you need to generate application bitcode (that OCCAM operates on), you may want to install WLLVM, either from the the pip package or the GitHub repository.

The test harness also requires lit and FileCheck. FileCheck can often be found in the binary directory of your LLVM installation. However, if you built your own, you may need to read this. Hint: the build produces it, but does not install it. (Try locate FileCheck, then copy it to the bin directory.)

Detailed configuration instructions for Ubuntu 18.04 can be gleaned from bootstrap.sh.

Building and Installing

Set where OCCAM's library will be stored:

  export OCCAM_HOME={path to location in your home directory}

Point to your LLVM's location, if non-standard:

  export LLVM_HOME=/usr/local/llvm-10.0
  export LLVM_CONFIG=llvm-config-10.0

Set where system libraries, including Google Protocol Buffers, are located:

  export LD_FLAGS='-L/usr/local/lib'

Clone, build, and install OCCAM with:

  git clone --recurse-submodules https://github.com/SRI-CSL/OCCAM.git
  make
  make install
  make test

This material is based upon work supported by the National Science Foundation under Grant ACI-1440800. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.

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