[Soot-list] Multiple runs of Soot

Campbell Morrison cammorr at gmail.com
Wed Jul 22 09:21:40 EDT 2009


I am totally stumped.  Downloaded
http://www.sable.mcgill.ca/software/sootall-2.3.0.tar.gz again, cleaned and
built jasmin, polyglot and soot from scratch and then manually added all the
required libraries in the soot classpath.  I ran soot with the command:
java soot.Main -cp
.:/usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/rt.jar:/polyglot/polyglot.jar:/jasmin/jasminclasses-2.3.0.jar
-f J -keep-line-number -print-tags -src-prec java Foo
and my output was still only with LineNumberTag.  I tried it with Java 5 and
Java 6.  Same result.

>From this file ...
public class Foo {

       public static void main(String[] args) {
               System.err.println("soso");
       }

}

... I get this file ...

public class Foo extends java.lang.Object
{
/*Foo.java*/

/*[args]*/
    public static void main(java.lang.String[])
    {
        java.lang.String[] args;
        java.io.PrintStream temp$0;

        args := @parameter0: java.lang.String[];
/*3*/
        temp$0 = <java.lang.System: java.io.PrintStream err>;
/*3*/
        virtualinvoke temp$0.<java.io.PrintStream: void
println(java.lang.String)>("soso");
/*4*/
        return;
/*4*/
    }

/*[]*/
    public void <init>()
    {
        Foo this;

        this := @this: Foo;
/*1*/
        specialinvoke this.<java.lang.Object: void <init>()>();
/*1*/
        return;
/*1*/
    }
}

On Wed, Jul 22, 2009 at 12:42 PM, Campbell Morrison <cammorr at gmail.com>wrote:

> Yes something's definitely funky on my side.  Thank you for your help
>
>
> On Wed, Jul 22, 2009 at 12:18 PM, Eric Bodden <eric.bodden at mail.mcgill.ca>wrote:
>
>> Hi Campbell.
>>
>> I don't know what, but you must be doing something wrong.
>>
>> For me, Soot produces from this class...
>>
>>
>> public class Foo {
>>
>>        public static void main(String[] args) {
>>                System.err.println("soso");
>>        }
>>
>> }
>>
>>
>> ... this file...
>>
>> public class Foo extends java.lang.Object
>> {
>> /*Foo.java*/
>>
>> /*[args]*/
>>    public static void main(java.lang.String[])
>>    {
>>        java.lang.String[] args;
>>        java.io.PrintStream temp$0;
>>
>>        args := @parameter0: java.lang.String[];
>> /*Source Line Pos Tag: sline: 4 eline: 4 spos: 26 epos: 38 file:
>> Foo.java*/
>>        temp$0 = <java.lang.System: java.io.PrintStream err>;
>> /*Source Line Pos Tag: sline: 5 eline: 5 spos: 3 epos: 29 file: Foo.java*/
>>        virtualinvoke temp$0.<java.io.PrintStream: void
>> println(java.lang.String)>("soso");
>> /*Source Line Pos Tag: sline: 5 eline: 5 spos: 3 epos: 29 file: Foo.java*/
>>        return;
>> /*Source Line Pos Tag: sline: 5 eline: 5 spos: 3 epos: 29 file: Foo.java*/
>>    }
>>
>> /*[]*/
>>    public void <init>()
>>    {
>>        Foo this;
>>
>>        this := @this: Foo;
>> /*2*/
>>        specialinvoke this.<java.lang.Object: void <init>()>();
>> /*2*/
>>        return;
>> /*2*/
>>    }
>> }
>>
>>
>> .... using this command line:
>>
>> -f J -cp
>> .:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar
>> -keep-line-number -print-tags -src-prec java Foo
>>
>> I guess something must be wrong with your soot-class-path or
>> something. Note that Soot must be able to find your *source* files on
>> the soot-class-path.
>>
>> Eric
>>
>> 2009/7/21 Campbell Morrison <cammorr at gmail.com>:
>> > I'm currently bypassing my program and running Soot as a standalone
>> > program.  I run Soot with the command:
>> > java soot.Main -f J -d /foo/bar --soot-classpath /class/path
>> > -keep-line-number -print-tags -src-prec java testClass and then look in
>> the
>> > output file testClass.jimple.  From what I see it's still just
>> > LineNumberTag, and not SourceLnPosTag.
>> >
>> > On Mon, Jul 20, 2009 at 6:37 PM, Eric Bodden <
>> eric.bodden at mail.mcgill.ca>
>> > wrote:
>> >>
>> >> I think a LineNumberTag in cases where a class is loaded from
>> >> bytecode. In that case, there is no column information available, and
>> >> hence Soot uses another Tag. Are you sure that Soot loads classes from
>> >> source code in your case?
>> >>
>> >> This may help:
>> >> http://www.sable.mcgill.ca/pipermail/soot-list/2005-July/000313.html
>> >>
>> >> Eric
>> >>
>> >> 2009/7/20 Campbell Morrison <cammorr at gmail.com>:
>> >> > I already have -keep-line-number and -keep-offset as arguments to
>> >> > soot.Main.main(..) for some of the operations I do, but
>> SourceLnPosTag
>> >> > is
>> >> > never added to the Jimple units.  The only tags added are
>> >> > http://www.sable.mcgill.ca/soot/doc/soot/tagkit/LineNumberTag.htmland
>> >> >
>> http://www.sable.mcgill.ca/soot/doc/soot/tagkit/BytecodeOffsetTag.html
>> >> >
>> >> > I followed Soot's code around a bit and found that in
>> >> > http://www.sable.mcgill.ca/soot/doc/soot/PackManager.html a
>> >> >
>> >> >
>> http://www.sable.mcgill.ca/soot/doc/soot/jimple/toolkits/annotation/LineNumberAdder.html
>> >> > is instantiated and run.  This adder only adds the LineNumberTag to
>> >> > units.
>> >> > I can't find where or how
>> >> > http://www.sable.mcgill.ca/soot/doc/soot/tagkit/SourceLnPosTag.htmlis
>> >> > added
>> >> > to Jimple units.
>> >> >
>> >> > Perhaps it has to do with where my transformer is added?  Before
>> running
>> >> > Soot, I add my own transformer with this line:
>> >> > PackManager.v().getPack( "jtp" ).add( new Transform( "jtp.trueexec",
>> >> > SymbolicTransformer.v()));
>> >> >
>> >> >
>> >> > On Mon, Jul 20, 2009 at 2:15 PM, Eric Bodden
>> >> > <eric.bodden at mail.mcgill.ca>
>> >> > wrote:
>> >> >>
>> >> >> Hi again.
>> >> >>
>> >> >> > I use Soot to read in the Java class files and generate Jimple, so
>> I
>> >> >> > never
>> >> >> > directly look at the Java source code or the AST.  I only work
>> with
>> >> >> > the
>> >> >> > resulting Jimple code.  Can I add the SourceLnPosTag to the Jimple
>> >> >> > statements without creating another transformer?  (For example
>> using
>> >> >> > -keep-line-number input command for line number tag)
>> >> >>
>> >> >> Yes, simply pass -keep-line-number as an argument to
>> >> >> soot.Main.main(..) when you call it.
>> >> >>
>> >> >> Eric
>> >> >> --
>> >> >> Eric Bodden
>> >> >> Sable Research Group, McGill University
>> >> >> Montréal, Québec, Canada
>> >> >
>> >> >
>> >>
>> >>
>> >>
>> >> --
>> >> Eric Bodden
>> >> Sable Research Group, McGill University
>> >> Montréal, Québec, Canada
>> >
>> >
>>
>>
>>
>> --
>> Eric Bodden
>> Sable Research Group, McGill University
>> Montréal, Québec, Canada
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.cs.mcgill.ca/pipermail/soot-list/attachments/20090722/747d1e78/attachment-0001.html 


More information about the Soot-list mailing list