Modular verification of software components in C
Proceedings of the 25th International Conference on Software Engineering
Scalable error detection using boolean satisfiability
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
CUTE: a concolic unit testing engine for C
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Using model checking to find serious file system errors
OSDI'04 Proceedings of the 6th conference on Symposium on Opearting Systems Design & Implementation - Volume 6
Software verification with BLAST
SPIN'03 Proceedings of the 10th international conference on Model checking software
Symstra: a framework for generating object-oriented unit tests using symbolic execution
TACAS'05 Proceedings of the 11th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Model checking concurrent linux device drivers
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Integrated static analysis for Linux device driver verification
IFM'07 Proceedings of the 6th international conference on Integrated formal methods
Towards an open framework for c verification tools benchmarking
PSI'11 Proceedings of the 8th international conference on Perspectives of System Informatics
Using linux device drivers for static verification tools benchmarking
Programming and Computing Software
Hi-index | 0.00 |
Linux contains thousands of device drivers that are developed independently by many developers. Though each individual driver source code is relatively small---≈10k lines of code---the whole operating system contains a few million lines of code. Therefore Linux device drivers offer a useful application area for modular analysis.Our finding is that despite the precise modeling of most features of the standard systems programming language C, model checking software verification tools for C fail to provide means for modular analysis of device drivers. We inspected CBMC [2], SLAM-SDV [3], MAGIC [1], BLAST [4] and others and found that a rich additional environment model for every device driver is needed. This model must provide information on out-of-scope initialized pointers and complex data structures. We present strategies to automatically create feasible, bounded data environments for Linux device drivers instead of creating them manually. Our solution differs from general interface generation mechanisms (e.g. CUTE[5]), because is it specialised on bounded model checking of Linux device drivers written in C. Our contribution is a preprocessing step that extends the usability of CBMC for modular Linux device driver analysis.