soot-oss / soot

Soot - A Java optimization framework
GNU Lesser General Public License v2.1
2.86k stars 705 forks source link

broken link in soot survivor's guide #491

Closed elephantom closed 4 years ago

elephantom commented 8 years ago

http://www.brics.dk/SootNote/ says:

"Forbidden

You don't have permission to access /SootNote/ on this server.

Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request."

I would really like to see all the completed examples from the survivor's guide, which it claims are at this URL. Sorry if this is not the right place to report this!

domainexpert commented 8 years ago

I think the correct link is http://www.brics.dk/SootGuide/ I would suggest that the Survivor's Guide be fixed.

StevenArzt commented 8 years ago

Both links don't work for me. Actually, we are migrating all the Soot documentation to Github. Is there still something missing from the old pages? I'm not so much involved there, so I don't know how the current status is.

domainexpert commented 8 years ago

The link that I provided seems to work (I have just tried to click on it again). I think the link mentioned is mentioned within the Survivor's Guide PDF, and not from any web page. I believe there are other things to fix in the PDF such as a mention that CHATransformer.v().transform(); on Page 31 is not really necessary if -w option is used as in the source code for the example, which can be obtained from Soot source tree in GitHub or from http://www.brics.dk/SootGuide/sootsurvivorsguideexamples.tar.gz. Another thing is that even if one managed to obtain the source code for the examples, it requires significant effort to make them run. I have not been able to make the points-to analyses using SPARK and Paddle run successfully. The SPARK example is slightly better that I could make it to print something, but it could not find line number information from the bytecode. I haven't been able to run the Paddle example as it has dependencies on various old software.

StevenArzt commented 8 years ago

Now the link works, yesterday I got a 403 error. Strange.

As I said, we are now trying to collect all the documentation / tutorial material in our wiki at https://github.com/Sable/soot/wiki. The Survivor Guide on the brics website is really old and Soot has changed quite a bit since then. If there is still documentation material missing in the Wiki, we are all very grateful for every effort to add it, migrate it into the wiki, update it to reflect the newest Soot version, and keep/make it useful for people. A PDF file is too static for a framework under active development, so I don't think it makes sense to just update the PDF (I'm not even sure who to contact at brics, to be honest).

Paddle is a topic on its own. I know that people have gotten it to work on modern systems, but it has required some effort. If you want to contribute and make paddle more user-friendly, please feel free to get in touch at any time. Soot needs contributions from all of you to get better for all of you.

elephantom commented 8 years ago

Ah, thank you both so much for the response! I was trying to get to the source code examples, but I'm not sure I'll need to now that you've said it takes significant effort to actually get them running.

I'll go over the tutorials instead. I was particularly interested in the Abstract CFG section in the Survivor's Guide since I'm really after an AST. Do you have any recommendations of where I can start with this? (Tutorials, specific files to look at, etc). I don't see a tutorial specifically geared towards this, but I could be missing it. Thank you so much!

domainexpert commented 8 years ago

I don't want to give an impression that every example in the guide is difficult to run. I think I managed to run the abstract CFG example fine, and my impression was that the guide is reasonably good on this topic.

However, I think the guide and its examples need some work, for example in keeping them up-to-date with the latest version of soot. I'll see if I can find some time to work on this.

StevenArzt commented 8 years ago

@elephantom For a CFG, you can use the JimpleBasedInterproceduralCFG class which gives you an interprocedural control flow graph over Jimple statements. That's a bit more than an AST in terms of semantics, though. The class has Javadoc comments and should be fairly easy to use.

elephantom commented 8 years ago

Thanks!! I will check that out. Thanks so much for your help!

pavanupb commented 4 years ago

@elephantom Please re-open if this is still relevant.