Compiler-Assisted Software Verification Using Plug-Ins

The authors present Protagoras, a new plug-in architecture for the GNU compiler collection that allows one to modify GCC's internal representation of the program under compilation. They illustrate the utility of Protagoras by presenting plug-ins for both compile-time and runtime software verification and monitoring. In the compile-time case, they have developed plug-ins that interpret the GIMPLE intermediate representation to verify properties statically. In the runtime case, they have developed plug-ins for GCC to perform memory leak detection, array bounds checking, and reference-count access monitoring.