TY - GEN
T1 - Boomerang
T2 - 30th European Conference on Object-Oriented Programming, ECOOP 2016
AU - Späth, Johannes
AU - Quang Do, Lisa Nguyen
AU - Ali, Karim
AU - Bodden, Eric
N1 - Publisher Copyright:
© J. Spadie;th, L. Nguyen Quang Do, K. Ali, and E. Bodden; licensed under Creative Commons License CC-BY.
PY - 2016/7/1
Y1 - 2016/7/1
N2 - Many current program analyses require highly precise pointer information about small, targeted 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 Flow Droid issues up to 29.4x fewer pointer queries compared to using other pointer analyses that return simpler pointer information. Furthermore, the search space of Boomerang can be significantly reduced by requesting calling contexts from the client analysis.
AB - Many current program analyses require highly precise pointer information about small, targeted 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 Flow Droid issues up to 29.4x fewer pointer queries compared to using other pointer analyses that return simpler pointer information. Furthermore, the search space of Boomerang can be significantly reduced by requesting calling contexts from the client analysis.
KW - Aliasing
KW - Demand-driven
KW - IFDS
KW - Points-to analysis
KW - Static analysis
UR - http://www.scopus.com/inward/record.url?scp=84982822149&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84982822149&partnerID=8YFLogxK
U2 - 10.4230/LIPIcs.ECOOP.2016.22
DO - 10.4230/LIPIcs.ECOOP.2016.22
M3 - Conference contribution
AN - SCOPUS:84982822149
T3 - Leibniz International Proceedings in Informatics, LIPIcs
SP - 221
EP - 2226
BT - 30th European Conference on Object-Oriented Programming, ECOOP 2016
A2 - Lerner, Benjamin S.
A2 - Krishnamurthi, Shriram
PB - Schloss Dagstuhl- Leibniz-Zentrum fur Informatik GmbH, Dagstuhl Publishing
Y2 - 18 July 2016 through 22 July 2016
ER -