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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
https://github.com/sosy-lab/sv-benchmarks, rev. 6c4d8bc.
References
LLVMSlicer. https://github.com/jslay/LLVMSlicer
ParaSlicer. https://archive.codeplex.com/?p=paraslicer
Ahmadvand, M., Hayrapetyan, A., Banescu, S., Pretschner, A.: Practical integrity protection with oblivious hashing. In: ACSAC 2018, pp. 40–52. ACM (2018)
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
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
Chalupa, M.: Slicing of LLVM Bitcode. Master’s thesis, Masaryk University, Faculty of Informatics, Brno (2016). https://is.muni.cz/th/vik1f/
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
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
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)
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)
Deng, B., Wu, W., Song, L.: Redundant logic elimination in network functions. In: SOSR 2020, pp. 34–40. ACM (2020)
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)
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
Lattner, C., Adve, V.S.: LLVM: a compilation framework for lifelong program analysis & transformation. In: CGO 2004, pp. 75–88. IEEE Computer Society (2004)
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
Novillo, D.: Memory SSA - A Unified Approach for Sparsely Representing Memory Operations (2006)
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
Rosen, B.K., Wegman, M.N., Zadeck, F.K.: Global value numbers and redundant computations. In POPL 1888, pp. 12–27. ACM Press (1988)
Sui, Y., Xue, J.: SVF: interprocedural static value-flow analysis in LLVM. In CC 2016, pp. 265–266. ACM (2016)
Trabish, D., Mattavelli, A., Rinetzky, N., Cadar, C.: Chopped symbolic execution. In: ICSE 2018, pp. 350–360. ACM (2018)
Weiser, M.: Program slicing. IEEE Trans. Software Eng. 10(4), 352–357 (1984)
Zhang, Y.: Sympas: Symbolic program slicing. CoRR, abs/1903.05333 (2019). http://arxiv.org/abs/1903.05333
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
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2020 Springer Nature Switzerland AG
About this paper
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)