kirancodes.me
To Proof Maintenance & Beyond!

TIPS: Tracking Integer-Pointer Value Flows for C++ Member Function Pointers

Changwei Zou, Dongjie He, Yulei Sui, Jingling Xue

Abstract

C++ is crucial in software development, providing low-level memory control for performance and supporting object-oriented programming to construct modular, reusable code structures. Consequently, tackling pointer analysis for C++ becomes challenging, given the need to address these two fundamental features. A relatively unexplored research area involves the handling of C++ member function pointers. Previous efforts have tended to either disregard this feature or adopt a conservative approach, resulting in unsound or imprecise results. C++ member function pointers, handling both virtual (via virtual table indexes) and non-virtual functions (through addresses), pose a significant challenge for pointer analysis due to the mix of integers and pointers, often resulting in unsound or imprecise analysis. We introduce T ips , the first pointer analysis that effectively manages both pointers and integers, offering support for C++ member function pointers by tracking their value flows. Our evaluation on T ips demonstrates its accuracy in identifying C++ member function call targets, a task where other tools falter, across fourteen large C++ programs from SPEC CPU, Qt, LLVM, Ninja, and GoogleTest, while maintaining low analysis overhead. In addition, our micro-benchmark suite, complete with ground truth data, allows for precise evaluation of points-to information for C++ member function pointers across various inheritance scenarios, highlighting T ips ’s precision enhancements.

BibTeX
@article{Zou-al:FSE24,
  author    = {Changwei Zou and
               Dongjie He and
               Yulei Sui and
               Jingling Xue},
  title     = {{TIPS:} Tracking {Integer-Pointer} Value Flows for C++ Member Function Pointers},
  journal   = {{PACMSE}},
  volume    = {1},
  number    = {{FSE}},
  pages     = {1609--1631},
  year      = {2024},
}

Related papers