DocumentCode
2700506
Title
Precise call graph construction in the presence of function pointers
Author
Milanova, Ana ; Rountev, Atanas ; Ryde, Barbara G.
Author_Institution
Dept. of Comput. Sci., Rutgers Univ., USA
fYear
2002
fDate
2002
Firstpage
155
Lastpage
162
Abstract
The use of pointers presents serious problems for software productivity tools for software understanding, restructuring, and testing. Pointers enable indirect memory accesses through pointer dereferences, as well as indirect procedure calls (e.g., through function pointers in C). Such indirect-accesses and calls can be disambiguated with pointer analysis. In this paper we evaluate the precision of a pointer analysis by Zhang et al. (1996, 1998) for the purposes of call graph construction for C programs with function pointers. The analysis is implemented in the context of a production-strength code-browsing tool from Siemens Corporate Research. The analysis uses an inexpensive, almost-linear flow- and context-insensitive algorithm. To measure analysis precision, we compare the call graph computed by the analysis with the most precise call graph obtainable by a large category of pointer analyses. Surprisingly, for all our data programs the analysis of Zhang et al. achieves the best possible precision. This result indicates that for the purposes of call graph construction, even inexpensive analyses can provide very good precision, and therefore the use of more expensive analyses may not be justified.
Keywords
program testing; reverse engineering; system monitoring; C programs; analysis precision; context-insensitive algorithm; flow-insensitive algorithm; function pointers; indirect memory accesses; indirect procedure calls; pointer dereferences; precise call graph construction; production strength code browsing tool; software productivity tools; software restructuring; software testing; software understanding; Algorithm design and analysis; Computer science; Costs; Data analysis; Information analysis; Optimizing compilers; Productivity; Software engineering; Software testing; Software tools;
fLanguage
English
Publisher
ieee
Conference_Titel
Source Code Analysis and Manipulation, 2002. Proceedings. Second IEEE International Workshop on
Print_ISBN
0-7695-1793-5
Type
conf
DOI
10.1109/SCAM.2002.1134115
Filename
1134115
Link To Document