InterAspect: aspect-oriented instrumentation with GCC

  • Authors:
  • Justin Seyster;Ketan Dixit;Xiaowan Huang;Radu Grosu;Klaus Havelund;Scott A. Smolka;Scott D. Stoller;Erez Zadok

  • Affiliations:
  • Department of Computer Science, Stony Brook University, Stony Brook, USA;Department of Computer Science, Stony Brook University, Stony Brook, USA;Department of Computer Science, Stony Brook University, Stony Brook, USA;Department of Computer Science, Stony Brook University, Stony Brook, USA;Jet Propulsion Laboratory, California Institute of Technology, Pasadena, USA;Department of Computer Science, Stony Brook University, Stony Brook, USA;Department of Computer Science, Stony Brook University, Stony Brook, USA;Department of Computer Science, Stony Brook University, Stony Brook, USA

  • Venue:
  • Formal Methods in System Design
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

We present the InterAspect instrumentation framework for GCC, a widely used compiler infrastructure. The addition of plug-in support in the latest release of GCC makes it an attractive platform for runtime instrumentation, as GCC plug-ins can directly add instrumentation by transforming the compiler's intermediate representation. Such transformations, however, require expert knowledge of GCC internals. InterAspect addresses this situation by allowing instrumentation plug-ins to be developed using the familiar vocabulary of Aspect-Oriented Programming: pointcuts, join points, and advice functions. Moreover, InterAspect uses specific information about each join point in a pointcut, possibly including results of static analysis, to support powerful customized instrumentation. We describe the InterAspect API and present several examples that illustrate its practical utility as a runtime-verification platform. We also introduce a tracecut system that uses InterAspect to construct program monitors that are formally specified as regular expressions.