A symbolic analysis framework for static analysis of imperative programming languages

被引:6
|
作者
Burgstaller, Bernd [1 ]
Scholz, Bernhard [2 ]
Blieberger, Johann [3 ]
机构
[1] Yonsei Univ, Seoul 120749, South Korea
[2] Univ Sydney, Sydney, NSW 2006, Australia
[3] Vienna Univ Technol, A-1040 Vienna, Austria
基金
澳大利亚研究理事会; 新加坡国家研究基金会;
关键词
Static program analysis; Symbolic analysis; Path expression algebra; Programming language semantics; INDUCTION VARIABLES; EXECUTION; CHECKING;
D O I
10.1016/j.jss.2011.11.1039
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
We present a generic symbolic analysis framework for imperative programming languages. Our framework is capable of computing all valid variable bindings of a program at given program points. This information is invaluable for domain-specific static program analyses such as memory leak detection, program parallelization, and the detection of superfluous bound checks, variable aliases and task deadlocks. We employ path expression algebra to model the control flow information of programs. A homomorphism maps path expressions into the symbolic domain. At the center of the symbolic domain is a compact algebraic structure called supercontext. A supercontext contains the complete control and data flow analysis information valid at a given program point. Our approach to compute supercontexts is based purely on algebra and is fully automated. This novel representation of program semantics closes the gap between program analysis and computer algebra systems, which makes supercontexts an ideal symbolic intermediate representation for all domain-specific static program analyses. Our approach is more general than existing methods because it can derive solutions for arbitrary (even intra-loop and nested loop) nodes of reducible and irreducible control flow graphs. We prove the correctness of our symbolic analysis method. Our experimental results show that the problem sizes arising from real-world applications such as the SPEC95 benchmark suite are tractable for our symbolic analysis framework. (C) 2011 Elsevier Inc. All rights reserved.
引用
收藏
页码:1418 / 1439
页数:22
相关论文
共 50 条
  • [41] STATIC PROGRAM ANALYSIS IN THE VECTOR PROGRAMMING SYSTEM
    KALYANOV, GN
    PROGRAMMING AND COMPUTER SOFTWARE, 1984, 10 (05) : 240 - 245
  • [42] Static analysis by incremental computation in Go programming
    Nakamura, K
    ADVANCES IN COMPUTER GAMES: MANY GAMES, MANY CHALLENGES, 2004, 135 : 175 - 192
  • [43] PROGRAM ANALYSIS TO SUPPORT CONCURRENT PROGRAMMING IN DECLARATIVE LANGUAGES
    Demeyer, Romain
    TECHNICAL COMMUNICATIONS OF THE 26TH INTERNATIONAL CONFERENCE ON LOGIC PROGRAMMING (ICLP'10), 2010, 7 : 248 - 254
  • [44] Empirical Analysis of the Growth and Challenges of New Programming Languages
    Chakraborty, Partha
    Shahriyar, Rifat
    Iqbal, Anindya
    2019 IEEE 43RD ANNUAL COMPUTER SOFTWARE AND APPLICATIONS CONFERENCE (COMPSAC), VOL 1, 2019, : 191 - 196
  • [45] Workshop on Programming Languages and Analysis for Security (PLAS 2008)
    Pistoia, Marco
    Erlingsson, Ulfar
    ACM SIGPLAN NOTICES, 2008, 43 (12) : 3 - 4
  • [46] Mira: A Framework for Static Performance Analysis
    Meng, Kewen
    Norris, Boyana
    2017 IEEE INTERNATIONAL CONFERENCE ON CLUSTER COMPUTING (CLUSTER), 2017, : 103 - 113
  • [47] A Static Analysis Framework for Database Applications
    Dasgupta, Arjun
    Narasayya, Vivek
    Syamala, Manoj
    ICDE: 2009 IEEE 25TH INTERNATIONAL CONFERENCE ON DATA ENGINEERING, VOLS 1-3, 2009, : 1403 - +
  • [48] McSAF: A Static Analysis Framework for MATLAB
    Doherty, Jesse
    Hendren, Laurie
    ECOOP 2012 - OBJECT-ORIENTED PROGRAMMING, 2012, 7313 : 132 - 155
  • [49] SWAN: A Static Analysis Framework for Swift
    Tiganov, Daniil
    Cho, Jeff
    Ali, Karim
    Dolby, Julian
    PROCEEDINGS OF THE 28TH ACM JOINT MEETING ON EUROPEAN SOFTWARE ENGINEERING CONFERENCE AND SYMPOSIUM ON THE FOUNDATIONS OF SOFTWARE ENGINEERING (ESEC/FSE '20), 2020, : 1640 - 1644
  • [50] A formal verification framework for static analysis
    Albert, Elvira
    Bubel, Richard
    Genaim, Samir
    Haehnle, Reiner
    Puebla, German
    Roman-Diez, Guillermo
    SOFTWARE AND SYSTEMS MODELING, 2016, 15 (04): : 987 - 1012