Call Graph Construction for Program Analysis


Call Graph Construction for Program Analysis

Fartygin A.X. (ISP RAS, Moscow, Russia; MIPT, Dolgoprudny, Moscow Region, Russia)
Borodin A.E. (ISP RAS, Moscow, Russia)
Dvortsova V.V. (ISP RAS, Moscow, Russia)
Afanasyev V.O. (ISP RAS, Moscow, Russia)
Galustov A.L. (ISP RAS, Moscow, Russia)
Belevantsev A.A. (ISP RAS, Moscow, Russia; MSU, Moscow, Russia)

Abstract

This paper considers a task of call graph construction for programs written in different programming languages including C, C++, Java, Kotlin, Scala, Go, Python. We evaluate the characteristics of various open-source call graph construction tools and then present the design and implementation of our own tool, which supports all these languages. Our approach details key implementation strategies, such as build interception, intermodular linkage, and devirtualization. Finally, we provide experimental results that compare the performance of our tool with that of similar open-source solutions.

Keywords

Static analysis; call graph; linkage graph; JVM; C/C++; Python; Golang; CodeSkeleton; Svace.

Edition

Proceedings of the Institute for System Programming, vol. 38, issue 3, part 1, 2026, pp. 115-128

ISSN 2220-6426 (Online), ISSN 2079-8156 (Print).

DOI: 10.15514/ISPRAS-2026-38(3)-6

For citation

Fartygin A.X., Borodin A.E., Dvortsova V.V., Afanasyev V.O., Galustov A.L., Belevantsev A.A. Call Graph Construction for Program Analysis. Proceedings of the Institute for System Programming, vol. 38, issue 3, part 1, 2026, pp. 115-128 DOI: 10.15514/ISPRAS-2026-38(3)-6.

Full text of the paper in pdf Back to the contents of the volume