Skip to content

Commit 0530268

Browse files
author
Eric Bodden
committed
Tagging the 2.3.0 release of the Soot project.
1 parent 2f34de8 commit 0530268

File tree

3,586 files changed

+672124
-0
lines changed

Some content is hidden

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

3,586 files changed

+672124
-0
lines changed

trunk/CHANGES

Lines changed: 532 additions & 0 deletions
Large diffs are not rendered by default.

trunk/COPYING-LESSER.txt

Lines changed: 504 additions & 0 deletions
Large diffs are not rendered by default.

trunk/README

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
See index.html for the installation instructions.

trunk/README.coding_rules

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
In March 2003, we made several modifications to Soot to make it better
2+
suited to being used as a library or inside a GUI. The most significant
3+
change was moving all global variables to a single class called G, so
4+
that they could be reset in between different runs of Soot. In order to
5+
maintain interoperability as a library and with GUIs, the following
6+
coding rules have been imposed. A checker has been included which points
7+
out potential violations of these rules. To run it, enter:
8+
9+
ant badfields
10+
11+
Rules:
12+
13+
1) System.out and System.err should not be used. G.v().out should be
14+
used instead. It is normally mapped to System.out, but may be
15+
remapped by a program using Soot as a library or by a GUI.
16+
If you accidentally send stuff to System.out instead, the output
17+
will not appear in Eclipse.
18+
19+
2) There should be no calls to System.exit(). This will kill programs
20+
using Soot as a library and GUIs. Instead, Soot should throw a
21+
CompilationDeathException or a RuntimeException.
22+
23+
3) Static fields should not be used, unless they are final AND of
24+
an immutable type such as a primitive type, String, Object,
25+
Integer or Boolean.
26+
27+
4) Static initializers should not have any side-effects. In particular,
28+
they should not read any static fields. In addition, in order to
29+
ensure that static initializers have no side-effects, they should
30+
not call any methods, except trivial ones known to have no side-effects.
31+
32+
5) Singletons should be implemented as follows:
33+
- add the name of the singleton to soot/src/singletons.list
34+
- run soot/src/make_singletons > soot/src/soot/Singletons.java
35+
- in your singleton, include the following two methods following
36+
the model in soot.jimple.toolkits.base.Aggregator:
37+
38+
public Aggregator( Singletons.Global g ) {}
39+
public static Aggregator v() { return G.v().Aggregator(); }
40+
41+
The Singletons.Global parameter to the only constructor ensures
42+
that only the Singletons class may instantiate the singleton,
43+
since only it can create a Singletons.Global. The v() method
44+
fetches the singleton instance from the Singletons class.
45+
THE SINGLETON SHOULD NOT HAVE ITS OWN STATIC FIELD CONTAINING
46+
THE SINGLETON INSTANCE. soot.G is the only singleton holding
47+
its own instance, meaning that all global variables and singletons
48+
can be reset by resetting that one single instance.
49+
50+
6) "ant badfields" should be run periodically to check that these rules
51+
are being followed. It will report most violations. Unfortunately,
52+
it also reports some false positives that must be checked by hand.
53+
Many of these are final static arrays, whose elements are never
54+
modified. Unfortunately, Java doesn't have a final keyword that
55+
applies to elements of arrays. It must be checked by hand that these
56+
elements are never written. Presumably Spark could be used to check
57+
that elements of static arrays are not written, but this may make
58+
the checker too clumsy; the intent is for the checker to be widely
59+
used.
60+
61+
EOF

trunk/Release_Notice

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
Dear Soot Users,
2+
3+
We are pleased to announce that Soot version 2.3.0 is now available
4+
at: http://www.sable.mcgill.ca/soot/
5+
6+
This release contains the following additions and improvements:
7+
8+
1. Integrated new JastAdd-based frontend with support for Java 5
9+
source code. Thanks to Torbjorn Ekman for contributing his
10+
frontend and his implementation of Java2Jimple!
11+
12+
2. At the very least if -validate is on, Soot now checks that @this
13+
is only assigned in the first statement of an instance method.
14+
This has always been an implicit assumption for Jimple code
15+
but up until now was not enforced.
16+
17+
3. Integrated full support for preserving annotations in Jimple
18+
and writing them to bytecode. SOURCE level annotations are
19+
preserved if code is read from source and the flag
20+
-p jb preserve-source-annotations is given. (does not hold for
21+
package and local variable annotations) SOURCE level annotations
22+
are not written into bytecode by Soot.
23+
Annotations can easily be added to SootClass, SootMethod and
24+
SootField instances using the utility class
25+
soot.jimple.toolkits.annotation.j5anno.AnnotationGenerator.
26+
(Thanks to Will Benton!)
27+
28+
4. Java 5 Annotations for fields, classes, parameters and methods
29+
are now fully preserved in bytecode. Jasmin was changed to
30+
implement this support.
31+
32+
5. Ben Bellamy contributed a new implementation for the type assigner.
33+
This is to be published under the title 'Efficient Local Type
34+
Inference' at OOPSLA '08. The new type assigner is usually
35+
faster (it is applied when processing bytecode), and sometimes
36+
more precise. In particular it should always infer the most
37+
narrow type possible.
38+
39+
Also we incorporated fixes to numerous bugs. Thanks for reporting bugs
40+
and/or prividing fixes!
41+
42+
See http://www.sable.mcgill.ca/soot/CHANGES for details.
43+
44+
As of version 2.2.0 the Soot bugzilla is available at:
45+
http://svn.sable.mcgill.ca/bugzilla/. We encourage you to add any Soot
46+
bugs there.
47+
48+
Also, as of version 2.2.0 the Soot wiki is available at:
49+
http://svn.sable.mcgill.ca/wiki/index.php/SootProject. The Soot team
50+
will be using this site for discussing upcoming work, so if you would
51+
like to know what's going on look there.
52+
53+
Regards,
54+
55+
Eric Bodden
56+
Sable Research Group, McGill University

trunk/TODO

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
Todo (as of 2.0.1)
2+
3+
VERY HIGH - fix problem that xml attribute tags are only generated if output == jimple (they should work if other output formats are selected also) - fixed
4+
5+
VERY HIGH - fix the mechanism used to generate attributes in the source viewers in Eclipse - fixed - needs more work - fixed
6+
7+
HIGH - finish coloring for stmts - fixed
8+
9+
HIGH - make visual attributes display in inner classes in source - done
10+
11+
HIGH - implement getting the actual Soot Output dir from Soot so the plugin can find the xml attributes file (right now if you use a dir other then the default the attributes cannot be found)
12+
13+
HIGH - minimize amount of XML being generated - done
14+
15+
HIGH - write documentation and howto's - done
16+
17+
HIGH - implement running on all source files in project from project menu (currently can only run for all class files - unless process-dir is changed manually)
18+
- done
19+
20+
HIGH - implement being able to run Soot on a package of java files (not classes) and being able to do more then just decompile when a package/folder is selected
21+
22+
HIGH - fix the paths problems when plugin is automatically finding and adding to soot-class-path all jars required by the project (or all jars in the project) -
23+
- fixed
24+
25+
MEDIUM - when cloning a configuration, give the old name of the cloned configuration as a starting point for the new name for the new configuration - done
26+
27+
MEDIUM - decide what to do while Soot is running
28+
1) don't allow the user to do anything
29+
2) don't allow the user to do Soot related things
30+
3) don't restrict the user from doing anything
31+
32+
MEDIUM - implement the Java to Jimple translations for assert and anon inner classes - done
33+
34+
MEDIUM - implement analyses
35+
36+
MEDIUM - fix selection process so if multiple selections are made in package explorer/ navigator - have Soot run with list of classes selected (not just first one as currently happens) - done
37+
38+
MEDIUM - implement a view with the key for colors when displaying color attributes
39+
40+
MEDIUM - determine in soot why fields and methods don't have line number tags when starting from class files
41+
42+
MEDIUM - add tooltips to the entries in the manage configurations dialog with the soot command line of what they save (w/o Eclipse defs in list)
43+
44+
LOW - fix and start using: when dava runs creating a dava project automatically and copying the generated classes there
45+
46+
LOW - fix the problem of polyglot not being able to find classes in jars
47+
48+
LOW - implement import/export a set of options to plugin
49+
50+
LOW - make long_desc be tooltips in pages in Options Dialog (currently the short descriptions are shown)
51+
52+
LOW - Soot Output View possibly limiting the #characters in this view to something (wrapping)
53+
54+
LOW - have dependencies for options dialog
55+
56+
LOW - implement textlistener for updating content outliner as one types
57+
58+
LOW - implement a progress monitor at bottom when running soot
59+
60+
LOW - create better jimple and soot icons
61+
62+
LOW - fix the delete from managed configurations (the configuration name disappears from the list but the configuration never gets deleted from the underlying file where it is saved)
63+
64+
VERY LOW - pop-up generated files after running Soot
65+
66+
VERY LOW - have soot menu from right click on file (jimple only) - when in full screen
67+
68+
VERY LOW - impl an option to run Dava in popup menu Open With ...
69+
70+
VERY LOW - getting decompiled library classes to know their project
71+
72+
Todo (as of 1.2.5)
73+
1. continued work on Spark (points-to) package, Ondrej
74+
2. SSA-Jimple (Navindra)
75+
3. Decompiler (Jerome)
76+
4. Solve UnitGraph for infinite loops (without exit points).
77+
5. More projects from CS621.
78+
6. Precise exception modelling (John)
79+
7. Refactor global variables.
80+
8. Clean up and document options.
81+
82+
Todo (as of 1.2.4)
83+
1. continued work on Spark (points-to) package, Ondrej
84+
2. SSA-Jimple (Navindra)
85+
3. Decompiler (Jerome)
86+
4. Solve UnitGraph for infinite loops (without exit points).
87+
5. More projects from CS621.
88+
6. Precise exception modelling (John)
89+
7. Java 1.4 support.
90+
91+
Todo (as of 1.2.3)
92+
1. Spark (points-to) package, Ondrej
93+
2. SSA-Jimple (Navindra)
94+
3. Decompiler (Jerome)
95+
4. Solve UnitGraph for infinite loops (without exit points).
96+
5. More projects from CS621.
97+
98+
Todo (as of 1.2.2)
99+
1. waiting for more improvements on speed and memory usage
100+
John is working on that.
101+
2. how soot works on other VMs ( such as Kaffe )
102+
103+
Todo (as of 1.2.1)
104+
1. test new command line options provided by Fabien
105+
106+
Open problems (as of 1.2.0):
107+
108+
1. improve our naming scheme to make Soot run on Macintosh.
109+
2. improve the invoke graph builder.
110+
3. include an interprocedural flow analysis framework
111+
and improve the whole-program analysis features.
112+
4. improve soot.toolkits.graph.Block so that we keep a state counter for
113+
the Body and don't trample stuff; this is needed to keep the
114+
BlockLength up to date. Actually, that is somewhat complicated.
115+

trunk/ant.settings.template

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
## Location of JastAdd classes jar file to link Soot against
2+
# This can be found at:
3+
# svn+ssh://musketeer.comlab.ox.ac.uk/srv/svn/projects/trunk/JastAddExtensions/
4+
# check out this url and then set thiss variable to <prefix>/JastAddExtensions/SootJastAddJ
5+
#
6+
# NOTE: You ONLY need to check this out and set this parameter if you wish to regenerate
7+
# the JastAdd-generated files in generated/jastadd!
8+
#
9+
#jastaddfrontend.loc=../JastAddExtensions/SootJastAddJ
10+
11+
## Location of Polyglot classes jar file to link Soot against
12+
polyglot.jar=${user.home}/polyglotclasses.jar
13+
14+
## Location of Jasmin classes jar file
15+
jasmin.jar=${user.home}/jasminclasses.jar
16+
17+
## Location of Eclipse installation.
18+
## This should have a directory called plugins in it.
19+
eclipse.loc=/usr/share/eclipse
20+
21+
## Version of Soot for tagging tarballs.
22+
soot.version=trunk
23+
24+
## Location in which to generate Soot release tarballs.
25+
release.loc=lib
26+
27+
## URL for Java API documentation, for resolving things like
28+
## {@link Iterator} when generating documentation from
29+
## javadoc comments.
30+
javaapi.url=http://java.sun.com/j2se/1.5.0/docs/api/
31+

trunk/background6.gif

334 Bytes
Loading

0 commit comments

Comments
 (0)