package goblint-cil

  1. Overview
  2. Docs
A front-end for the C programming language that facilitates program analysis and transformation

Install

Dune Dependency

Authors

Maintainers

Sources

goblint-cil-2.0.2.tbz
sha256=e6b654a67a46fb5a71a6c9d9ed24f46100d3f33537fef1edf5f57d3058d0dc58
sha512=fbf66413e777b887d11c40adaf3099e6be444a9609c41508d24fe1fdb20d720fad241d2b8cc80fd6dc8829ea02cfbd7b7fc239a94b807e3df29d3f72f9f20c80

Description

This is a fork of the 'cil' package used for 'goblint'. Major changes include:

  • Support for C99 and C11.
  • Compatibility with modern OCaml versions.
  • Use Zarith instead of Num and use that for integer constants.
  • Improved locations with columns and spans.
  • Removal of unmaintained extensions and MSVC support.
  • Use dune instead of make and ocamlbuild.
  • Many bug fixes.

Published: 12 Sep 2023

README

C Intermediate Language (CIL)

CIL is a front-end for the C programming language that facilitates program analysis and transformation. CIL will parse and typecheck a program, and compile it into a simplified subset of C.

goblint-cil is a fork of CIL that supports C99, C11 as well as most of the extensions of the GNU C. It makes many changes to the original CIL in an effort to modernize it and keep up with the latest versions of the C language. Here is an incomplete list of some of the ways goblint-cil improves upon CIL:

  • Support for C99 and C11.

  • Compatibility with modern OCaml versions.

  • Use Zarith instead of Num and use that for integer constants.

  • Improved locations with columns and spans.

  • Removal of unmaintained extensions and MSVC support.

  • Use dune instead of make and ocamlbuild.

  • Many bug fixes.

Quickstart

Install the latest release of goblint-cil with opam:

opam install goblint-cil

Read the excellent CIL tutorial by Zachary Anderson, much of which still applies to goblint-cil. The repository referenced in that document has now moved here.

ATTENTION: Don't install the cil package. This is the unmaintained original version of CIL.

Installation from Source

Prerequisites:

  • opam

  • GCC

  • Perl

First create a local opam switch and install all dependencies:

opam switch create .

Then, you can use dune to build goblint-cil. Run the following commands to build and test goblint-cil:

dune build
dune runtest    # runs the regression test suite

To run a single test go to the build directory (e.g. _build/default/test) and run e.g.:

dune exec -- make test/array1

You can also install goblint-cil into the opam switch:

dune build @install
dune install

Usage

You can use cilly (installed in the opam switch) as a drop-in replacement for gcc to compile and link your programs.

You can also use goblint-cil as a library to write your own programs. For instance in the OCaml toplevel using Findlib:

$ ocaml
OCaml version 4.14.0

# #use "topfind";;
[...]
# #require "goblint-cil";;
[...]
# GoblintCil.cilVersion;;
- : string = "2.0.2"

License

goblint-cil is licensed under the BSD license. See LICENSE.

Dev Dependencies (3)

  1. odoc with-doc
  2. hevea with-doc
  3. ocamlfind with-test

Used by (2)

  1. goblint = "2.2.1"
  2. lintcstubs

Conflicts (1)

  1. cil
OCaml

Innovation. Community. Security.