An Application Program Interface (API) for Runtime Code Generation


Distribution and Documentation

Version 6.0, released on July 2, 2009. Improvements from version 5.2 include:

  • Binary rewriting - support for rewriting instrumented shared libraries, static and dynamically linked binaries on Linux/x86 and Linux/x_86_64 platforms
  • Support for new platform (Linux/PPC64) and compiler (Microsoft VS 2008)
  • Improved code parsing algorithm
  • Improved slicing internals
  • Support for external Linux debug info
  • Web Interface for nightly tests with options for third party input
  • Autoconf assisted source builds
  • SymtabAPI, StackwalkerAPI, InstructionAPI and DepgraphAPI available as a stand-alone library
  • Dyninst/Paradyn Week 2009

    The 2009 Paradyn/Dyninst annual meeting will be held at the University of Maryland in College Park, Maryland. The Paradyn/Dyninst sessions will be held April 27-28, 2009.

    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:

  • Performance Measurement Tools
  • Correctness Debuggers (efficient data breakpoints)
  • Execution drive simulations
  • Computational Steering
  • 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.0 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

  • Papers about Dyninst
  • Tools and papers that use dyninst
  • Paradyn Project
  • To report bugs send mail to bugs@dyninst.org.