DyninstAPI

An Application Program Interface (API) for Runtime Code Generationi

University of Maryland

Distribution and Documentation

Version 6.1, released on December 8, 2009. Improvements from version 6.0 include:

Also included in this release is SymtabAPI 6.1, StackwalkerAPI 1.1, InstructionAPI 1.1, and DepgraphAPI 1.0.

Paradyn/Dyninst Week 2010

The 2010 Paradyn/Dyninst Annual Meeting will be held in Madison during the week of April 12, 2010. Stay tuned for registration information!

Background

The normal cycle of developing a program is to edit source code, compile it, and then execute the resulting binary. However, sometimes this cycle can be too restrictive. We may wish to change the program while it is executing, and not have to re-compile, re-link, or even re-execute the program to change the binary. Applications that can make use of this dynamic code adaptation system include:

We have created an Application Program Interface (API) to permit the insertion of code into a running program. The goal of this API is to provide a machine independent interface to permit the creation of tools and applications that use runtime code patching. This API is based on the idea of Dynamic Instrumentation described in [1, 2] and used in the example here.

A variety of tools have been built using dyninst.

Status

We have released version 6.1 of the API. This release supports Power/PowerPC (AIX), SPARC (Solaris), x86 (Linux and Windows NT/2K/XP), and ia64 (Linux).

Breaking News

The results of the daily regression tests at Maryland and Wisconsin can be viewed here.
Note: these are the results for the most current snapshot of the CVS tree, not the current release. As a result, sometimes a large number of test cases might fail one day due to a bad commit by one of the dyninst developers.

We have posted code coverage statistics for the dyninst test cases.

Additional Information

To report bugs send mail to bugs@dyninst.org.