kirancodes.me
To Proof Maintenance & Beyond!

Get Rid of Inline Assembly through Verification-Oriented Lifting

Frédéric Recoules, Sébastien Bardin, Richard Bonichon, Laurent Mounier, Marie-Laure Potet

Abstract

Formal methods for software development have made great strides in the last two decades, to the point that their application in safety-critical embedded software is an undeniable success. Their extension to non-critical software is one of the notable forthcoming challenges. For example, C programmers regularly use inline assembly for low-level optimizations and system primitives. This usually results in rendering state-of-the-art formal analyzers developed for C ineffective. We thus propose TINA, the first automated, generic, verification-friendly and trustworthy lifting technique turning inline assembly into semantically equivalent C code amenable to verification, in order to take advantage of existing C analyzers. Extensive experiments on real-world code (including GMP and ffmpeg) show the feasibility and benefits of TINA.

BibTeX
@inproceedings{Recoules-al:ASE19,
  author    = {Fr{\'{e}}d{\'{e}}ric Recoules and
               S{\'{e}}bastien Bardin and
               Richard Bonichon and
               Laurent Mounier and
               Marie{-}Laure Potet},
  title     = {Get Rid of Inline Assembly through {Verification-Oriented} Lifting},
  booktitle = {ASE},
  pages     = {577--589},
  publisher = {{IEEE}},
  year      = {2019},
}

Related papers