Practicals & Theses

list of practicals and theses at the Cyber-Physical Systems Group

Details for Generic Bytecode Instrumentation with LLVM and InterAspect

The goal of this Master’s thesis is to port the InterAspect program-instrumentation framework from GCC to LLVM, document the porting process and evaluate the implementation by means of realistic case studies.

Description

The goal of this Master’s thesis is to port the InterAspect program-instrumentation framework (1) from GCC to LLVM (2), document the porting process and evaluate the implementation by means of realistic case studies. Due to an inherently modular design and comprehensive documentation of the compiler internals, LLVM offers a much better basis for adding new functionality than GCC and is thus well suited for implementing custom instrumentation as part of the compilation process.

The individual objectives of your work are summarized as follows:

  • Download InterAspect and compile it with GCC 4.5.
  • Experiment with the built-in examples (especially tracecuts).
  • Study LLVM instrumentation examples (e.g. AddressSanitizer (3, 4)) and document resulting requirements for a generic instrumentation framework.
  • Port InterAspect to LLVM, fixing and documenting bugs along the way.
  • Prepare a small repository of tracecuts to detect common programming errors in C programs relying exclusively on functions from libc.
  • Test your implementation by means of the following case studies:
    Case study 1: Implant errors in mature, well-tested software, such as bzip2 or gzip, and make sure InterAspect can detect them using your tracecut repository.
    Case study 2: Test InterAspect and the repository of error-detection tracecuts on student solutions developed as part of the course Betriebssysteme UE (5).
  • Provide a brief discussion with a comparison of both implementations of InterAspect (GCC vs. LLVM).

References
  1. InterAspect program-instrumentation framework. http://www.fsl.cs.stonybrook.edu/interaspect/.
  2. The LLVM Compiler Infrastructure. http://llvm.org/.
  3. AddressSanitizer: A Fast Address Sanity Checker. Available at https://www.usenix.org/conference/usenixfederatedconferencesweek/addresssanitizer-fast-address-sanity-checker/.
  4. LLVM Source. See under llvm/lib/Transforms/Instrumentation in the LLVM source tree.
  5. Betriebssysteme UE. Department of Computer Engineering, Technical University of Vienna. http://ti.tuwien.ac.at/rts/teaching/courses/osue/.

Required Skills

C, GCC internals, LLVM internals

Supervisors

Univ.Ass. Mag. Kenan KALAJDZIC (main responsibility)
E-Mail:

Types

Diplomarbeit

back