Download Carburizer


Carburizer is a tool that removes hardware dependence bugs. More details here. This page demonstrates how to get carburizer (the static analysis component) working on your local machine.

Software Required

The following software is required to run Carburizer.

Steps to install CIL

  1. Install OCaml from your linux distribution or download from here. Make sure ocaml is in your path.
  2. Run "ocaml -version". It should return 3.08 or higher.
  3. Install CIL + Carburizer from here. Download, untar the above file and run:
    make install 
    This will generate the executable cilly in cil/bin/cilly. Ensure this executable is in your path ($PATH). As a test that cil is installed and in your path, go into the sample directory and RUN make ptr. You should be able to see the hardware dependence issues in the ptr.c in the sample directory.
  4. Now we are ready to test drivers for hardware dependence bugs using Carburizer. Carburizer modifies cilly to introduce a new -dodrivers flag to test drivers for hardware dependence bugs.

  5. To test any driver, locate the corresponding Makefile for the driver and add the following lines:
    CC=cilly --dodrivers
    EXTRA_CFLAGS+=  --save-temps --dodrivers -I myincludes
    LD=cilly --dodrivers
    AR=cilly --mode=AR
    Now build the driver, using the command make. This should show list of hardware dependence bugs and generate a hardened binary.

Drivers with multiple object files

If you want to run carburizer over drivers that consist of multiple files, like e1000. Add the following lines to your top-level Makefile. For example, drivers/net/e1000/Makfile.
CC=cilly --merge --dodrivers
LD=cilly --merge --dodrivers
AR=cilly --merge --mode=AR
These lines run carburizer analysis on the combined file. This enables taint propogation across different files in a driver module.


Please email me( for any questions about Carburizer. Note: This version has automatic fixing (or any code generation) disabled and was released for kernel developers. You can either enable it in source or contact me for that.