期刊文献+

C程序精确形状分析中的规范语言设计 被引量:2

Specification Language for Precise Shape Analysis of C Program
下载PDF
导出
摘要 在一个C程序静态分析工具的实现中,设计了一种描述函数行为的规范语言,包括描述程序状态的基本断言,描述内存的谓词以及描述链表、二叉树等递归数据结构的形状谓词.该工具基于编译框架LLVM和符号执行工具KLEE,以函数为单位分析并构造函数行为规范,该过程中需要使用断言描述程序状态并按需抽象成形状谓词表示的形式.为此本文设计并实现了一系列的断言规范化和抽象化规则.通过使用描述内存的谓词以及形状谓词,该分析工具可以检测内存泄露、多次释放等内存安全问题以及进行形状分析. This paper proposes a specification language for describing function behaviors,including assertions for program states,predicates for memory,shape predicates for lists and binary trees in a static analysis tool for C programs.The tool is based on a compiler framework LLVM and symbolic execution tool KLEE.The tool analyses and builds specifications for each function.In this process,we use an assertion language to describe program states and abstract the program states into shape predicates whenever needed.We propose a series of rules to do the normalization and abstraction on assertions.The analysis tool can check memory leaks,double free and other memory safety issues and can do shape analysis with the help of the predicates.
出处 《小型微型计算机系统》 CSCD 北大核心 2016年第4期653-658,共6页 Journal of Chinese Computer Systems
基金 国家自然科学基金面上项目(61170018)资助
关键词 符号执行 规范语言 形状分析 规范化 抽象化 symbolic execution specification language shape analysis normalization abstraction
  • 相关文献

参考文献1

二级参考文献27

  • 1Hoare C A R. An axiomatic basis for computer programming [J]. Communications of the ACM, 1969, 12(10):576-585.
  • 2Paulson L C. Isabelle~ A Generic Theorem Prover [M]. Berlin: Springer, 1994:1-300.
  • 3The Coq Development Team. The Coq proof assistant reference manual, Version 8.2 lOLl. [2009-08-01]. http: //coq. inria, fr.
  • 4Aleksandar N, Morrisett G, Sbinnar A, et al. Ynot: Dependent types for imperative programs [C] //Proe of the 13th ACM SIGPLAN Int Conf on Functional Programming (ICFP'08). New York: ACM, 2008:229-240.
  • 5Barnett M, Rustan M, Leino M, et al. The spec programming system, An overview [G] //LNCS 3362: Proc of Int Workshop Construction and Analysis of Safe, Secure, and Interoperable Smart Devices (CASSIS 2004). Berlin: Springer, 2004: 49-69.
  • 6Flanagan C, Leino K R M, Lillibridge M, et al. Extended static checking for Java [C] //Proc of the Conf on Programming Language Design and Implementation (PLDI'02). New York. ACM, 2002: 234-245.
  • 7Berdine J, Calcagno C, O'Hearn P W. Smallfoot: Modular automatic assertion checking with separation logic [G] // LNCS 4111~ Proc of Formal Methods for Components and Objects(FMCO 2005). Berlin: Springer, 2005:115-137.
  • 8Distefano D, Parkinson M J. jStar: Towards practical verification for Java [C] //Proc of ACM SIGPLAN Int Conf on Object-Oriented Programming, Systems, Languages, and Applications(OOPSLA 2008). New York: ACM, 2008: 213-226.
  • 9Carter G, Monahan R, Morris J M. Software refinement with perfect developer [C] //Proc of the 3rd IEEE Int Conf on Software Engineering and Formal Methods(SEFM 2005). Piscataway, NJ: IEEE, 2005:363-372.
  • 10Reynolds J C. Separation logic: A logic for shared mutable data structures [C] //Proc of the 17th Annual IEEE Symp on Logic in Computer Science (LICS 2002). Piscataway, NJ: IEEE, 2002:55-74.

共引文献10

同被引文献1

引证文献2

二级引证文献2

相关作者

内容加载中请稍等...

相关机构

内容加载中请稍等...

相关主题

内容加载中请稍等...

浏览历史

内容加载中请稍等...
;
使用帮助 返回顶部