A Change Framework based on the Low Level Virtual Machine (LLVM)

Jakob Praher. A Change Framework based on the Low Level Virtual Machine (LLVM). Master's thesis, 2007.

Abstract

When developing or deploying large applications, one would like to have more insights into what an application is doing at runtime. Frequently it is required to change defective parts of an application as fast as possible. For instance one may wish to replace a certain function call in a program with another function call whenever a specified condition holds. This master thesis aims at building the change framework, a system for dynamic program instrumentation and analysis. This research builds atop of the Low Level Virtual Machine (LLVM) for representing C/C++ applications in an intermediate form. The change framework consists of two parts, the application under analysis, and a monitor process. The application under analysis is a C/C++ application compiled to LLVM bytecodes. The monitor process communicates with the application process and is able to dynamically instrument and analyze the application process using a domain specific language. This change language has powerful constructs for defining and conditionally applying application changes. An important overall goal of this system is to ease the analysis as well as alteration of low level system software at run-time.