SEPLMar 7, 2017

Using Off-the-Shelf Exception Support Components in C++ Verification

arXiv:1703.02394v27 citations
Originality Synthesis-oriented
AI Analysis

This work addresses the problem of making formal methods more accessible for C++ developers, though it is incremental as it builds on existing intermediate language approaches.

The paper tackled the challenge of integrating formal verification with C++ by leveraging existing compiler infrastructure to support C++ exceptions, resulting in an implementation that uses 9 C functions and a preprocessor for LLVM bitcode.

An important step toward adoption of formal methods in software development is support for mainstream programming languages. Unfortunately, these languages are often rather complex and come with substantial standard libraries. However, by choosing a suitable intermediate language, most of the complexity can be delegated to existing execution-oriented (as opposed to verification-oriented) compiler frontends and standard library implementations. In this paper, we describe how support for C++ exceptions can take advantage of the same principle. Our work is based on DiVM, an LLVM-derived, verification-friendly intermediate language. Our implementation consists of 2 parts: an implementation of the `libunwind` platform API which is linked to the program under test and consists of 9 C functions. The other part is a preprocessor for LLVM bitcode which prepares exception-related metadata and replaces associated special-purpose LLVM instructions.

Foundations

The foundational work for this paper's niche, ranked by how specifically the neighbourhood builds on it — not by global fame.

Your Notes