Affiliation:
1. Technion, Haifa, Israel
Abstract
We address the problem of computing semantic differences between a program and a patched version of the program. Our goal is to obtain a precise characterization of the difference between program versions, or establish their equivalence. We focus on infinite-state numerical programs, and use abstract interpretation to compute an over-approximation of program differences.
Computing differences and establishing equivalence under abstraction requires abstracting relationships between variables in the two programs. Towards that end, we use a correlating abstract domain to compute a sound approximation of these relationships which captures semantic difference. This approximation can be computed over any interleaving of the two programs. However, the choice of interleaving can significantly affect precision. We present a
speculative search algorithm
that aims to find an interleaving of the two programs with minimal abstract semantic difference. This method is unique as it allows the analysis to dynamically alternate between several interleavings.
We have implemented our approach and applied it to real-world examples including patches from Git, GNU Coreutils, as well as a few handpicked patches from the Linux kernel and the Mozilla Firefox web browser. Our evaluation shows that we compute precise approximations of semantic differences, and report few false differences.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Reference41 articles.
1. Github has surpassed sourceforge and google code in popularity. http://readwrite.com/2011/06/02/github-has-passed-sourceforge. Github has surpassed sourceforge and google code in popularity. http://readwrite.com/2011/06/02/github-has-passed-sourceforge.
2. Widening operators for powerset domains
3. Boogie: A Modular Reusable Verifier for Object-Oriented Programs
4. Simple relational correctness proofs for static analyses and program transformations
Cited by
11 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Assembly Function Recognition in Embedded Systems as an Optimization Problem;Mathematics;2024-02-23
2. Classifying edits to variability in source code;Proceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering;2022-11-07
3. PEQtest: Testing Functional Equivalence;Fundamental Approaches to Software Engineering;2022
4. SEMEO: A Semantic Equivalence Analysis Framework for Obfuscated Android Applications;Lecture Notes of the Institute for Computer Sciences, Social Informatics and Telecommunications Engineering;2022
5. Analysis of Software Patches Using Numerical Abstract Interpretation;Static Analysis;2019