Application-Only Call Graph Construction

  • Karim Ali
  • Ondřej Lhoták
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7313)

Abstract

Since call graphs are an essential starting point for all inter-procedural analyses, many tools and frameworks have been developed to generate the call graph of a given program. The majority of these tools focus on generating the call graph of the whole program (i.e., both the application and the libraries that the application depends on). A popular compromise to the excessive cost of building a call graph for the whole program is to ignore all the effects of the library code and any calls the library makes back into the application. This results in potential unsoundness in the generated call graph and therefore in any analysis that uses it. In this paper, we present Cgc, a tool that generates a sound call graph for the application part of a program without analyzing the code of the library.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Agrawal, G., Li, J., Su, Q.: Evaluating a Demand Driven Technique for Call Graph Construction. In: CC 2002. LNCS, vol. 2304, pp. 29–45. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  2. 2.
    Bacon, D.F., Sweeney, P.F.: Fast static analysis of C++ virtual function calls. In: 11th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 1996, pp. 324–341 (1996)Google Scholar
  3. 3.
    Blackburn, S.M., Garner, R., Hoffman, C., Khan, A.M., McKinley, K.S., Bentzur, R., Diwan, A., Feinberg, D., Frampton, D., Guyer, S.Z., Hirzel, M., Hosking, A., Jump, M., Lee, H., Moss, J.E.B., Phansalkar, A., Stefanović, D., VanDrunen, T., von Dincklage, D., Wiedermann, B.: The DaCapo benchmarks: Java benchmarking development and analysis. In: 21st Annual ACM SIGPLAN Conference on Object-Oriented Programing, Systems, Languages, and Applications, OOPSLA 2006, pp. 169–190 (October 2006)Google Scholar
  4. 4.
    Bodden, E.: Soot-list: Stack overflow when generating call graph (May 2011), http://www.sable.mcgill.ca/pipermail/soot-list/2008-July/001831.html
  5. 5.
    Bodden, E., Sewe, A., Sinschek, J., Oueslati, H., Mezini, M.: Taming reflection: Aiding static analysis in the presence of reflection and custom class loaders. In: 33rd International Conference on Software Engineering, ICSE 2011, pp. 241–250 (2011)Google Scholar
  6. 6.
    Bravenboer, M., Smaragdakis, Y.: Strictly declarative specification of sophisticated points-to analyses. In: 24th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2009, pp. 243–262 (2009)Google Scholar
  7. 7.
    Chatterjee, R., Ryder, B.G., Landi, W.A.: Relevant context inference. In: 26th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 1999, pp. 133–146 (1999)Google Scholar
  8. 8.
    Clarke, D.G., Potter, J.M., Noble, J.: Ownership types for flexible alias protection. In: 13th ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications, pp. 48–64 (1998)Google Scholar
  9. 9.
    Dean, J., Grove, D., Chambers, C.: Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis. In: Olthoff, W. (ed.) ECOOP 1995. LNCS, vol. 952, pp. 77–101. Springer, Heidelberg (1995)Google Scholar
  10. 10.
    Dietl, W., Müller, P.: Universes: Lightweight ownership for JML. Journal of Object Technology 4(8), 5–32 (2005)CrossRefGoogle Scholar
  11. 11.
    Dufour, B., Hendren, L., Verbrugge, C.: *J: a tool for dynamic analysis of Java programs. In: Companion of the 18th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2003, pp. 306–307 (2003)Google Scholar
  12. 12.
    Genius, D., Trapp, M., Zimmermann, W.: An Approach to Improve Locality Using Sandwich Types. In: Leroy, X., Ohori, A. (eds.) TIC 1998. LNCS, vol. 1473, pp. 194–214. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  13. 13.
    Graphviz - Graph Visualization Software (November 2011), http://www.graphviz.org/
  14. 14.
    Grothoff, C., Palsberg, J., Vitek, J.: Encapsulating objects with confined types. In: 16th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2001, pp. 241–255 (2001)Google Scholar
  15. 15.
    Holmes, R., Notkin, D.: Identifying program, test, and environmental changes that affect behaviour. In: International Conference on Software Engineering, ICSE 2011, vol. 10 (2011)Google Scholar
  16. 16.
    Holt, R., Schürr, A., Sim, S.E., Winter, A.: Graph eXchange Language (November 2011), http://www.gupro.de/GXL/dtd/gxl-1.1.html
  17. 17.
    IBM: T.J. Watson Libraries for Analysis WALA (May 2011), http://wala.sourceforge.net/
  18. 18.
    JUnit Home Page (December 2011), http://junit.sourceforge.net
  19. 19.
    Lhoták, O.: Comparing call graphs. In: 7th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering, PASTE 2007, pp. 37–42 (2007)Google Scholar
  20. 20.
    Lhoták, O., Hendren, L.: Scaling Java Points-to Analysis Using SPARK. In: Hedin, G. (ed.) CC 2003. LNCS, vol. 2622, pp. 153–169. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  21. 21.
    Lhoták, O., Hendren, L.: Evaluating the benefits of context-sensitive points-to analysis using a BDD-based implementation. ACM Trans. Softw. Eng. Methodol. 18, 3:1–3:53 (2008)Google Scholar
  22. 22.
    Lindholm, T., Yellin, F.: The Java Virtual Machine Specification, 2nd edn. Addison-Wesley, Reading (1999)Google Scholar
  23. 23.
    Linux User’s Manual: time(1) (October 2011), http://www.kernel.org/doc/man-pages/online/pages/man1/time.1.html
  24. 24.
    LogicBlox Home Page (November 2011), http://logicblox.com/
  25. 25.
    Noble, J., Vitek, J., Potter, J.: Flexible Alias Protection. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol. 1445, pp. 158–185. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  26. 26.
    Rountev, A., Milanova, A., Ryder, B.G.: Fragment class analysis for testing of polymorphism in Java software. IEEE Trans. Softw. Eng. 30, 372–387 (2004)CrossRefGoogle Scholar
  27. 27.
    Rountev, A., Ryder, B.G., Landi, W.: Data-flow analysis of program fragments. In: 7th European Software Engineering Conference Held Jointly with the 7th ACM SIGSOFT International Symposium on Foundations of Software Engineering, ESEC/FSE-7, pp. 235–252 (1999)Google Scholar
  28. 28.
    Sreedhar, V.C., Burke, M., Choi, J.D.: A framework for interprocedural optimization in the presence of dynamic class loading. In: ACM SIGPLAN 2000 Conference on Programming Language Design and Implementation, PLDI 2000, pp. 196–207 (2000)Google Scholar
  29. 29.
    Standard Performance Evaluation Corporation: SPEC JVM98 Benchmarks (May 2011), http://www.spec.org/jvm98/
  30. 30.
    Sundaresan, V., Hendren, L., Razafimahefa, C., Vallée-Rai, R., Lam, P., Gagnon, E., Godin, C.: Practical virtual method call resolution for Java. In: 15th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2000, pp. 264–280 (2000)Google Scholar
  31. 31.
    The DOT Language (November 2011), http://www.graphviz.org/content/dot-language
  32. 32.
    Tip, F., Palsberg, J.: Scalable propagation-based call graph construction algorithms. In: 15th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2000, pp. 281–293 (2000)Google Scholar
  33. 33.
    Tip, F., Sweeney, P.F., Laffra, C., Eisma, A., Streeter, D.: Practical extraction techniques for Java. ACM Trans. Program. Lang. Syst. 24, 625–666 (2002)CrossRefGoogle Scholar
  34. 34.
    Vallée-Rai, R., Gagnon, E., Hendren, L., Lam, P., Pominville, P., Sundaresan, V.: Optimizing Java Bytecode Using the Soot Framework: Is It Feasible? In: Watt, D.A. (ed.) CC 2000. LNCS, vol. 1781, pp. 18–34. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  35. 35.
    Vitek, J., Bokowski, B.: Confined types. In: 1999 ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications, pp. 82–96 (1999)Google Scholar
  36. 36.
    Vitek, J., Bokowski, B.: Confined types in Java. Softw., Pract. Exper. 31(6), 507–532 (2001)MATHCrossRefGoogle Scholar
  37. 37.
    Zhang, W., Ryder, B.G.: Automatic construction of accurate application call graph with library call abstraction for Java: Research Articles. J. Softw. Maint. Evol. 19, 231–252 (2007)CrossRefGoogle Scholar
  38. 38.
    Zhao, T., Palsberg, J., Vitek, J.: Type-based confinement. J. Funct. Program. 16(1), 83–128 (2006)MathSciNetMATHCrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Karim Ali
    • 1
  • Ondřej Lhoták
    • 1
  1. 1.David R. Cheriton School of Computer ScienceUniversity of WaterlooCanada

Personalised recommendations