Formal verification of object layout for c++ multiple inheritance

  • Authors:
  • Tahina Ramananandro;Gabriel Dos Reis;Xavier Leroy

  • Affiliations:
  • INRIA Paris-Rocquencourt, Le Chesnay, France;Texas A&M University, College Station, TX, USA;INRIA Paris-Rocquencourt, Le Chesnay, France

  • Venue:
  • Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
  • Year:
  • 2011

Quantified Score

Hi-index 0.00

Visualization

Abstract

Object layout - the concrete in-memory representation of objects - raises many delicate issues in the case of the C++ language, owing in particular to multiple inheritance, C compatibility and separate compilation. This paper formalizes a family of C++ object layout schemes and mechanically proves their correctness against the operational semantics for multiple inheritance of Wasserrab et al. This formalization is flexible enough to account for space-saving techniques such as empty base class optimization and tail-padding optimization. As an application, we obtain the first formal correctness proofs for realistic, optimized object layout algorithms, including one based on the popular "common vendor" Itanium C++ application binary interface. This work provides semantic foundations to discover and justify new layout optimizations; it is also a first step towards the verification of a C++ compiler front-end.