Aspect-Oriented Instrumentation with GCC

We present the INTERASPECT instrumentation framework for GCC, a widely used compiler infrastructure. The addition of plugin 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. INTERASPECT also supports powerful customized instrumentation, where specific information about each join point in a pointcut, as well as results of static analysis, can be used to customize the inserted instrumentation. We introduce the INTERASPECT API and present several examples that illustrate how it can be applied to useful runtime verification problems.

[1]  Gustavo Alonso,et al.  Controlled, systematic, and efficient code replacement for running java programs , 2008, Eurosys '08.

[2]  Olaf Spinczyk,et al.  The design and implementation of AspectC++ , 2007, Knowl. Based Syst..

[3]  Elisa Bertino,et al.  ECOOP 2000 — Object-Oriented Programming , 2000, Lecture Notes in Computer Science.

[4]  Shigeru Chiba,et al.  A metaobject protocol for C++ , 1995, OOPSLA.

[5]  V. Cechticky,et al.  Implementing Adaptability in Embedded Software through Aspect Oriented Programming , 2004 .

[6]  Eric Bodden,et al.  Racer: effective race detection using aspectj , 2008, ISSTA '08.

[7]  Gregor Kiczales,et al.  Using aspectC to improve the modularity of path-specific customization in operating system code , 2001, ESEC/FSE-9.

[8]  Shigeru Chiba,et al.  Load-Time Structural Reflection in Java , 2000, ECOOP.

[9]  E. Zadok,et al.  Extending GCC with Modular GIMPLE Optimizations , .

[10]  Radu Grosu,et al.  Software monitoring with controllable overhead , 2010, International Journal on Software Tools for Technology Transfer.

[11]  George C. Necula,et al.  CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs , 2002, CC.

[12]  Mario Südholt,et al.  An expressive aspect language for system applications with Arachne , 2005, AOSD '05.

[13]  Samuel P. Midkiff,et al.  Artemis: Practical Runtime Monitoring of Applications for Errors , 2005 .

[14]  Jørgen Lindskov Knudsen ECOOP 2001 — Object-Oriented Programming , 2001, Lecture Notes in Computer Science.

[15]  Ondrej Lhoták,et al.  abc: an extensible AspectJ compiler , 2005, AOSD '05.

[16]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.