CCMutator

Requirements

The source is released under the University of Illinois/NCSA public license
(free, non-viral/copyleft).

CCMutator has been tested on 32-bit Gentoo Linux and Ubuntu 12.1.

Description

CCMutator is a set of partial and higher order mutation operators implemented
as opt passes on LLVM IR. Partial mutation operators allows for some subset
of mutations to occur. For example, instead of removing all calls to
pthread_join the user can specify which occurances to remove.

The passes do not modify the input LLVM bitcode file, this allows for easy
process level concurrency to be obtained using the UNIX & operator. All
possible combinations of mutations can still be created potentially with each
opt pass running as it's own process. See ./scripts for some examples of
scripts used to generate all combinations of mutants.

CCMutator comes with another tool ./combinations to generate numberical
combinations for easier automation of mutant generation.

Operators

Most operators work similarly for both C++11 and POSIX (PThread) libraries.

If LLVM is not availible the shell script ./install_everything.sh will download LLVM 3.2,
compile LLVM and then compile CCMutator. Installation will be relative to
CCMutator top directory (the directory this README is in). The CCMutator
library files will be located in ./install.

Usage

The result of installation is a set of library files that can be loaded by
LLVM's opt using the -load flag.

./lib/ccmutate contains the source files and READMEs for each mutation
operator. See these READMEs for information on using each individual operator.
The operators also have test scripts that show examples of their use.

Issues

Parallel make (-j) appears to not work due to dependency issues

Using a different version of opt/clang/llvm than what is hooked up with
CCmutator during ./configure can result in issues due to feature
additions/changes.