Soot - A Java optimization framework
Java TeX HTML XSLT Shell Limbo
Latest commit e8f5a73 Dec 2, 2016 Steven Arzt fixed an issue with primitive arrays. If there is a shared initializa…
…tion "a = null" and variable "a" is then used for both an object array and a primitive array, the local splitter cannot split the two uses because of the shared initialization. Still, primitive arrays cannot be treated as object arrays, so they need special casing
Permalink
Failed to load latest commit information.
doc Options and method source dropping Nov 25, 2016
eclipse fixed some default values Nov 29, 2016
generated fixed some default values Nov 29, 2016
libs fix for the updated library files Nov 18, 2016
src fixed an issue with primitive arrays. If there is a shared initializa… Dec 2, 2016
systests - new test case for string constants wih null literals Nov 4, 2005
tests ignore a test case for stuff that is not yet supported Oct 26, 2016
tutorial fixing documentation issue, fixes #359 Apr 10, 2015
.classpath upgraded the dexlib version, and fixed a severe bug in the dex loader… Nov 18, 2016
.gitignore Added descriptions to build.xml tasks, added Eclipse .settings to .gi… Feb 7, 2016
.project project name = soot Dec 14, 2012
CHANGES CHANGES Sep 18, 2014
COPYING-LESSER.txt Changed from Library General Public License 2 to Lesser General Publi… Jun 3, 2003
README.coding_rules Update README.coding_rules to reflect switch from make to ant, Jun 20, 2004
README.md Fixed a small Typo in the pom.xml snippet's 'version' tag in the Read… Sep 21, 2016
Release_Notice No commit message Jan 22, 2012
TODO - made nop eliminator run before jb phase for java to jimple Nov 17, 2003
TODO.txt updated web page; Jan 22, 2012
ant.settings.jenkins upgraded the dexlib version, and fixed a severe bug in the dex loader… Nov 18, 2016
ant.settings.template upgraded the dexlib version, and fixed a severe bug in the dex loader… Nov 18, 2016
background6.gif prcs 1.2.0.dev.4: Oct 4, 2000
build.xml bumped up the source and target versions to Java 1.7. Nov 18, 2016
credits docs Aug 18, 2014
index.html git Jun 22, 2012
ivy.xml Added ant task to publish soot to local maven repo using ivy Jan 16, 2016
ivysettings.xml Added ant task to publish soot to local maven repo using ivy Jan 16, 2016
local-nightly-build Add self-contained nightly build script "local-nightly-build". Jan 1, 2015
nightly No commit message Jan 22, 2012
pom.xml fixed pom file for new dexlib version Nov 18, 2016
soot.psf Corrected github project references in soot.psf Apr 1, 2014
soot_download.html No commit message Jan 22, 2012
soot_in_eclipse_howto.html Improve the wording of the previous change Apr 5, 2006

README.md

Build Status

What is Soot?

Soot is a Java optimization framework. It provides four intermediate representations for analyzing and transforming Java bytecode:

  • Baf: a streamlined representation of bytecode which is simple to manipulate.
  • Jimple: a typed 3-address intermediate representation suitable for optimization.
  • Shimple: an SSA variation of Jimple.
  • Grimp: an aggregated version of Jimple suitable for decompilation and code inspection.

See http://www.sable.mcgill.ca/soot/ for details.

How do I get started with Soot?

We have some documentation on Soot in the wiki and also a large range of tutorials on Soot.

Including Soot in your Project

A Soot "release" is currently built for each commit to the develop branch. You can include Soot as a dependency via Maven, Gradle, SBT, etc using the following coordinates:

<dependencies>
  <dependency>
    <groupId>ca.mcgill.sable</groupId>
    <artifactId>soot</artifactId>
    <version>RELEASE</version>
  </dependency>
</dependencies>
<repositories>
  <repository>
    <id>bedatadriven</id>
    <name>bedatadriven public repo</name>
    <url>https://nexus.bedatadriven.com/content/groups/public/</url>
  </repository>
</repositories>

How do I obtain the nightly builds

Note that the nightly build server has moved

Nightly builds of soot can be obtained from nightly build. The "soot-trunk.jar" file is an all-in-one file that also contains all the required libraries. The "sootclasses-trunk.jar" file contains only Soot, allowing you to use manually pick dependencies as you need them.

About Soot's source code

Soot follows the git-flow convention. Releases and hotfixes are maintained in the master branch. Development happens in the develop branch. To catch the bleeding edge of Soot, check out the latter. You will also need the projects jasmin and heros. In case of any questions, please consult the Soot mailing list at: http://www.sable.mcgill.ca/mailman/listinfo/soot-list/