Extractor

Extracts activity diagrams from C code

logo of the Extractor

The Extractor is a GCC-4.8 plugin that is able to dump the control flow graphs of functions compiled by GCC's C compiler, from the intermediate representation built by the latter, It outputs a dump file for each compilation unit with graphs in GraphViz "dot" format.

Viewer

Displays and links the graphs

logo of the Viewer

The Viewer is a GUI, built with Qt 4.8, designed for the exploration of a collection of graphs extracted from a piece of software by the Extractor to understand e.g. the relationships between methods in a large code base or what the compiler does with the source code.

PathExaminer2

Looks for special execution paths

logo of the PathExaminer

The PathExaminer, 2nd edition, is a static analysis implemented as a GCC plugin. It verifies during the compilation the absence of execution paths in Linux system calls that trigger information flows without being controlled by a Linux Security Module hook.

Lib::ActivityDiagrams

Manipulates the graphs

logo of the library for activity diagrams

The ActivityDiagrams is a library used internally by the Extractor to build and manipulates the graphs. It relies on the Boost Graph Library and its output module for the GraphViz format.

Globsym

Builds a database of functions symbols

logo of the Globsym

Globsym is a set of simple scripts that read a compiled object file in order to collect the functions symbols in a database which is used by the Extractor and the Viewer to add context in the graphs.

Dumper

Runs the Extractor on the Linux code base

logo for the Dumper

The dumper is a set of scripts specifically built to run the Extractor on a given version of the Linux code base and output a tarball of graphs for a build. It can also runs Globsym on the output.

Callgraphs

Extracts a callgraph from a codebase

logo for the Callgrapher

The Callgrapher is a GCC plugin which runs during the compilation of source files to extract the graph of function calls in a database. Its output, when run on the Linux kernel, helps guiding the analysis done by the PathExaminer.

In this home page

This is the Kayrebt toolset homepage. The Kayrebt toolset is a collection of software developped mainly by Laurent Georget during its PhD in the CIDRE team (Équipe-projet CIDRE/CentraleSupélec/Inria/CNRS/Université de Rennes 1).

Kayrebt's aim is twofold: to ease the understanding of the Linux codebase (or any other large, written in C, codebase even though it was primarily developped for Linux) and to allow scientists in the field of compilation, formal methods, etc. to run analysis on a model of the code base obtained through automatical means. In our specific case, we use it to assess the correctness of information flow monitors built on top of the Linux Security Modules framework.