Skip to content
/ command Public

Very simple information flow aware compiler with Flex, Bison, LLVM, C/C++

Notifications You must be signed in to change notification settings

dfava/command

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
Daniel Fava
May 3, 2018
ddf84a7 · May 3, 2018

History

52 Commits
Jun 2, 2014
May 30, 2014
May 3, 2018
May 26, 2014
Jun 4, 2014
Jun 4, 2014
Jun 4, 2014
Jun 4, 2014
Jun 4, 2014
Jun 4, 2014
Jun 4, 2014
Jun 4, 2014
Jun 4, 2014
Jun 4, 2014

Repository files navigation

command

Very simple information flow aware compiler with Flex, Bison, LLVM, C/C++.

The goal was to implement a basic compiler and type checker for a simple programming language used to describe information flow concepts on a paper by Sabelfeld and Myers.

  • A. Sabelfeld, A. Myers., "Language-based information-flow security." Selected Areas in Communications, IEEE Journal on, 21(1):5–19, 2003.

This work is based on a blog by Segal and on the LLVM Kaleidoscope tutorial:

Requirements

  • flex
  • bison
  • llvm

The versions used for the project were:

  • flex 2.5.35 Apple(flex-31)
  • bison (GNU Bison) 3.0.2
  • LLVM version 3.5.0svn

LLVM was built from source using the following commits:

  • llvm commit 6d4e5ab349be65305d83176ad4f3ab6dfbc08292 Date: Wed Apr 2 21:22:03 2014 +0000

  • compiler-rt commit 2686e6405ef2d5f6755efc511bc455c3a82d4a2c Date: Wed Apr 2 13:09:22 2014 +0000

  • test-suite commit da359830846d3351367595ea885686404e7adee4 Date: Tue Mar 25 04:35:27 2014 +0000

  • clang commit ce167d998928ace8e12dd0edf7b5104850b2b325 Date: Wed Apr 2 18:28:36 2014 +0000

Instructions on how to build LLVM can be found online. They will roughly be:

$ cd ~
$ mkdir llvm
$ git clone http://llvm.org/git/llvm.git
$ cd ~/llvm/llvm/tools
$ git clone http://llvm.org/git/clang.git
$ cd ~/llvm/llvm/projects
$ git clone http://llvm.org/git/compiler-rt.git
$ git clone http://llvm.org/git/test-suite.git
$ cd ~/llvm
$ mkdir obj_root 
$ mkdir build
$ cd obj_root 
$ ../llvm/configure --prefix=/Users/dfava/llvm/build --enable-debug-runtime --enable-jit --disable-optimized --disable-terminfo
$ make -j 8
$ make install
$ make -C runtime install-bytecode

Usage

Example usage:

$ ./command -h
$ ./command -f ./examples/example_if3.cmd -v 1

About

Very simple information flow aware compiler with Flex, Bison, LLVM, C/C++

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published