Johannes Späth, Lisa Nguyen Quang Do, Karim Ali, E. Bodden
{"title":"Boomerang: Demand-Driven Flow- and Context-Sensitive Pointer Analysis for Java","authors":"Johannes Späth, Lisa Nguyen Quang Do, Karim Ali, E. Bodden","doi":"10.4230/LIPIcs.ECOOP.2016.22","DOIUrl":null,"url":null,"abstract":"Many current program analyses require highly precise pointer \ninformation about small, tar- geted parts of a given program. This \nmotivates the need for demand-driven pointer analyses that compute \ninformation only where required. Pointer analyses generally compute \npoints-to sets of program variables or answer boolean alias \nqueries. However, many client analyses require richer pointer \ninformation. For example, taint and typestate analyses often need to \nknow the set of all aliases of a given variable under a certain \ncalling context. With most current pointer analyses, clients must \ncompute such information through repeated points-to or alias queries, increasing complexity and computation time for them. \n \nThis paper presents Boomerang, a demand-driven, flow-, field-, and \ncontext-sensitive pointer analysis for Java programs. Boomerang \ncomputes rich results that include both the possible allocation sites of a given pointer (points-to information) and all pointers that can point to those allocation sites (alias information). For increased precision and scalability, clients can query Boomerang with respect to particular calling contexts of interest. \n \nOur experiments show that Boomerang is more precise than existing \ndemand-driven pointer analyses. Additionally, using Boomerang, the \ntaint analysis FlowDroid issues up to 29.4x fewer pointer queries \ncompared to using other pointer analyses that return simpler pointer \ninfor- mation. Furthermore, the search space of Boomerang can be \nsignificantly reduced by requesting calling contexts from the client \nanalysis.","PeriodicalId":172012,"journal":{"name":"European Conference on Object-Oriented Programming","volume":"14 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2016-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"116","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"European Conference on Object-Oriented Programming","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.4230/LIPIcs.ECOOP.2016.22","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 116
Abstract
Many current program analyses require highly precise pointer
information about small, tar- geted parts of a given program. This
motivates the need for demand-driven pointer analyses that compute
information only where required. Pointer analyses generally compute
points-to sets of program variables or answer boolean alias
queries. However, many client analyses require richer pointer
information. For example, taint and typestate analyses often need to
know the set of all aliases of a given variable under a certain
calling context. With most current pointer analyses, clients must
compute such information through repeated points-to or alias queries, increasing complexity and computation time for them.
This paper presents Boomerang, a demand-driven, flow-, field-, and
context-sensitive pointer analysis for Java programs. Boomerang
computes rich results that include both the possible allocation sites of a given pointer (points-to information) and all pointers that can point to those allocation sites (alias information). For increased precision and scalability, clients can query Boomerang with respect to particular calling contexts of interest.
Our experiments show that Boomerang is more precise than existing
demand-driven pointer analyses. Additionally, using Boomerang, the
taint analysis FlowDroid issues up to 29.4x fewer pointer queries
compared to using other pointer analyses that return simpler pointer
infor- mation. Furthermore, the search space of Boomerang can be
significantly reduced by requesting calling contexts from the client
analysis.