2018
DOI: 10.1016/j.jss.2018.04.026
|View full text |Cite
|
Sign up to set email alerts
|

DiVM: Model checking with LLVM and graph memory

Abstract: In this paper, we introduce the concept of a virtual machine with graphorganised memory as a versatile backend for both explicit-state and abstractiondriven verification of software. Our virtual machine uses the LLVM IR as its instruction set, enriched with a small set of hypercalls. We show that the provided hypercalls are sufficient to implement a small operating system, which can then be linked with applications to provide a POSIX-compatible verification environment. Finally, we demonstrate the viability of… Show more

Help me understand this report
View preprint versions

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
19
0

Year Published

2018
2018
2019
2019

Publication Types

Select...
6

Relationship

4
2

Authors

Journals

citations
Cited by 15 publications
(19 citation statements)
references
References 15 publications
0
19
0
Order By: Relevance
“…Our simulator is based on DiVM [10], an extension of the LLVM language that allows verification and analysis of a wider class of programs (a more detailed description of the DiVM extensions is given in Section 3.1). Since pure LLVM is retained as a subset of the DiVM language, the simulator can also transparently work with pure LLVM bitcode.…”
Section: Related Workmentioning
confidence: 99%
“…Our simulator is based on DiVM [10], an extension of the LLVM language that allows verification and analysis of a wider class of programs (a more detailed description of the DiVM extensions is given in Section 3.1). Since pure LLVM is retained as a subset of the DiVM language, the simulator can also transparently work with pure LLVM bitcode.…”
Section: Related Workmentioning
confidence: 99%
“…DIVINE is an explicit-state model checker primarily designed to detect bugs in multithreaded programs [6]. Testing of multithreaded programs is a known hard problem because of nondeterminism in the execution caused by thread interleavings.…”
Section: Verification Approach and Software Architecturementioning
confidence: 99%
“…DiVM [16] is a verification-oriented virtual machine based on LLVM. A suite of tools based on DiVM implement a number of software verification techniques, including explicit-state, symbolic and abstraction-based model checking.…”
Section: Divmmentioning
confidence: 99%