lecture 5. program dependencies and program...

67
Lecture 5. Program Dependencies and Program Slicing Wei Le 2016.3

Upload: others

Post on 22-May-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Lecture 5. Program Dependencies and ProgramSlicing

Wei Le

2016.3

Page 2: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Agenda

I Motivation and applications

I Dependencies: control and data dependencies

I Dependency Graphs: control dependence graphs, data dependencegraphs, program dependence graphs, system dependence graphs

I Program Slicing: control and data sliceI Static slice algorithmsI Dynamic slicing algorithms

I Program Chopping

I Program Dicing

I Path Slicing [1995:PLDI:Jhala]

I Thin Slicing [2007:PLDI:Sridharan:Bodik]

I Taint Analysis

I Impact Analysis

Page 3: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Applications and History

Examples of Applications:

I Optimize programs: Can I move this code out of the loop?

I Parallelize programs: Can I run the two pieces of code in parallel?

I Debugging: which sequence of statements lead to this error state?

I ...

History

I Dependence graphs and compiler optimizations [1981:Kuck:POPL]

I Program graph and its use in optimizations [1987:Ferrante:TOPLAS]

I Interprocedural Slicing Using Dependence Graphs[1988:Horwitz:PLDI]

Page 4: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Preliminary: Reaching Definition

I Reaching definition:I Definition d of variable v: a statement that assigns a value to v;I Use of variable v: reference to value of v in an expression evaluation.I Definition d is killed along a path between two points if there exists

an assignment to variable v along the path.I Definition d of variable v reaches a point p if there exists a path

from immediately after d to p such that definition d is not killedalong the path.

Page 5: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Preliminary: Reaching Definition

Page 6: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Preliminary: Reaching Definition

I Unambiguous Definition: X = .;

I Ambiguous Definition: *p = .; p may point to X

I For computing reaching definitions, typically we only consider ”killsby unambiguous definitions”

Example:x = ...*p =Does definition of X reach here? Yes

Page 7: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Data Dependence/Data Dependency

I Two statements are data dependent: the definition of a variable ina statement reaches the usage of the same variable at anotherstatement.

I Data dependences are constraints on the order in which statementmay be executed.

I Different types of data dependencies in the compiler field (typicallyIR or binary code), we say s2 depends on s1 [Kuck:1981:POPL]

I s1 writes memory that s2 later reads (RAW)I s1 reads memory that s2 later writes (WAR)I s1 writes memory that s2 later writes (WAW)I s1 reads memory that s2 later reads (RAR) – input dependency

I In software engineering field, we typically compute dependencies ofRAW, do source and IR level.

Page 8: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Represent Data Dependences

I DU chains: def-use chains (link each defs to uses)I pro: fast to get data dependenciesI con: must be computed and updated, space overhead

I SSA: static single assignment (compiler)I each value produced in the program is represented using a variableI pro: allow analyses and transformations to be simpler and more

efficientI con: may not be executable (requires extra translations to and

from); space and time overhead

I PDG: program dependence graphs (software engineering) – datadependence graphs [1987:ferrante]: node is the statement, edge isthe dependency relation

I Others

Page 9: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

DU Chain: Example

Page 10: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

SSA

Page 11: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

SSA

Transformation to SSA:

I place φ function

I rename variables

Page 12: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Data Dependece Graphs

It is acyclic unless there is a loop in the program

Page 13: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Control Dependence

I from condition 1: Y is not control dependent on any node betweenX and Y; that is, X is the first node Y is control dependent on

I the first statement control dependent on entry of the program

Page 14: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Control Dependence: Example

Page 15: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Control Dependence: Example

Page 16: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Control Dependence Edge

Page 17: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Control Dependence Graph

I PDG: program dependence graphs (software engineering) – controldependence graphs [1987:ferrante]

Page 18: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Program Dependence Graphs (PDG)

Node: statementsEdge: control and data dependence edgesData Dependence + Control Dependence [1987:Ferrante:TOPLAS]

Page 19: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Program Dependence Graphs (PDG): Example

Page 20: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Program Dependence Graphs (PDG): Example

Page 21: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Program Dependence Graphs (PDG): Example

Page 22: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Construct PDG

Papers:

I The program dependence graph and its use in optimization, 1987,TOPLAS

I Efficiently computing static single assignment form and the controldependence graph, 1991, TOPLAS

I Interprocedural slicing using dependence graphs, 1988, PLDI

Tools: Frama-C (for C), Code Surfer (C/C++)

General approach:

I Data dependence: def-use relations (ambiguous definition vsunambiguous definition)

I Control dependence: control flow graphs, post dominators

Page 23: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Construct PDG

Page 24: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs
Page 25: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Construct PDG

Page 26: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

System Dependence Graphs (SDG)

(Optional Materials)

Page 27: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

System Dependence Graphs (SDG)

SDG: an interprocedural dependence graph representation – a collectionof method dependence graphs [1988:Horwitz, 1996:Larsen] (also used byHorwitz, Reps, Binkley)

I Program dependence graph: Represents the system’s main program

I Procedure dependence graphs: Represent the system’s auxiliaryprocedures

I Some additional edgesI Edges that represent direct dependence between a call site and the

called procedureI Edges that represent transitive dependences due to calls

Page 28: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

System Dependence Graphs (SDG)

Five new vertices for SDG

I Call-site vertex

I Actual-in:I Control dependent on call-site vertexI Copy values of actual parameters to call temporaries

I Actual-out:I Control dependent on call-site vertexI Copy from return temporaries

I Formal-in:I Control dependent on procedures entry vertexI Copy value of formal parameters from call temporaries

I Formal-out:I Control dependent on procedures entry vertexI Copy to return temporaries

Page 29: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

System Dependence Graphs (SDG)

Three new edges for SDG

I Call edgeI Call-site → Procedure-entryI From each call-site vertex to the corresponding procedure-entry

vertex

I Parameter-in edgeI Actual-in → Formal-inI From each actual-in vertex at a call site to the corresponding

formal-in vertex in the called procedure

I Parameter-out edgeI Formal-out → Actual-outI From each formal-out vertex in the called procedure to the

corresponding actual-out vertex at the call site

Page 30: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

System Dependence Graphs (SDG)

Page 31: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Construct SDG

1. For each procedure of the system, construct its proceduredependence graph

2. For all call site, introduce a call edge from the call-site vertex to thecorresponding procedure-entry vertex

3. For each actual-in vertex v at a call site, introduce a parameter-inedge from v to the corresponding formal-in vertex in the calledprocedure

4. For each actual-out vertex v at a call site, introduce a parameter-outedge to v from the corresponding formal-out vertex in the calledprocedure

5. Construct the linkage grammar corresponding to the system

6. Compute the subordinate characteristic graphs of the linkagegrammar’s nonterminals

7. At all call sites that call procedure P, introduce flow dependenceedges corresponding to the edges in the subordinate characteristicgraph for P

Page 32: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Program SlicingI Definition

I Computing

I Application

Page 33: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Origin of the Idea

Analysis technique introduced by Mark Weiser in his PHD thesis (1979)

I Idea derived when he was observing experienced programmersdebugging a program

I Result: Every experienced programmer uses slicing to debug aprogram

Page 34: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Program Slicing: Intuitive Understanding

Intuitively, the slice of a program with respect to program point p andvariable x consists of all statements and predicates of the program thatmight affect the value of x at point p

Page 35: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Program Slicing: Intuitive Understanding

Page 36: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Program Slicing: Intuitive Understanding

Produces programs, probably not executable [Ranjit Jhala: Path Slicing]

Page 37: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Program Slicing: Definition Roadmap

I backward and forward slice

I static and dynamic slice

I data and control slice

I slicing criterion

I path slicing

I thin slicing

I program dicing

I program chopping

Page 38: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Program Slicing: Definition

[1981:Weiser:ICSE] [1995:Tip]

I (Backward) slice of v at S is the set of statements involved incomputing v ’s value at S

I A slicing criterion of a program P is a tuple 〈i ,V 〉, where i is astatement in P and V is a subset of the variables in P

Page 39: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Program Slicing: Definition

I static slice and dynamic slice: static slices are computed withoutmaking assumptions regarding a program’s input, whereas thecomputation of dynamic slices relies on a specific test case.

Here, the static slice is the entire program

Page 40: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Program Slicing: Definition

I A data slice is obtained by only taking (static or dynamic) datadependences into account; a control slice consists of the set ofcontrol predicates surrounding a language construct.

I The closure of all data and control slices w.r.t. an expression is the(static or dynamic) slice w.r.t. the set of variables used in theexpression.

Page 41: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Program Slicing: Definition

Forward slice of a program with respect to a program point p andvariable x consists of all statements and predicates of the program thatmight be affected by the value of x at point p

Page 42: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Advanced Definition: Dicing and Chopping

Combining two slices:

I Program dicing [lyle:weiser:1987] – used for fault localization: Aprogram dice is a part of slice in which all stmts which are known tobe correct have been removed.

I Program dicing: a method for combining the information of differentslices. The basic idea is that, when a program computes a correctvalue for variable x and an incorrect value y for variable, the bug islikely to be found in statements that are in the slice w.r.t. y , but notin the slice w.r.t. x .

I Program chopping

Page 43: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Advanced Definition: Path Slicing

I Path Slicing is an interesting technique to reduce the size of acounter example

Page 44: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Advanced Definition: Path Slicing

Page 45: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Advanced Definition: Thin Slicing

[2007:PLDI:Sridharan:Bodik]

I Motivation: Program slice is too large for human to consume –While a traditional slice includes all statements that may affect apoint of interest, not all such statements appear equally relevant toa human

I A thin slice consists only of producer statements for the seed, i.e.,those statements that help compute and copy a value to the seed.Statements that explain why producers affect the seed are excluded.For example, for a seed that reads a value from a container object, athin slice includes statements that store the value into the container,but excludes statements that manipulate pointers to the containeritself.

I 3.3 times fewer statements - debugging, 9.4 times fewer statements- program understanding

Page 46: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Advanced Definition: Thin Slicing

Page 47: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Advanced Definition: Thin Slicing

Page 48: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Advanced Definition: Thin Slicing

Page 49: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Advanced Definition: Thin Slicing

Page 50: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Compute Slice Using PDG: Highlevel Insight

Reachability on PDG

Page 51: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Compute Slice Using PDG

I For vertex S of the Program Dependence Graphs G of a program P,the slice of G with respect to S is a graph (denoted as G/S)containing all vertices of which S has a transitive data or controldependence (i.e. all vertices that can reach S via data or controledges)

I The edges in the slice graph G/S are data dependence and controldependence of the original graph G that have source and targets invertices in G/S

Page 52: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Compute Slice Using PDG

Page 53: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Compute Slice Using PDG

Page 54: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs
Page 55: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs
Page 56: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Program Slicing as Dataflow Problem

Page 57: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Compute Forward Slice

Page 58: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Compute Data and Control Slice

I Data slice: nodes that v transitively data dependent on – findingtransitive data dependence on the data dependence graph

I Control slice: nodes that v transitive control dependent on – findingtransitive control dependence on the control dependence graph

Page 59: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Tools

I Code Surfer (academic license)

I Unravel

Page 60: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Dynamic Slicing

See Xiangyu Zhang’s Slides

Page 61: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Program Slicing: Applications

Page 62: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Program Slicing: Applications

Page 63: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Program Slicing: Applciations

Applications - backward slicing [1990:Horwitz:PLDI]

I Isolate individual computation threads within a program

I Understand complicated code, aid debugging

I Automatic parallelization

I Automatically integrating program variants [1987:Horwitz:POPL]

I Compute a safe approximation to the change in behavior: whetherthe modification on the program P interfere

Applications - forward slicing [1995:Tip]

I Show how a value computed at is being used subsequently, and canhelp the programmer ensure that establishes the invariants assumedby the later statements.

I Inspect the parts of a program that may be affected by a proposedmodification, to check that there are no unforeseen effects on theprogram’s behavior

Page 64: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Taint AnalysisPaper: Certification of programs for secure information flow

I security, binary code, a form of information flow – information flowsfrom object x to object y , denoted x → y , whenever informationstored in x is transferred to, object y .

I forward slicing

Page 65: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Applications of Taint Analysis (combined with forwardsymbolic execution)

Paper: All You Ever Wanted to Know About Dynamic Taint Analysis andForward Symbolic Execution (but might have been afraid to ask)

I Unknown vulnerability detection

I Automatic input filter generation

I Malware analysis

I Test case generation

Page 66: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Static Taint and Dynamic Taint

See Futher Slides

Page 67: Lecture 5. Program Dependencies and Program Slicingweb.cs.iastate.edu/~weile/cs513x/5.DependencySlicing.pdf · Represent Data Dependences I DU chains: def-use chains (link each defs

Change Impact Analysis

Paper: a review of software change impact analysisPaper: A survey of code-based change impact analysis techniques

I Software impact analysis identifies the effects of a software changerequest.