Abstract
One of the key problems in modern static verification methods is a precise model for semantics of expressions containing pointers. The trustworthiness of the verification verdict highly depends on the analysis of these expressions. In the paper we describe the verification methods with memory models based on uninterpreted functions, allowing analyzing programs containing expressions with pointers, including pointers to structures, arrays and pointer arithmetic. The approach is limited finite array size and finite recursion depth for dynamic data structures. The method is scalable, as far as it demonstrates reasonable verification times on the industrial size benchmarks containing device drivers of Linux operating system.
Highlights
One of the key problems in modern static verification methods is a precise model for semantics of expressions containing pointers
We describe the verification methods with memory models based on uninterpreted functions, allowing to analyze programs containing expressions with pointers, including pointers to structures, arrays and pointer arithmetic
The method was implemented in CPAchecker tool, based on CEGAR with boolean predicate abstractions and Craig interpolation for inferring new predicates used in abstraction refinement
Summary
Одна из фундаментальных проблем в современных методах статической верификации программ состоит в точном учете семантики выражений с указателями. Метод BMC позволяет поддерживать для языка программирования широчайший набор конструкций, включая выражения с указателями, в том числе указатели на структуры, массивы, адресную арифметику, но так как рассматриваются только конечные пути, то рекурсивные структуры данных поддерживаются на конечную глубину Что свойства, доказанные для абстракции, должны быть верны и на исходной системе. В зависимости от конкретной реализации данный подход позволяет достигать различной точности анализа выражений с указателями, при этом использование теории неинтерпретируемых функций дает возможность его применения только для объектов с наперед заданными размерами. Данный подход обладает ограничениями по сравнению с анализом рекурсивных структур данных для анализа динамических структур данных, так как в нем отсутствуют средства сворачивания длинных последовательностей элементов, однако для структур данных относительно небольшого фиксированного размера его использование может быть вполне оправдано
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have
More From: Proceedings of the Institute for System Programming of RAS
Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.