Published August 31, 2016 | Version v1
Conference paper Open

Structure-Sensitive Points-To Analysis for C and C++

  • 1. National and Kapodistrian University of Athens

Description

We present a points-to analysis for C/C++ that recovers much of the available high-level structure information of types and objects, by applying two key techniques: (1) It records the type of each abstract object and, in cases when the type is not readily available, the analysis uses an allocation-site plus type abstraction to create multiple abstract objects per allocation site, so that each one is associated with a single type. (2) It creates separate abstract objects that represent (a) the fields of objects of either struct or class type, and (b) the (statically present) constant indices of arrays, resulting in a limited form of array-sensitivity.

We apply our approach to the full LLVM bitcode intermediate language and show that it yields much higher precision than past analyses, allowing accurate distinctions between subobjects, v-table entries, array components, and more. Especially for C++ programs, this precision is invaluable for a realistic analysis. Compared to the state-of-the-art past approach, our techniques exhibit substantially better precision along multiple metrics and realistic benchmarks (e.g., 40+% more variables with a single points-to target).

 

Files

cclyzer.pdf

Files (389.7 kB)

Name Size Download all
md5:e3dcf0d86118bcdd9b90cc51cdba0a8f
389.7 kB Preview Download

Additional details

Funding

SPADE – Sophisticated Program Analysis, Declaratively 307334
European Commission