[Soot-list] Getting the transformed Jimple and bytecode files after running some tranformers

ASHISH MISHRA ashish123.mishragkp at gmail.com
Mon Apr 22 11:57:11 EDT 2013


Hi Marc,

I tried running same file say abc.java with two approaches -

1) soot.Main.main(args)- This generated the sootOutput/abc.jimple
2) PackManager.v().runPacks(options)  - This didnt produce the jimple
output .


Now looking at the Main.main() - Internally it calls the same runPacks(),
so I am not able to figure out the problem.Secondly what is the way about
 to get the jimple with the runpacks(). Is this an issue with runPacks().

regards




On Mon, Apr 22, 2013 at 9:03 PM, ASHISH MISHRA <
ashish123.mishragkp at gmail.com> wrote:

> Hi Marc,
> As far as I can see, I have used appropriate flags for generating output,
> I have customized entry points and I am running soot from-
> PackageManager.v().runPacks() instead of usual soot.Main.main(options)
>
> Is this the reason for the same.
>
> Here is what I am trying to do in concise form
>
> public static void main(String[] args) {
>   final String main_inputclass= args[0];
>  final String xmlinput_class = args[2];
>  final String resource = args[1];
>
>
> List<String> argList= new ArrayList<String>(Arrays.asList(args));
>  String[] soot_options = new String[]{
>  "-w",
>  "-pp",
> "-p",
> "jb",
>  "use-original-names:true",
> "-cp",
> ".",
>  "-main-class",
> args[0],
> //"-app",
>  args[0],
> "-allow-phantom-refs",
>   "-f",
> "jimple"
>   };
> argList.addAll(Arrays.asList(soot_options));
>  soot.Transform preprocessingTransfrom = new
> soot.Transform("wjpp.refresolve", new SceneTransformer() {
>  @Override
> protected void internalTransform(String phaseName, Map options) {
> // TODO Auto-generated method stub
>  System.out.println("Performing String Analysis on the whole application
> "+ main_inputclass);
>  * //Call to another soot analysis here *
>  }
>  });
>  soot.Transform inlineTransform= new soot.Transform("jtp.rfinline",  new
> BodyTransformer() {
>  @Override
> protected void internalTransform(Body b, String phaseName, Map options) {
>  // TODO Auto-generated method stub
> //perform some Body Transformations here using the results of the first
> analysis
>  }
> });
>  //add the Transformer to the wjpp phase
>  Pack wjpppack = PackManager.v().getPack("wjpp");
>  wjpppack.add(preprocessingTransfrom);
>  //add the body transformer to the jtp phase
>  PackManager.v().getPack("jtp").add(inlineTransform);
>  //load all the classes
>  Options.v().parse(soot_options);
> Scene.v().forceResolve(args[0], SootClass.BODIES);
>  SootClass c =Scene.v().loadClassAndSupport(args[0]);
>  c.setApplicationClass();
>  Scene.v().getSootClass("java.util.Iterator");
> Scene.v().loadNecessaryClasses();
>  //get the entry method , if it is not main
>  SootMethod m1= null;
>  try{
>  m1 = c.getMethodByName("doStruff");
>   }catch (Exception e) {
> // TODO: handle exception
>   e.printStackTrace();
> m1 = c.getMethodByName("main");
>   }
>  //soot.Main.main(soot_options);
>  //run the soot
>  List entryPoints= new ArrayList();
> entryPoints.add(m1);
> Scene.v().setEntryPoints(entryPoints);
>  PackManager.v().runPacks();
>   }
>
> }
>
> If runPacks() is the reason of the problem ?Is there a way  to run the
> Analsysis using runPacks and still get the output jimple?
>
>
>
>
>
> On Mon, Apr 22, 2013 at 8:19 PM, Marc-André Laverdière-Papineau <
> marc-andre.laverdiere-papineau at polymtl.ca> wrote:
>
>> Hello,
>>
>> I never had problem turning jimple output on or off. Have you used those
>> flags indicated here?
>>
>>
>> http://www.sable.mcgill.ca/soot/tutorial/usage/usage.html#SECTION00043000000000000000
>>
>>
>> Marc-André Laverdière-Papineau
>> Doctorant - PhD Candidate
>>
>> On 13-04-22 06:58 AM, ASHISH MISHRA wrote:
>> > Hi All,
>> >
>> > I ran a wjpp transform and a jtp transform on some input files, and
>> > modified the jimple intermediate for some of the methods. I can print
>> > the modified Jimple Body but am not getting the modified jimple in
>> > *sootOutput.*
>> > *
>> > *
>> > *I aim at calling a Call Graph constructor like Paddle or Spark and
>> > provide it the modified jimple from the first run. How this can be done
>> > please help. Do I need to  write the modified Jimple to some file
>> > explicitly.*
>> > *
>> > *
>> > *
>> > *
>> >
>> > --
>> > Regards,
>> > Ashish Mishra
>> > Graduate Student,
>> > Computer Science and Automation Department,IISc
>> > Cell : +91-9611194714
>> > Mailto : ashishmishra at csa.iisc.ernet.in
>> > <mailto:ashishmishra at csa.iisc.ernet.in>
>> >
>> >
>> >
>> > _______________________________________________
>> > Soot-list mailing list
>> > 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
>> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>>
>
>
>
> --
> Regards,
> Ashish Mishra
> Graduate Student,
> Computer Science and Automation Department,IISc
> Cell : +91-9611194714
> Mailto : ashishmishra at csa.iisc.ernet.in
>
>


-- 
Regards,
Ashish Mishra
Graduate Student,
Computer Science and Automation Department,IISc
Cell : +91-9611194714
Mailto : ashishmishra at csa.iisc.ernet.in
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.cs.mcgill.ca/pipermail/soot-list/attachments/20130422/3c74366d/attachment.html 


More information about the Soot-list mailing list