Module 9: Pointer Analysis
[Video]
[Slides]
Description:
This module introduces the concept of Pointer Analysis – a form of dataflow analysis that reasons about the flow of pointers. A popular pointer analysis called Andersen’s algorithm and the points-to graph representation is described. Different dimensions for classifying pointer analyses based on accuracy and cost are presented. A more scalable but less precise pointer analysis called Steensgaard’s algorithm is introduced. In the end, an important security application of pointer analysis, called Control Flow Integrity, is discussed.
Objectives:
- Understand the need for Pointer Analysis and the two variants of May-alias analysis and Must-alias analysis.
- Apply Andersen’s algorithm to compute a Points-to Graph for a program that creates and manipulates objects.
- Apply different Heap Abstractions to a program and understand the differences between them.
- Classify Pointer Analysis algorithms using four dimensions: Flow Sensitivity, Context Sensitivity, Heap Abstraction, and Aggregate Modeling.
- Apply Andersen’s and Steensgaard’s algorithms to a program with stack-directed pointers.
- Understand how Pointer Analysis is applied in Control Flow Integrity to enforce security policies.