Published April 1, 2021 | Version v1
Presentation Open

Automatically Checking Semantic Equivalence between Versions of Large-Scale C Projects

  • 1. Brno University of Technology, Faculty of Information Technology and Red Hat
  • 2. Brno University of Technology, Faculty of Information Technology

Description

Motivated by a need of some software projects to ensure semantic stability of some of their core parts, the paper proposes a highly-scalable approach for automatically checking semantic equivalence of different versions of large C projects, with a particular focus on the Linux kernel. The proposed method uses a novel combination of pattern matching with light-weight static analysis and control-flow transformations. Although the method cannot prove equivalence on heavily refactored code, it can compare thousands of functions in minutes while producing a low number of false non-equality verdicts as our experiments show. We implemented our approach in a tool called DiffKemp and we show that DiffKemp , unlike other existing tools, gives practically useful results even on projects of the size of the Linux kernel.

Files

icst-final.mp4

Files (94.5 MB)

Name Size Download all
md5:e060e6dfe480336119ec2375a0b6bc01
94.5 MB Preview Download