{"title":"CaLLi:用于静态分析 LLVM 位代码的 OCaml 库","authors":"Soyeon Baek, Sungho Lee","doi":"10.1016/j.softx.2024.101810","DOIUrl":null,"url":null,"abstract":"<div><p>As LLVM has matured, several third-party static analysis frameworks targeting LLVM bitcode have emerged. However, because these frameworks are written in one of the traditional object-oriented languages such as C++ and Java, developing new analysis tools on the frameworks requires much effort to implement complex components for static analysis. This paper introduces <span>CaLLi</span>, an OCaml library designed for static analysis of LLVM bitcode. OCaml is a functional programming language and widely employed in research and tool development for static analysis, due to its robust type system and reliability. <span>CaLLi</span> assists in developing static analysis tools by providing essential modules for static analysis. Additionally, <span>CaLLi</span> provides several IR transformation features and supports context-sensitive analysis to enhance analysis accuracy.</p></div>","PeriodicalId":21905,"journal":{"name":"SoftwareX","volume":null,"pages":null},"PeriodicalIF":2.4000,"publicationDate":"2024-07-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://www.sciencedirect.com/science/article/pii/S235271102400181X/pdfft?md5=c92f81ffbf6e1679b17a45a306354afd&pid=1-s2.0-S235271102400181X-main.pdf","citationCount":"0","resultStr":"{\"title\":\"CaLLi: OCaml library for static analysis of LLVM bitcode\",\"authors\":\"Soyeon Baek, Sungho Lee\",\"doi\":\"10.1016/j.softx.2024.101810\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"<div><p>As LLVM has matured, several third-party static analysis frameworks targeting LLVM bitcode have emerged. However, because these frameworks are written in one of the traditional object-oriented languages such as C++ and Java, developing new analysis tools on the frameworks requires much effort to implement complex components for static analysis. This paper introduces <span>CaLLi</span>, an OCaml library designed for static analysis of LLVM bitcode. OCaml is a functional programming language and widely employed in research and tool development for static analysis, due to its robust type system and reliability. <span>CaLLi</span> assists in developing static analysis tools by providing essential modules for static analysis. Additionally, <span>CaLLi</span> provides several IR transformation features and supports context-sensitive analysis to enhance analysis accuracy.</p></div>\",\"PeriodicalId\":21905,\"journal\":{\"name\":\"SoftwareX\",\"volume\":null,\"pages\":null},\"PeriodicalIF\":2.4000,\"publicationDate\":\"2024-07-03\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"https://www.sciencedirect.com/science/article/pii/S235271102400181X/pdfft?md5=c92f81ffbf6e1679b17a45a306354afd&pid=1-s2.0-S235271102400181X-main.pdf\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"SoftwareX\",\"FirstCategoryId\":\"94\",\"ListUrlMain\":\"https://www.sciencedirect.com/science/article/pii/S235271102400181X\",\"RegionNum\":4,\"RegionCategory\":\"计算机科学\",\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"Q2\",\"JCRName\":\"COMPUTER SCIENCE, SOFTWARE ENGINEERING\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"SoftwareX","FirstCategoryId":"94","ListUrlMain":"https://www.sciencedirect.com/science/article/pii/S235271102400181X","RegionNum":4,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"Q2","JCRName":"COMPUTER SCIENCE, SOFTWARE ENGINEERING","Score":null,"Total":0}
引用次数: 0
摘要
随着 LLVM 的成熟,出现了一些针对 LLVM bitcode 的第三方静态分析框架。然而,由于这些框架都是用 C++ 和 Java 等传统面向对象语言编写的,因此在这些框架上开发新的分析工具需要花费大量精力来实现复杂的静态分析组件。本文介绍了 CaLLi,一个专为 LLVM 位代码静态分析而设计的 OCaml 库。OCaml 是一种函数式编程语言,由于其强大的类型系统和可靠性,被广泛用于静态分析的研究和工具开发。CaLLi 通过提供用于静态分析的基本模块,协助开发静态分析工具。此外,CaLLi 还提供多种 IR 转换功能,并支持上下文相关分析,以提高分析的准确性。
CaLLi: OCaml library for static analysis of LLVM bitcode
As LLVM has matured, several third-party static analysis frameworks targeting LLVM bitcode have emerged. However, because these frameworks are written in one of the traditional object-oriented languages such as C++ and Java, developing new analysis tools on the frameworks requires much effort to implement complex components for static analysis. This paper introduces CaLLi, an OCaml library designed for static analysis of LLVM bitcode. OCaml is a functional programming language and widely employed in research and tool development for static analysis, due to its robust type system and reliability. CaLLi assists in developing static analysis tools by providing essential modules for static analysis. Additionally, CaLLi provides several IR transformation features and supports context-sensitive analysis to enhance analysis accuracy.
期刊介绍:
SoftwareX aims to acknowledge the impact of software on today''s research practice, and on new scientific discoveries in almost all research domains. SoftwareX also aims to stress the importance of the software developers who are, in part, responsible for this impact. To this end, SoftwareX aims to support publication of research software in such a way that: The software is given a stamp of scientific relevance, and provided with a peer-reviewed recognition of scientific impact; The software developers are given the credits they deserve; The software is citable, allowing traditional metrics of scientific excellence to apply; The academic career paths of software developers are supported rather than hindered; The software is publicly available for inspection, validation, and re-use. Above all, SoftwareX aims to inform researchers about software applications, tools and libraries with a (proven) potential to impact the process of scientific discovery in various domains. The journal is multidisciplinary and accepts submissions from within and across subject domains such as those represented within the broad thematic areas below: Mathematical and Physical Sciences; Environmental Sciences; Medical and Biological Sciences; Humanities, Arts and Social Sciences. Originating from these broad thematic areas, the journal also welcomes submissions of software that works in cross cutting thematic areas, such as citizen science, cybersecurity, digital economy, energy, global resource stewardship, health and wellbeing, etcetera. SoftwareX specifically aims to accept submissions representing domain-independent software that may impact more than one research domain.