The paper proposes a new static analysis designed to handle open programs, i.e., fragments of programs, with dynamic pointer-linked data structures - in particular, various kinds of lists - that employ advanced low-level pointer operations. The goal is to allow such programs be analysed without a need of writing analysis harnesses that would first initialise the structures being handled. The approach builds on a special flavour of separation logic and the approach of bi-abduction. The code of interest is analyzed along the call tree, starting from its leaves, with each function analysed just once without any call context, leading to a set of contracts summarizing the behaviour of the analysed functions. In order to handle the considered programs, methods of abduction existing in the literature are significantly modified and extended in the paper. The proposed approach has been implemented in a tool prototype and successfully evaluated on not large but complex programs.
翻译:该文件提出了一个新的静态分析,旨在处理开放式程序,即程序碎片,并配有动态的点点相关数据结构,特别是各种类型的清单,采用先进的低点指示操作。目标是允许在不需要书面分析的情况下分析这类程序,从而不必进行首先为正在处理的结构奠定基础的分析。该方法基于一种特殊的分离逻辑和双重绑架方法。从树叶开始,在呼唤树上分析利益守则,从树叶开始,每个功能只经过一次分析,而没有任何呼唤背景,从而产生一套概述所分析的功能行为的合同。为了处理经过考虑的方案,文献中现有的诱拐方法在文件中作了重大修改和扩展。拟议方法已在一个工具原型中实施,并对非大型但复杂的方案进行了成功评估。