Skip to content

Commit d83b5de

Browse files
author
Eric Bodden
committed
initial checkin
1 parent 56cf8f0 commit d83b5de

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+3800
-0
lines changed

META-INF/MANIFEST.MF

+140
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
Manifest-Version: 1.0
2+
Bundle-ManifestVersion: 2
3+
Bundle-Name: soot-ifds
4+
Bundle-SymbolicName: soot-ifds
5+
Bundle-Version: 1.0.0.qualifier
6+
Bundle-ClassPath: soot-ifds.jar,
7+
guava-13.0.jar,
8+
soot-trunk.jar
9+
Export-Package: com.google.common.annotations,
10+
com.google.common.base,
11+
com.google.common.base.internal,
12+
com.google.common.cache,
13+
com.google.common.collect,
14+
com.google.common.eventbus,
15+
com.google.common.hash,
16+
com.google.common.io,
17+
com.google.common.math,
18+
com.google.common.net,
19+
com.google.common.primitives,
20+
com.google.common.util.concurrent,
21+
soot,
22+
soot.JastAddJ,
23+
soot.baf,
24+
soot.baf.internal,
25+
soot.baf.toolkits.base,
26+
soot.coffi,
27+
soot.dava,
28+
soot.dava.internal.AST,
29+
soot.dava.internal.SET,
30+
soot.dava.internal.asg,
31+
soot.dava.internal.javaRep,
32+
soot.dava.toolkits.base.AST,
33+
soot.dava.toolkits.base.AST.analysis,
34+
soot.dava.toolkits.base.AST.interProcedural,
35+
soot.dava.toolkits.base.AST.structuredAnalysis,
36+
soot.dava.toolkits.base.AST.transformations,
37+
soot.dava.toolkits.base.AST.traversals,
38+
soot.dava.toolkits.base.DavaMonitor,
39+
soot.dava.toolkits.base.finders,
40+
soot.dava.toolkits.base.misc,
41+
soot.dava.toolkits.base.renamer,
42+
soot.grimp,
43+
soot.grimp.internal,
44+
soot.grimp.toolkits.base,
45+
soot.javaToJimple,
46+
soot.javaToJimple.jj,
47+
soot.javaToJimple.jj.ast,
48+
soot.javaToJimple.jj.types,
49+
soot.javaToJimple.toolkits,
50+
soot.jbco,
51+
soot.jbco.bafTransformations,
52+
soot.jbco.gui,
53+
soot.jbco.jimpleTransformations,
54+
soot.jbco.util,
55+
soot.jimple,
56+
soot.jimple.internal,
57+
soot.jimple.interproc.ifds,
58+
soot.jimple.interproc.ifds.edgefunc,
59+
soot.jimple.interproc.ifds.flowfunc,
60+
soot.jimple.interproc.ifds.problems,
61+
soot.jimple.interproc.ifds.solver,
62+
soot.jimple.interproc.ifds.template,
63+
soot.jimple.paddle,
64+
soot.jimple.parser,
65+
soot.jimple.parser.analysis,
66+
soot.jimple.parser.lexer,
67+
soot.jimple.parser.node,
68+
soot.jimple.parser.parser,
69+
soot.jimple.spark,
70+
soot.jimple.spark.builder,
71+
soot.jimple.spark.fieldrw,
72+
soot.jimple.spark.geom,
73+
soot.jimple.spark.geom.geomE,
74+
soot.jimple.spark.geom.geomPA,
75+
soot.jimple.spark.geom.heapinsE,
76+
soot.jimple.spark.geom.ptinsE,
77+
soot.jimple.spark.internal,
78+
soot.jimple.spark.ondemand,
79+
soot.jimple.spark.ondemand.genericutil,
80+
soot.jimple.spark.ondemand.pautil,
81+
soot.jimple.spark.pag,
82+
soot.jimple.spark.sets,
83+
soot.jimple.spark.solver,
84+
soot.jimple.toolkits.annotation,
85+
soot.jimple.toolkits.annotation.arraycheck,
86+
soot.jimple.toolkits.annotation.callgraph,
87+
soot.jimple.toolkits.annotation.defs,
88+
soot.jimple.toolkits.annotation.fields,
89+
soot.jimple.toolkits.annotation.j5anno,
90+
soot.jimple.toolkits.annotation.liveness,
91+
soot.jimple.toolkits.annotation.logic,
92+
soot.jimple.toolkits.annotation.methods,
93+
soot.jimple.toolkits.annotation.nullcheck,
94+
soot.jimple.toolkits.annotation.parity,
95+
soot.jimple.toolkits.annotation.profiling,
96+
soot.jimple.toolkits.annotation.purity,
97+
soot.jimple.toolkits.annotation.qualifiers,
98+
soot.jimple.toolkits.annotation.tags,
99+
soot.jimple.toolkits.base,
100+
soot.jimple.toolkits.callgraph,
101+
soot.jimple.toolkits.graph,
102+
soot.jimple.toolkits.infoflow,
103+
soot.jimple.toolkits.invoke,
104+
soot.jimple.toolkits.pointer,
105+
soot.jimple.toolkits.pointer.nativemethods,
106+
soot.jimple.toolkits.pointer.representations,
107+
soot.jimple.toolkits.pointer.util,
108+
soot.jimple.toolkits.reflection,
109+
soot.jimple.toolkits.scalar,
110+
soot.jimple.toolkits.scalar.pre,
111+
soot.jimple.toolkits.thread,
112+
soot.jimple.toolkits.thread.mhp,
113+
soot.jimple.toolkits.thread.mhp.findobject,
114+
soot.jimple.toolkits.thread.mhp.pegcallgraph,
115+
soot.jimple.toolkits.thread.mhp.stmt,
116+
soot.jimple.toolkits.thread.synchronization,
117+
soot.jimple.toolkits.typing,
118+
soot.jimple.toolkits.typing.fast,
119+
soot.jimple.toolkits.typing.integer,
120+
soot.options,
121+
soot.rtlib.tamiflex,
122+
soot.shimple,
123+
soot.shimple.internal,
124+
soot.shimple.toolkits.graph,
125+
soot.shimple.toolkits.scalar,
126+
soot.sootify,
127+
soot.tagkit,
128+
soot.toolkits.astmetrics,
129+
soot.toolkits.astmetrics.DataHandlingApplication,
130+
soot.toolkits.exceptions,
131+
soot.toolkits.graph,
132+
soot.toolkits.graph.interaction,
133+
soot.toolkits.graph.pdg,
134+
soot.toolkits.scalar,
135+
soot.tools,
136+
soot.util,
137+
soot.util.cfgcmd,
138+
soot.util.dot,
139+
soot.util.queue,
140+
soot.xml

TODO.txt

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
IFDS:
2+
Have simpler templates for flow functions.
3+
Should be efficient, do not create too many sets.
4+
Create binary sets.
5+
Separate normal return from throw flow functions?
6+
Useful templates
7+
Template for local-variable tracking analyses
8+
Performance optimizations
9+
Implement subsumtion as in CC'10 paper
10+
11+
Notes:
12+
Could it be that RHS even works for infinite domains?

build.properties

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
source.soot-ifds.jar = src/
2+
bin.includes = META-INF/,\
3+
soot-ifds.jar,\
4+
soot-trunk.jar,\
5+
guava-13.0.jar
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package soot.jimple.interproc.ifds;
2+
3+
import static java.lang.annotation.ElementType.FIELD;
4+
5+
import java.lang.annotation.Target;
6+
7+
/** Semantic annotation stating that the annotated field can remain unsynchronized.
8+
* This annotation is meant as a structured comment only, and has no immediate effect. */
9+
@Target(FIELD)
10+
public @interface DontSynchronize{ String value() default ""; }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package soot.jimple.interproc.ifds;
2+
3+
4+
/**
5+
* An edge function computes how a V-type value changes when flowing from one
6+
* super-graph node to another. See Sagiv, Reps, Horwitz 1996.
7+
*
8+
* <b>NOTE:</b> Methods defined on this type may be called simultaneously by different threads.
9+
* Hence, classes implementing this interface should synchronize accesses to
10+
* any mutable shared state.
11+
*
12+
* @param <V> The type of values to be computed along flow edges.
13+
*/
14+
public interface EdgeFunction<V> {
15+
16+
/**
17+
* Computes the value resulting from applying this function to source.
18+
*/
19+
V computeTarget(V source);
20+
21+
/**
22+
* Composes this function with the secondFunction, effectively returning
23+
* a summary function that maps sources to targets exactly as if
24+
* first this function had been applied and then the secondFunction.
25+
*/
26+
EdgeFunction<V> composeWith(EdgeFunction<V> secondFunction);
27+
28+
/**
29+
* Returns a function that represents that (element-wise) join
30+
* of this function with otherFunction. Naturally, this is a
31+
* symmetric operation.
32+
* @see JoinLattice#join(Object, Object)
33+
*/
34+
EdgeFunction<V> joinWith(EdgeFunction<V> otherFunction);
35+
36+
/**
37+
* Returns true is this function represents exactly the same
38+
* source to target mapping as other.
39+
*/
40+
public boolean equalTo(EdgeFunction<V> other);
41+
42+
}

0 commit comments

Comments
 (0)