Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

OCCAM: Object Culling and Concretization for Assurance Maximization

License

NotificationsYou must be signed in to change notification settings

SRI-CSL/OCCAM

 
 

Repository files navigation

PyPI versionBuild 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 ourwiki.

Docker

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

docker pull sricsl/occam:bionicdocker 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 compilerprotoc and the corresponding Pythonpackage. Some OCCAM components (such assea-dsa andcrab 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 pippackage or the GitHubrepository.

The test harness also requireslit andFileCheck.FileCheck can often be found in the binary directory of your LLVM installation. However, if you built your own, you may need to readthis. Hint: the build produces it, but does not install it. (Trylocate FileCheck, then copy it to thebin directory.)

Detailed configuration instructions for Ubuntu 18.04 can be gleaned frombootstrap.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 GrantACI-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.

About

OCCAM: Object Culling and Concretization for Assurance Maximization

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++68.7%
  • Python12.4%
  • LLVM6.8%
  • Shell4.9%
  • C4.7%
  • Makefile2.3%
  • Dockerfile0.2%

[8]ページ先頭

©2009-2025 Movatter.jp