[Soot-list] Generating a CallGraph
Marc-Andre Laverdiere-Papineau
marc-andre.laverdiere-papineau at polymtl.ca
Thu Mar 27 11:24:24 EDT 2014
Hi Graziella,
I would use the PackManager to run the processing pipeline if I were
you. Less risk to break something and less lines of code too :)
--
Marc-André Laverdière-Papineau
Doctorant - PhD Candidate
On 2014-03-27 03:21, Graziella Galea wrote:
> Hi Marc-André,
>
> I think I have found the solution. I had to change the project of
> analysis yesterday and realised that it contains multiple main methods
> (it is a large project). Thus, if I use those as entry points, I can
> easily use SPARK since main methods are static methods! So I thought
> the code would be something like the following but I still have to test it:
>
> private CallGraph setUp(String path, String javafiles, String testSuite)
> throws Exception{
> Options.v().set_no_bodies_for_excluded(true);
> Options.v().set_whole_program(true);
> Options.v().set_allow_phantom_refs(true);
> Options.v().set_process_dir(Arrays.asList(path)); //library dir
> Options.v().set_soot_classpath("C:\\Program
> Files\\Java\\jre7\\lib\\rt.jar;"+path+";" +
> "C:\\Program Files\\Java\\jre7\\lib\\jce.jar");
> //library dir along with rt.jar/jce.jar from JRE/JDK
> Scene.v().loadNecessaryClasses();
> getAllMethods(path);
> //identify source files
> identifySources(javafiles);
> System.out.println("sources identifed");
> identifyTestClasses(testSuite);
> Transform sparkTranform = new Transform( "cg.spark", null );
> PhaseOptions.v().setPhaseOption( sparkTranform, "verbose:true" );
> Map options = PhaseOptions.v().getPhaseOptions( sparkTranform );
> PointsToAnalysis spark = new PAG(new SparkOptions(options));
> CallGraphBuilder builder = new CallGraphBuilder(spark);
> builder.build();
> return builder.getCallGraph();
> }
>
> private ArrayList<SootMethod> getAllMethods(String path) throws Exception{
> Parser p = new Parser();
> ArrayList<File> allFiles = p.getSourceFiles(path, false);
> ArrayList<SootMethod> entryPoints = new ArrayList<SootMethod>();
> for(File f: allFiles){
> //remove the path and leave package path only
> String name = f.getAbsolutePath().replace(path+"\\", "");
> name = name.replace("\\", ".");
> name = name.replace(".class", "");
> SootClass sootClass = Scene.v().forceResolve(name, SootClass.BODIES);
> sootClass.setApplicationClass();
> for(SootMethod m: sootClass.getMethods()){
> if(m.isMain()){
> entryPoints.add(m);
> }
> }
> }
>
> Scene.v().addBasicClass("java.lang.ThreadGroup",SootClass.SIGNATURES);
> Scene.v().setEntryPoints(entryPoints);
> return entryPoints;
> }
>
> I had sent you something similar but it is not the same.
> Do you think that this would result in a robust and precise implementation?
>
> Thanks a lot for your help :)
>
>
>
> On 27 March 2014 03:33, Marc-André Laverdière
> <marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>> wrote:
>
> Hello Graziella,
>
> All right, so now we know what is going on.
>
> I would expect someone during your thesis defense to ask you hard
> questions about CHA if you choose to go that path. CHA is just plain
> bad. It is sound, but that's by putting almost everything. It is the
> equivalent of killing a fly with a nuclear bomb.
>
> Also, if you are going to do any interprocedural analysis, you are
> likely to waste a lot of processing time on spurious edges.
>
> >From what I see, you have 3 options:
> 1) Try running SPARK in RTA mode. That should be better than CHA. But I
> don't know if you'll hit the same problem.
> 2) Generate some fake main. If you are doing Android analysis, Flowdroid
> has one. If you are doing JEE, Bernhard and I have developed one.
> 3) Tweak the Spark algorithm to bootstrap the analysis with a CHA
> fallback for the this pointer of your non-static entry points. I am sure
> that many people would like that contribution.
>
> With a bit of investment on your part, you'll get a solution that will
> be robust and precise, which is a good starting point for a research
> project :)
>
> Regards,
>
> Marc-André Laverdière-Papineau
> Doctorant - PhD Candidate
>
> On 03/25/2014 05:39 PM, Graziella Galea wrote:
> > Hi Marc-André,
> >
> > No, my entry-points are definitely not static. I am a bit unsure
> though
> > which methods should be set as entry-points. I first started
> following
> > the following link at using and it worked. Now that I am trying to
> > change to SPARK so as to make sure that my results are precise, I
> don't
> > think that the same approach applies ie setting each method as an
> > entry-point as suggested in the following link.
> >
> > http://marc.info/?l=soot-list&m=134095873818018&w=2
> >
> > Is generating a main stub better than using CHA algorithm? I am
> trying
> > to decide if I should go back to my previous code which uses the CHA
> > algorithm and seems to be working fine or try to get the SPARK
> working.
> >
> >
> > On 25 March 2014 22:22, Marc-André Laverdière
> > <marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>> wrote:
> >
> > Hi Graziella,
> >
> > I haven't looked at your code and I won't until you tell us
> whether your
> > entry points are static or not, because that is an extremely
> important
> > piece of information. Non-static entry points will give you
> bad results
> > all the time.
> >
> > If you use non-static entry points, you have to choose
> between a call
> > graph algorithm that is less precise, or generating a main stub.
> >
> > Marc-André Laverdière-Papineau
> > Doctorant - PhD Candidate
> >
> > On 03/25/2014 02:56 PM, Graziella Galea wrote:
> > > Hi Marc-André.
> > >
> > > I added the setting
> Options.v().set_no_bodies_for_excluded(true);
> > and it
> > > only took around 25 seconds which is good. Then I tried to
> use SPARK
> > > since it is more precise. The problem is that I do not
> think that the
> > > whole callgraph is being generated. This is because for
> particular
> > > methods, I identify their source methods and some of which
> are not
> > being
> > > found.
> > >
> > > The following is my code:
> > >
> > > private CallGraph setUp(String path, String javafiles, String
> > testSuite)
> > > throws Exception{
> > > Options.v().set_no_bodies_for_excluded(true);
> > > Options.v().set_whole_program(true);
> > > Options.v().set_allow_phantom_refs(true);
> > > Options.v().set_process_dir(Arrays.asList(path)); //library dir
> > > Options.v().set_soot_classpath("C:\\Program
> > > Files\\Java\\jre7\\lib\\rt.jar;"+path+";" +
> > > "C:\\Program Files\\Java\\jre7\\lib\\jce.jar");
> > > //library dir along with rt.jar/jce.jar from JRE/JDK
> > > Scene.v().loadNecessaryClasses();
> > > getAllMethods(path);
> > > //identify source files
> > > identifySources(javafiles);
> > > System.out.println("sources identifed");
> > > identifyTestClasses(testSuite);
> > > Transform sparkTranform = new Transform( "cg.spark", null );
> > > PhaseOptions.v().setPhaseOption( sparkTranform,
> "verbose:true" );
> > > Map options = PhaseOptions.v().getPhaseOptions(
> sparkTranform );
> > > PointsToAnalysis spark = new PAG(new SparkOptions(options));
> > > CallGraphBuilder builder = new CallGraphBuilder(spark);
> > > builder.build();
> > > return builder.getCallGraph();
> > > }
> > >
> > > private ArrayList<SootMethod> getAllMethods(String path) throws
> > Exception{
> > > Parser p = new Parser();
> > > ArrayList<File> allFiles = p.getSourceFiles(path, false);
> > > ArrayList<SootMethod> entryPoints = new
> ArrayList<SootMethod>();
> > > for(File f: allFiles){
> > > //remove the path and leave package path only
> > > String name =
> f.getAbsolutePath().replace(path+"\\", "");
> > > name = name.replace("\\", ".");
> > > name = name.replace(".class", "");
> > > SootClass sootClass = Scene.v().forceResolve(name,
> > > SootClass.BODIES);
> > > sootClass.setApplicationClass();
> > > for(SootMethod m: sootClass.getMethods()){
> > > if (!m.isAbstract()) {
> > > entryPoints.add(m);
> > > }
> > > }
> > > }
> > >
> > >
> Scene.v().addBasicClass("java.lang.ThreadGroup",SootClass.SIGNATURES);
> > > Scene.v().setEntryPoints(entryPoints);
> > > return entryPoints;
> > > }
> > >
> > > Is this fine?
> > >
> > > Thanks for your help.
> > >
> > >
> > > On 24 March 2014 22:47, Marc-André Laverdière
> > > <marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>> wrote:
> > >
> > > Hi Graziella,
> > >
> > > I don't know much about the .build file, so no comments.
> > >
> > >
> > > I am surprised that CHA is taking so long - do you have
> very large
> > > libraries? Did you try using Spark in CHA mode? I think
> that the
> > > CHATransformer is very old code - Spark has
> optimizations that
> > work for
> > > all analyses.
> > >
> > > Spark should take more time, that's obvious. A way to work
> > around that
> > > is to use exclusions and no-bodies-for-exclusions. You
> > truncate your
> > > call graph, which is unsound, but you may not care so much
> > about some
> > > parts of it. I do that all the time when analyzing JEE.
> > >
> > > Also, note that the wjtp phase runs after Spark
> executes (if
> > Spark is
> > > enabled, that is).
> > >
> > > Marc-André Laverdière-Papineau
> > > Doctorant - PhD Candidate
> > >
> > > On 03/24/2014 02:13 PM, Graziella Galea wrote:
> > > > Thanks for your help Marc-André.
> > > >
> > > > I have read a bit about what you said and on the paper 'A
> > Survivor's
> > > > Guide to Java Program Analysis with Soot' it is also
> argued that
> > > > SPARK provides a more precise callgraph while CHA is
> > considered as a
> > > > dumb version.
> > > >
> > > > Before continuing any further though, I have realised
> that
> > > generating a
> > > > callgraph using CHA takes approximately a minute. In
> the same
> > > > paper it is said that SPARK provides a better
> callgraph at
> > the expense
> > > > of complicated setup and time. Obviously, I do not
> want the
> > > > callgraph generation to take longer (already not very
> happy
> > with the
> > > > current execution time especially because the call graph
> > > > handling barely takes a second.). Do you think that
> SPARK
> > will take
> > > > even longer than a minute? The currently
> implementation for the
> > > > callgraph generation takes a lot of time (a minute)
> because of
> > > this line:
> > > >
> > > > PackManager.v().getPack("wjtp").apply();
> > > >
> > > >
> > > > On a different note, is it true that there is a way of
> > generating a
> > > > callgraph using the .build file? I never saw such
> solution
> > on the
> > > web but
> > > > I know of someone who did but do not know how and it
> seems as
> > > though it
> > > > does not take a long time for such generation.
> > > >
> > > >
> > > >
> > > > On 24 March 2014 17:12, Marc-André Laverdière
> > > > <marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
> > > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>> wrote:
> > > >
> > > > Hello Graziella,
> > > >
> > > > It wouldn't hurt to do some reading on call graph
> > construction
> > > > algorithms if you want to know more. I think that
> Lhoták's
> > > masters'
> > > > thesis on SPARK, even if you just skim through
> it, will
> > be very
> > > > instructive.
> > > >
> > > > Anyways, here is an executive summary.
> > > > CHA = declared type's class + all subclasses
> > > > RTA = CHA - types that aren't instanciated
> > > > VTA, SPARK, etc. = RTA + Fancy constraint
> propagation to
> > > narrow it down
> > > > even more.
> > > >
> > > > So, CHA will always be 'good' if you use very flat
> > > hierarchies, or if
> > > > the program you analyze always declares the exact
> same
> > type as
> > > the one
> > > > used (e.g. no List meh = new ArrayList, but ArrayList
> > meh = new
> > > > ArrayList). I am sure that this kind of code
> exists, but I
> > > doubt that
> > > > you'll analyze only this stuff :)
> > > >
> > > > Marc-André Laverdière-Papineau
> > > > Doctorant - PhD Candidate
> > > >
> > > > On 03/24/2014 11:31 AM, Graziella Galea wrote:
> > > > > Hi!
> > > > >
> > > > > Why is the CHA algorithm less precise? I have
> tested
> > it and
> > > > worked fine
> > > > > till now but it is very important for me that I
> have
> > precise
> > > results.
> > > > >
> > > > > Regards,
> > > > >
> > > > > Graziella
> > > > >
> > > > >
> > > > > On 24 March 2014 09:49, Steven Arzt
> > <Steven.Arzt at cased.de <mailto:Steven.Arzt at cased.de>
> <mailto:Steven.Arzt at cased.de <mailto:Steven.Arzt at cased.de>>
> > > <mailto:Steven.Arzt at cased.de
> <mailto:Steven.Arzt at cased.de> <mailto:Steven.Arzt at cased.de
> <mailto:Steven.Arzt at cased.de>>>
> > > > <mailto:Steven.Arzt at cased.de
> <mailto:Steven.Arzt at cased.de>
> > <mailto:Steven.Arzt at cased.de <mailto:Steven.Arzt at cased.de>>
> <mailto:Steven.Arzt at cased.de <mailto:Steven.Arzt at cased.de>
> > <mailto:Steven.Arzt at cased.de <mailto:Steven.Arzt at cased.de>>>>
> > > > > <mailto:Steven.Arzt at cased.de
> <mailto:Steven.Arzt at cased.de>
> > <mailto:Steven.Arzt at cased.de <mailto:Steven.Arzt at cased.de>>
> <mailto:Steven.Arzt at cased.de <mailto:Steven.Arzt at cased.de>
> > <mailto:Steven.Arzt at cased.de <mailto:Steven.Arzt at cased.de>>>
> > > <mailto:Steven.Arzt at cased.de
> <mailto:Steven.Arzt at cased.de> <mailto:Steven.Arzt at cased.de
> <mailto:Steven.Arzt at cased.de>>
> > <mailto:Steven.Arzt at cased.de <mailto:Steven.Arzt at cased.de>
> <mailto:Steven.Arzt at cased.de <mailto:Steven.Arzt at cased.de>>>>>> wrote:
> > > > >
> > > > > Hi all,
> > > > >
> > > > > It really depends on the type of callgraph
> you are
> > looking
> > > > for. SPARK
> > > > > definitely does not work with non-static
> entry points,
> > > i.e. it
> > > > will miss
> > > > > edges because it does not have valid
> > points-to-sets for
> > > all "this"
> > > > > fields
> > > > > inside the instance methods on the
> boundary. So if
> > no one
> > > > > instantiates your
> > > > > class A and A.method() is an entry point, then
> > there will be
> > > > an empty
> > > > > points-to-set for "this" in A.method() since no
> > one ever
> > > > creates an
> > > > > instance
> > > > > of A.
> > > > >
> > > > > If you have non-static entry points and need
> > SPARK's full
> > > > precision, you
> > > > > will have to create a dummy main method.
> For doing so,
> > > you can
> > > > use the
> > > > > DefaultEntryPointCreator class from FlowDroid
> > > > >
> > >
> (https://github.com/secure-software-engineering/soot-infoflow)
> > > > which
> > > > > should
> > > > > make it fairly simple.
> > > > >
> > > > > The other option would be to try a less
> precise CG
> > algorithm
> > > > such as
> > > > > CHA or
> > > > > RTA as already discussed.
> > > > >
> > > > > Best regards,
> > > > > Steven
> > > > >
> > > > > -----Ursprüngliche Nachricht-----
> > > > > Von: soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>
> > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>>
> > > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>
> > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>>>
> > > > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>
> > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>>
> > > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>
> > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>>>>
> > > > > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>
> > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>>
> > > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>
> > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>>>
> > > > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>
> > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>>
> > > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>
> > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>>>>>
> > > > > [mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>
> > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>>
> > > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>
> > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>>>
> > > > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>
> > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>>
> > > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>
> > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>>>>
> > > > > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>
> > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>>
> > > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>
> > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>>>
> > > > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>
> > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>>
> > > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>
> > <mailto:soot-list-bounces at sable.mcgill.ca
> <mailto:soot-list-bounces at sable.mcgill.ca>>>>>] Im Auftrag von
> Marc-André
> > > > > Laverdière-Papineau
> > > > > Gesendet: Samstag, 22. März 2014 20:22
> > > > > An: soot-list at sable.mcgill.ca
> <mailto:soot-list at sable.mcgill.ca>
> > <mailto:soot-list at sable.mcgill.ca
> <mailto:soot-list at sable.mcgill.ca>>
> > > <mailto:soot-list at sable.mcgill.ca
> <mailto:soot-list at sable.mcgill.ca>
> > <mailto:soot-list at sable.mcgill.ca
> <mailto:soot-list at sable.mcgill.ca>>>
> > > > <mailto:soot-list at sable.mcgill.ca
> <mailto:soot-list at sable.mcgill.ca>
> > <mailto:soot-list at sable.mcgill.ca
> <mailto:soot-list at sable.mcgill.ca>>
> > > <mailto:soot-list at sable.mcgill.ca
> <mailto:soot-list at sable.mcgill.ca>
> > <mailto:soot-list at sable.mcgill.ca
> <mailto:soot-list at sable.mcgill.ca>>>>
> > > <mailto:soot-list at sable.mcgill.ca
> <mailto:soot-list at sable.mcgill.ca>
> > <mailto:soot-list at sable.mcgill.ca
> <mailto:soot-list at sable.mcgill.ca>>
> <mailto:soot-list at sable.mcgill.ca <mailto:soot-list at sable.mcgill.ca>
> > <mailto:soot-list at sable.mcgill.ca
> <mailto:soot-list at sable.mcgill.ca>>>
> > > > <mailto:soot-list at sable.mcgill.ca
> <mailto:soot-list at sable.mcgill.ca>
> > <mailto:soot-list at sable.mcgill.ca
> <mailto:soot-list at sable.mcgill.ca>>
> > > <mailto:soot-list at sable.mcgill.ca
> <mailto:soot-list at sable.mcgill.ca>
> > <mailto:soot-list at sable.mcgill.ca
> <mailto:soot-list at sable.mcgill.ca>>>>>
> > > > > Betreff: Re: [Soot-list] Generating a CallGraph
> > > > >
> > > > > Hi Graziella,
> > > > >
> > > > > This code uses CHA. Is that what you really
> want?
> > > > >
> > > > > I honestly don't know of anybody who got a call
> > graph in
> > > this kind
> > > > > of case
> > > > > with SPARK without generating a stubbed main.
> > > > >
> > > > > Eric wrote the blog entry about custom
> entry points,
> > > he's probably
> > > > > the best
> > > > > person to ask...
> > > > >
> > > > > Marc-André Laverdière-Papineau
> > > > > Doctorant - PhD Candidate
> > > > >
> > > > > On 22/03/14 05:57 AM, Graziella Galea wrote:
> > > > > > I have followed the following solution to
> generate a
> > > callgraph
> > > > > >
> http://marc.info/?l=soot-list&m=134095873818018&w=2
> > > > > > and it does not mention anything about static
> > classes - in
> > > > fact it
> > > > > > sets every method in the project to be
> analysed
> > as an
> > > > entrypoint.
> > > > > > This is the reason I thought this is a
> good solution
> > > since I
> > > > don't
> > > > > > have a main class. Is there some
> tutorial which
> > specifies
> > > > exactly
> > > > > what
> > > > > settings
> > > > > > need to be configured in order to
> generate a call
> > > graph? The
> > > > > code for
> > > > > > using the call graph is fine because I
> analysed
> > another
> > > > project and
> > > > > > the settings worked perfectly. Then I
> applied it to
> > > another
> > > > project
> > > > > > and it didn't work. All I need to know
> is the
> > > settings - I
> > > > have the
> > > > > > logic to handle a call graph then.
> > > > > >
> > > > > > Thanks again for your help!
> > > > > >
> > > > > >
> > > > > > On 21 March 2014 22:42, Marc-André Laverdière
> > > > > >
> <marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
> > > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>
> > > > >
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
> > > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>>
> > > > > >
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
> > > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>
> > > > >
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
> > > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>>>> wrote:
> > > > > >
> > > > > > Hello,
> > > > > >
> > > > > > Using the Soot main requires that you
> have a
> > main
> > > class
> > > > in your
> > > > > program.
> > > > > > Custom entry points won't work in
> that case.
> > > > > > Before we go there, would you please
> confirm
> > that
> > > your entry
> > > > > points
> > > > > are
> > > > > > static?
> > > > > >
> > > > > > The next thing: I suggest that you add a
> > transformer
> > > > that will
> > > > > list
> > > > > all
> > > > > > non-phantom classes loaded in your Scene.
> > This is
> > > probably
> > > > > going to
> > > > > help
> > > > > > diagnose problems.
> > > > > >
> > > > > > My suggestion is that you start
> small: have it
> > > working on a
> > > > > simpler
> > > > > test
> > > > > > case (all classes local, only one
> version),
> > then add a
> > > > feature
> > > > > > (downloading class definitions), and then
> > add the
> > > other.
> > > > > >
> > > > > > Marc-André Laverdière-Papineau
> > > > > > Doctorant - PhD Candidate
> > > > > >
> > > > > > On 03/21/2014 04:25 PM, Graziella
> Galea wrote:
> > > > > > > Thanks for your response Marc-Andre.
> > > > > > >
> > > > > > > I am using a class loader in order
> to be
> > able to
> > > retrieve
> > > > > classes
> > > > > and
> > > > > > > set them as application classes. I
> > previously used
> > > > > > > Scene.v().loadNecessaryClasses()
> but it is
> > not good
> > > > for my case
> > > > > > since I
> > > > > > > need to generate a call graph for
> > different versions
> > > > of the same
> > > > > > > project. I have been recommended
> to use the
> > > soot.Main
> > > > but I am
> > > > > > not sure
> > > > > > > what parameters I need to pass.
> How do you
> > > recommend
> > > > to use the
> > > > > > > soot.Main method?
> > > > > > >
> > > > > > > Thanks for your help.
> > > > > > >
> > > > > > > Regards,
> > > > > > >
> > > > > > > Graziella.
> > > > > > >
> > > > > > >
> > > > > > > On 21 March 2014 20:05, Marc-Andre
> > > Laverdiere-Papineau
> > > > > > >
> <marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
> > > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>
> > > > >
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
> > > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>>
> > > > > >
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
> > > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>
> > > > >
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
> > > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>>>
> > > > > > >
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
> > > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>
> > > > >
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
> > > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>>
> > > > > >
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
> > > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>
> > > > >
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>
> > > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>
> > > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>
> > <mailto:marc-andre.laverdiere-papineau at polymtl.ca
> <mailto:marc-andre.laverdiere-papineau at polymtl.ca>>>>>>>> wrote:
> > > > > > >
> > > > > > > Hi Graziella,
> > > > > > >
> > > > > > > Soot doesn't care about the
> class loader
> > > that you
> > > > use - it
> > > > > > uses its
> > > > > > > own class loading logic. You
> would need to
> > > either
> > > > change
> > > > > that
> > > > > > > mechanism, or dump the classes
> you get
> > from
> > > other
> > > > > sources to the
> > > > > > > disk and let Soot retrieve that.
> > > > > > >
> > > > > > > Also, it is generally
> recommended to
> > use the
> > > Soot
> > > > main if
> > > > > > you're new
> > > > > > > at Soot.
> > > > > > >
> > > > > > > Also, note that entry points
> need to be
> > > static. IIRC,
> > > > > when you
> > > > > are
> > > > > > > working in app mode, you need
> to have an
> > > explicit main
> > > > > method,
> > > > > but
> > > > > > > I'm not 100% sure about that.
> > > > > > >
> > > > > > > BTW, you can join us on IRC at
> #soot
> > on Freenode
> > > > if that's
> > > > > > your thing.
> > > > > > >
> > > > > > > Le 2014-03-21 10:48, Graziella
> Galea a
> > écrit :
> > > > > > >>
> > > > > > >> I am currently working on a
> project
> > whereby
> > > I need to
> > > > > generate
> > > > > a
> > > > > > >> call graph for Java code analysis
> > using SOOT.
> > > > > Unfortunately,
> > > > > for
> > > > > > >> each class in the project I am
> analyzing,
> > > soot is
> > > > > returning a
> > > > > > >> warning that the class in a
> phantom
> > reference.
> > > > Now, if
> > > > > I am not
> > > > > > >> mistaken, a phantom reference
> is a class
> > > which I
> > > > cannot
> > > > > provide
> > > > > > >> but I am actually providing it. I
> > first started
> > > > > thinking that
> > > > > the
> > > > > > >> problem was with the Soot's
> classpath
> > but I
> > > think
> > > > it is
> > > > > correct.
> > > > > > >> The path String variable used
> to set the
> > > > classpath (as
> > > > > shown in
> > > > > > >> the code snippet below)
> specifies the bin
> > > folder
> > > > of the
> > > > > project
> > > > > > >> I'm analysing.
> > > > > > >>
> > > > > > >> Could anyone help me? It's
> been over
> > a week and
> > > > cannot seem
> > > > > > to get
> > > > > > >> it right.
> > > > > > >>
> > > > > > >> Code used for setup:
> > > > > > >>
> > > > > > >>
> > > > > > >> |
> > > > > > >>
> > > > > >
> > > > >
> > > >
> > >
> >
> privateCallGraphsetUp(ArrayList<String>paths,StringtestSuite)throwsException
> > > > >
> > > >
> > >
> >
> {Options.v().set_whole_program(true);Options.v().set_allow_phantom_refs(true
> > > > > );
> > > > > > >>
> > > > > > >>
> > > > > > >> Options.v().set_app(!
> > > > > > >> true);
> > > > > > >>
> > > >
> Options.v().set_no_bodies_for_excluded(true);//set each
> > > > > method
> > > > > in
> > > > > > >> the source folder as an entry
> > pointParserp
> > > > > > >>
> =newParser();List<SootMethod>entryPoints
> > > > > > >> =newArrayList<SootMethod>();//the
> > arraylist
> > > paths
> > > > > contains the
> > > > > > >> path to the test suite and the
> path
> > to the
> > > source
> > > > > > >>
> folderfor(Stringpath:paths){if(path
> > !=null
> > > > > > >> ){__//if it is null then the user
> > chose to
> > > > identify the
> > > > > > methods only
> > > > > > >> //create a classLoader for this
> > pathFilefile
> > > > > > >>
> =newFile(path);ClassLoaderclassLoader
> > > > > > >>
> > > > > >
> > > > >
> > > >
> > >
> >
> =newURLClassLoader(newURL[]{file.toURI().toURL()},parent);MultiClassLoadermc
> > > > > l
> > > > > > >>
> > > > > >
> > > > >
> > > >
> > >
> >
> =newMultiClassLoader();mcl.addClassLoader(classLoader);ArrayList<File>allFil
> > > > > es
> > > > > > >>
> > > > > >
> > > > >
> > > >
> > >
> >
> =p.getSourceFiles(path,false__);Options.v().set_process_dir(Arrays.asList(pa
> > > > > th+"\\"));__
> > > > > > >>
> > Options.v().set_soot_classpath("C:\\Program
> > > > > > >>
> > > Files\\Java\\jre7\\lib\\rt.jar;"+path+"\\;C:\\Program
> > > > > > >>
> > > > > >
> > > >
> >
> Files\\Java\\jre7\\lib\\jce.jar");for(Filef:allFiles){//remove the
> > > > > > >> path and leave package path
> > onlyStringname
> > > > > =f.getAbsolutePath()
> > > > > > >> .replace(path+"\\","");name
> > > =name.replace("\\",____
> > > > > ".");name
> > > > > > >> =name.replace(".class",
> "");//saves test
> > > files so
> > > > as to be
> > > > > > able to
> > > > > > >> distinguish between normal methods
> > and test
> > > cases
> > > > > > >>
> > > > > > >>
> > if(path.equals(testSui!
> > > > > > >> te<
> > > > > > >> span class=""
> > > > > >
> > > > >
> > > >
> > >
> >
> style="margin:0px;padding:0px;border:0px;font-size:14px;vertical-align:basel
> > > > > ine;background-color:transparent">)){
> > > > > > >> testFiles.add(name);}//load the
> > > classClass<?>cls
> > > > =mcl.getCl
> > > > > > >>
> > assLoader(0).loadClass(name);SootClasssootClass
> > > > > > >>
> > =Scene.v().loadClassAndSupport(cls.getName
> > > > > > >>
> > > > > > >> ());
> > > > > > >>
> > __sootClass.setApplicationClass();//set all
> > > of the
> > > > > methods in
> > > > > > this
> > > > > > >> class as entrypoints since
> there is
> > no main
> > > method
> > > > > > >>
> > > > > >
> > > > >
> > > >
> > >
> >
> availablefor(SootMethodm:sootClass.getMethods()){if(!m.isAbstract()){System.
> > > > > out.println("entrypoint
> > > > > > >>
> > > > > >
> > > > >
> > > >
> > >
> >
> "+m);entryPoints.add(m);}}}mcl.removeClassLoader(classLoader);}}Scene.v().ad
> > > > > dBasicClass("java.
> > > > > > >>
> > > > >
> > >
> lang.ThreadGroup",SootClass.SIGNATURES);Scene.v().setEntryPoints(
> > > > > > >>
> > > > > > >> entryPoints__);
> > > > > > >> PackManager.v().runPacks();
> > > > > > >> return Scene.v().get!
> > > > > > >> CallGraph<
> > > > > > >> /span>();
> > > > > > >> }|
> > > > > > >> --
> > > > > > >> Graziella Galea
> > > > > > >>
> > > > > > >>
> > > > > > >>
> > _______________________________________________
> > > > > > >> Soot-list mailing list
> > > > > > >> Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>
> > > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>
> > > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>>>
> > > > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>
> > > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>
> > > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>>>>
> > > > > > >>
> > > > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
> > > > > > >
> > > > > > > --
> > > > > > > Marc-André Laverdière-Papineau
> > > > > > > Doctorant - PhD Candidate
> > > > > > >
> > > > > > >
> > > > > > >
> > _______________________________________________
> > > > > > > Soot-list mailing list
> > > > > > > Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>
> > > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>
> > > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>>>
> > > > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>
> > > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>
> > > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>>>>
> > > > > > >
> > > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > --
> > > > > > > Graziella Galea
> > > > > > >
> > > > > > >
> > > > > > >
> > _______________________________________________
> > > > > > > Soot-list mailing list
> > > > > > > Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> <mailto:Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>>
> > > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> <mailto:Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>>>
> > > > > > >
> > > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
> > > > > > >
> > > > > >
> _______________________________________________
> > > > > > Soot-list mailing list
> > > > > > Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> <mailto:Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>>
> > > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> <mailto:Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>>>
> > > > > >
> > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > Graziella Galea
> > > > > >
> > > > > >
> > > > > >
> _______________________________________________
> > > > > > Soot-list mailing list
> > > > > > Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>>
> > > > > >
> > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
> > > > > >
> > > > > _______________________________________________
> > > > > Soot-list mailing list
> > > > > Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>>
> > > > >
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
> > > > >
> > > > > _______________________________________________
> > > > > Soot-list mailing list
> > > > > Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>
> > > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>>
> > > > >
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Graziella Galea
> > > > >
> > > > >
> > > > > _______________________________________________
> > > > > Soot-list mailing list
> > > > > Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> <mailto:Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> <mailto:Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>
> > > > >
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
> > > > >
> > > > _______________________________________________
> > > > Soot-list mailing list
> > > > Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> <mailto:Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> <mailto:Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>>
> > > > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
> > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Graziella Galea
> > > >
> > > >
> > > > _______________________________________________
> > > > Soot-list mailing list
> > > > Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > > > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
> > > >
> > > _______________________________________________
> > > Soot-list mailing list
> > > Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>>
> > > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
> > >
> > >
> > >
> > >
> > > --
> > > Graziella Galea
> > >
> > >
> > > _______________________________________________
> > > Soot-list mailing list
> > > Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca> <mailto:Soot-list at sable.mcgill.ca
> <mailto:Soot-list at sable.mcgill.ca>>
> > > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
> > >
> > _______________________________________________
> > Soot-list mailing list
> > Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
> <mailto:Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>>
> > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
> >
> >
> >
> >
> > --
> > Graziella Galea
> >
> >
> > _______________________________________________
> > Soot-list mailing list
> > Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
> > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
> >
> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>
>
>
>
> --
> Graziella Galea
>
>
> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>
More information about the Soot-list
mailing list