We extended our earlier tool chain to perform efficient enumeration of cycles in programs at large scale. Details of our approach can by found in the accompanying paper. The main change to the earlier implementation is support for programs without a defined entry point, such as libraries. This enables static analysis at object level, rather than relying on fully linked programs.
We distribute the changes to previous code as source patch and as a binary (goto-instrument-git, for Linux/amd64) contained in the full distribution of mole, described below. The new code adds the option --static-cycles to goto-instrument.
The full distribution of mole contains the full tool chain built around this static search in order to analyse archives of goto binaries to provide the information discussed in the paper. The following tool chain was used to obtain the data:
Based on the data, we generate two kinds of reports:
Once mole-0.2.tar.gz is unpacked, we use this tool kit as follows (no command line arguments required, but some of the shell scripts make assumptions about our local directory structure; this needs to be adjusted as needed, in particular the location of the goto binary archives):
These three tools can safely be run in parallel, or even multiple instances of each of them. As idiom-search.sh may have to run for several days or weeks, results will be complete for the Debian packages fully processed so far. For any of the packages classify-wrapper.sh and to-axiom.sh are done with, the reports can be generated accordingly. This is achieved by running mole-to-latex-full.sh.
This document was translated from LATEX by HEVEA.