santoshn / SoftBoundCETS-3.9

Experimental SoftBoundCETS for LLVM-3.9

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Experimental SoftBoundCETS for LLVM-3.9

This is an experimental version of SoftBoundCETS for LLVM-3.9. It is not yet ready for any serious use.

For more technical details and algorithms, visit SoftBoundCETS website at http://www.cs.rutgers.edu/~santosh.nagarakatte/softbound/

Using SoftBoundCETS for LLVM/Clang-3.9 on a x86-64 machine with Linux OS

  1. Download the github repository from https://github.com/santoshn/SoftBoundCETS-3.9.git

  2. Build SoftBoundCETS-3.9

    1. Goto to directory SoftBoundCETS-3.9 by executing the following command

        cd SoftBoundCETS-3.9
      

      mkdir build cd build

    2. Configure LLVM, clang and softboundcets with the following command

        cmake ../llvm-3.9/
      

      make -j8

  3. Set up your environment to use SoftBoundCETS

    For example in bash, it would be

      export PATH=<git_repo>/SoftBoundCETS-3.9/build/bin:$PATH
    
  4. Compile the SoftBoundCETS runtime library

      cd <git_repo>
      cd runtime
      make
    
  5. Test whether it all worked

    1. Compile

        cd tests
        clang -fsoftboundcets test.c -o test -L<git_repo>/runtime -lm -lrt -lsoftboundcets_rt
      
  6. Run the test program

         ./test
    

    Enter 10; the program executes successfully.

    Enter 105; a memory safety violation is triggered.

NOTES and TODO

(1) LTO is still not enabled.

(2) Checks are not currently inlined.

(3) Enable spatial and temporal check elimination

(4) Add separate modes for softbound, cets, and softboundcets

About

Experimental SoftBoundCETS for LLVM-3.9


Languages

Language:C++ 53.7%Language:LLVM 25.9%Language:C 7.7%Language:Assembly 6.9%Language:Objective-C 2.8%Language:Objective-C++ 0.8%Language:Python 0.6%Language:HTML 0.6%Language:CMake 0.2%Language:OCaml 0.2%Language:Mirah 0.2%Language:Cuda 0.1%Language:Go 0.1%Language:Perl 0.1%Language:Shell 0.0%Language:MATLAB 0.0%Language:JavaScript 0.0%Language:Groff 0.0%Language:Batchfile 0.0%Language:Emacs Lisp 0.0%Language:C# 0.0%Language:Vim Script 0.0%Language:CSS 0.0%Language:Makefile 0.0%Language:Fortran 0.0%Language:Mathematica 0.0%Language:Standard ML 0.0%Language:M 0.0%Language:SourcePawn 0.0%Language:AppleScript 0.0%Language:Mercury 0.0%Language:Forth 0.0%Language:Limbo 0.0%Language:RenderScript 0.0%Language:Rust 0.0%