Skip to main content

DG: Analysis and Slicing of LLVM Bitcode

  • Conference paper
  • First Online:
Automated Technology for Verification and Analysis (ATVA 2020)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 12302))

Abstract

DG is a library written in C++ that provides several types of program analysis for LLVM bitcode. The main parts of DG are a parametric points-to analysis, a call graph construction, a data dependence analysis, and a control dependence analysis. The project includes several tools built around the analyses, the main one being a static slicer for LLVM bitcode. This paper describes what analyses are implemented in DG and its use cases with the focus on program slicing.

The work is supported by The Czech Science Foundation grant GA18-02177S.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    https://github.com/sosy-lab/sv-benchmarks, rev. 6c4d8bc.

References

  1. LLVMSlicer. https://github.com/jslay/LLVMSlicer

  2. ParaSlicer. https://archive.codeplex.com/?p=paraslicer

  3. Ahmadvand, M., Hayrapetyan, A., Banescu, S., Pretschner, A.: Practical integrity protection with oblivious hashing. In: ACSAC 2018, pp. 40–52. ACM (2018)

    Google Scholar 

  4. Beckert, B., Bormer, T., Gocht, S., Herda, M., Lentzsch, D., Ulbrich, M.: SemSlice: exploiting relational verification for automatic program slicing. In: Polikarpova, N., Schneider, S. (eds.) IFM 2017. LNCS, vol. 10510, pp. 312–319. Springer, Cham (2017). https://doi.org/10.1007/978-3-319-66845-1_20

    Chapter  Google Scholar 

  5. Braun, M., Buchwald, S., Hack, S., Leißa, R., Mallon, C., Zwinkau, A.: Simple and efficient construction of static single assignment form. In: CC2013, LNCS 7791, pp. 102–122. Springer, Heidelberg (2013). https://doi.org/10.1007/978-3-642-37051-9_6

  6. Chalupa, M.: Slicing of LLVM Bitcode. Master’s thesis, Masaryk University, Faculty of Informatics, Brno (2016). https://is.muni.cz/th/vik1f/

  7. Chalupa, M., Strejček, J.: Evaluation of program slicing in software verification. In: Ahrendt, W., Tapia Tarifa, S.L. (eds.) IFM 2019. LNCS, vol. 11918, pp. 101–119. Springer, Cham (2019). https://doi.org/10.1007/978-3-030-34968-4_6

    Chapter  Google Scholar 

  8. Chalupa, M., et al.: Symbiotic 7: Integration of Predator and More. TACAS 2020. LNCS, vol. 12079, pp. 413–417. Springer, Cham (2020). https://doi.org/10.1007/978-3-030-45237-7_31

    Chapter  Google Scholar 

  9. Chalupa, M., Strejček, J., Vitovská, M.: Joint forces for memory safety checking revisited. Int. J. Softw. Tools Technol. Transf. 22(2), 115–133 (2020)

    Article  Google Scholar 

  10. Cheng, L., Tian, K., Yao, D., Sha, L., Beyah, R.A.: Checking is believing: event-aware program anomaly detection in cyber-physical systems. CoRR, abs/1805.00074 (2018)

    Google Scholar 

  11. Deng, B., Wu, W., Song, L.: Redundant logic elimination in network functions. In: SOSR 2020, pp. 34–40. ACM (2020)

    Google Scholar 

  12. Ferrante, J., Ottenstein, K.J., Warren, J.D.: The program dependence graph and its use in optimization. ACM Trans. Program. Lang. Syst. 9(3), 319–349 (1987)

    Article  Google Scholar 

  13. Hamadeh, H., Almomani, A., Tyagi, A.: Probabilistic verification of outsourced computation based on novel reversible PUFs. In: Brogi, A., Zimmermann, W., Kritikos, K. (eds.) ESOCC 2020. LNCS, vol. 12054, pp. 30–37. Springer, Cham (2020). https://doi.org/10.1007/978-3-030-44769-4_3

    Chapter  Google Scholar 

  14. Lattner, C., Adve, V.S.: LLVM: a compilation framework for lifelong program analysis & transformation. In: CGO 2004, pp. 75–88. IEEE Computer Society (2004)

    Google Scholar 

  15. Li, Z., Zou, D., Xu, S., Chen, Z., Zhu, Y., Jin, H.: VulDeeLocator: a deep learning-based fine-grained vulnerability detector. CoRR, abs/2001.02350 (2020). http://arxiv.org/abs/2001.02350

  16. Novillo, D.: Memory SSA - A Unified Approach for Sparsely Representing Memory Operations (2006)

    Google Scholar 

  17. Ranganath, V.P., Amtoft, T., Banerjee, A., Dwyer, M.B., Hatcliff, J.: A new foundation for control-dependence and slicing for modern program structures. In: Sagiv, M. (ed.) ESOP 2005. LNCS, vol. 3444, pp. 77–93. Springer, Heidelberg (2005). https://doi.org/10.1007/978-3-540-31987-0_7

    Chapter  MATH  Google Scholar 

  18. Rosen, B.K., Wegman, M.N., Zadeck, F.K.: Global value numbers and redundant computations. In POPL 1888, pp. 12–27. ACM Press (1988)

    Google Scholar 

  19. Sui, Y., Xue, J.: SVF: interprocedural static value-flow analysis in LLVM. In CC 2016, pp. 265–266. ACM (2016)

    Google Scholar 

  20. Trabish, D., Mattavelli, A., Rinetzky, N., Cadar, C.: Chopped symbolic execution. In: ICSE 2018, pp. 350–360. ACM (2018)

    Google Scholar 

  21. Weiser, M.: Program slicing. IEEE Trans. Software Eng. 10(4), 352–357 (1984)

    Article  Google Scholar 

  22. Zhang, Y.: Sympas: Symbolic program slicing. CoRR, abs/1903.05333 (2019). http://arxiv.org/abs/1903.05333

Download references

Acknowledgements

The author would like to thank Jan Strejček for his valuable comments on the paper. Further, many thanks go to other contributors to the DG library, mainly Tomáš Jašek, Lukáš Tomovič, and Martina Vitovská.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Marek Chalupa .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2020 Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Chalupa, M. (2020). DG: Analysis and Slicing of LLVM Bitcode. In: Hung, D.V., Sokolsky, O. (eds) Automated Technology for Verification and Analysis. ATVA 2020. Lecture Notes in Computer Science(), vol 12302. Springer, Cham. https://doi.org/10.1007/978-3-030-59152-6_33

Download citation

  • DOI: https://doi.org/10.1007/978-3-030-59152-6_33

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-030-59151-9

  • Online ISBN: 978-3-030-59152-6

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics