Content area

Abstract

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.

Details

1009240
Title
Using Off-the-Shelf Exception Support Components in C++ Verification
Publication title
arXiv.org; Ithaca
Publication year
2018
Publication date
May 31, 2018
Section
Computer Science
Publisher
Cornell University Library, arXiv.org
Source
arXiv.org
Place of publication
Ithaca
Country of publication
United States
University/institution
Cornell University Library arXiv.org
e-ISSN
2331-8422
Source type
Working Paper
Language of publication
English
Document type
Working Paper
Publication history
 
 
Online publication date
2018-06-01
Milestone dates
2017-03-07 (Submission v1); 2018-05-31 (Submission v2)
Publication history
 
 
   First posting date
01 Jun 2018
ProQuest document ID
2073952328
Document URL
https://www.proquest.com/working-papers/using-off-shelf-exception-support-components-c/docview/2073952328/se-2?accountid=208611
Full text outside of ProQuest
Copyright
© 2018. This work is published under http://arxiv.org/licenses/nonexclusive-distrib/1.0/ (the “License”). Notwithstanding the ProQuest Terms and Conditions, you may use this content in accordance with the terms of the License.
Last updated
2019-05-24
Database
ProQuest One Academic