Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/292540.292553acmconferencesArticle/Chapter ViewAbstractPublication PagespoplConference Proceedingsconference-collections
Article
Free access

Aggregate structure identification and its application to program analysis

Published: 01 January 1999 Publication History

Abstract

In this paper, we describe an efficient algorithm for lazily decomposing aggregates such as records and arrays into simpler components based on the access patterns specific to a given program. This process allows us both to identify implicit aggregate structure not evident from declarative information in the program, and to simplify the representation of declared aggregates when references are made only to a subset of their components. We show that the structure identification process can be exploited to yield the following principal results: - A fast type analysis algorithm applicable to program maintenance applications such as date usage inference for the "Year 2000" problem. - An efficient algorithm for atomization of aggregates. Given a program, an aggregate atomization decomposes all of the data that can be manipulated by the program into a set of disjoint atoms such that each data reference can be modeled as one or more references to atoms without loss of semantic information. Aggregate atomization can be used to adapt program analyses and representations designed for scalar data to aggregate data. In particular, atomization can be used to build more precise versions of program representations such as SSA form or PDGs. Such representations can in turn yield more accurate results for problems such as program slicing.Our techniques are especially useful in weakly-typed languages such as Cobol (where a variable need not be declared as an aggregate to store an aggregate value) and in languages where references to statically-defined subranges of data such as arrays or strings are allowed.

References

[1]
AHO, A., SETHI, R., AND ULLMAN, J. Compilers. Principles, Techniques and Tools. Addison-Wesley, 1986.
[2]
AIKEN, A., AND WIMMERS, E. Solving systems of set constraints. In Symposium on Logic in Computer Science (June 1992), pp. 329--340.
[3]
CORMEN, T., LEISERSON, C., AND RIVEST, R. Introduction to Algorithms. MIT Press, Cambridge, MA, 1990.
[4]
CYTRON, R., FERRANTE, J., ROSEN, B. K., WEGMAN, M. N., AND ZADECK, F. Efficiently computing static single assignment form and the control dependence graph. ACM Transactions on Programming Languages and Systems 13, 4 (1991), 451-490.
[5]
FAHNDRICH, M., AND AIKEN, A. Program analysis using mixed term and set constraints. In Proceedings of the 4th International Symposium on Static Analysis (September 1997), vol. 1302 of Lecture Notes in Computer Science, Springer-Verlag, pp. 114-126.
[6]
FERRANTE, J., OTTENSTEIN, K., AND WARREN, J. The program dependence graph and its use in optimization. ACM Transactions on Programming Languages and Systems 9, 3 (1987), 319--349.
[7]
KAWABE, K., A. MATSUO, UEHARA, S., AND OGAWA, A. Variable classification technique for software maintenance and application to the year 2000 problem. In Conference on Software Maintenance and Reengineering (1998), P. Nesi and F. Lehner, Eds., IEEE Computer Society, pp. 44-50.
[8]
KNIGHT, K. Unification: A multidisciplinary survey. ACM Computing Surveys 21, 1 (1989),93-124.
[9]
MILNER, R. A theory of type polymorphismin programming. Journal of Computer and System Sciences 17 (1978), 348-375.
[10]
O'CALLAHAN, R., AND JACKSON, D. Lackwit: A program understanding tool based on type inference. In Proceedings of the 1997 International Conference on Software Engineering (ICSE'96) (Boston, MA, May 1997), pp. 338-348.
[11]
STEENSGAARD, B. Points-to analysis by type inference of programs with structures and unions. In Proceedings of the 19961nternational Conference on Compiler Construction (Link(Sping, Sweden, April 1996), vol. 1060 of Lecture Notes in Computer Science, Springer-Verlag, pp. 136-150.
[12]
STEENSGAARD, B. Points-to analysis in almost linear time. In Proceedings of the Twenty-Third ACM Symposium on Principles of Programming Languages (St. Petersburg, FL, January 1996), pp. 32-41.
[13]
STEENSGAARD, B. Personal communication, Oct. 1998.
[14]
TARJAN, R. E. Data Structures andNetwork Algorithms. Society for Industrial and Applied Mathematics, Philadelphia, PA, 1983.
[15]
TIP, F. A survey of program slicing techniques. Journal of ProgrammingLanguages3, 3 (1995), 121-189.
[16]
VAN DEURSEN, A., AND MOONEN, L. Type inference forcobol systems. In 5th Working Conference on Reverse Engineering (1998), IEEE Computer Society, pp. 220-230.
[17]
WEISER, M. Program slices: formal psychological and practical investigations of an automatic program abstraction method. PhD thesis, University of Michigan, Ann Arbor, 1979.

Cited By

View all
  • (2024)Field-sensitive program slicingJournal of Systems and Software10.1016/j.jss.2023.111939210:COnline publication date: 1-Apr-2024
  • (2023)EnBinDiff: Identifying Data-Only Patches for BinariesIEEE Transactions on Dependable and Secure Computing10.1109/TDSC.2021.313350020:1(343-359)Online publication date: 1-Jan-2023
  • (2023)Operand-Variation-Oriented Differential Analysis for Fuzzing Binding Calls in PDF ReadersProceedings of the 45th International Conference on Software Engineering10.1109/ICSE48619.2023.00020(95-107)Online publication date: 14-May-2023
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
POPL '99: Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
January 1999
324 pages
ISBN:1581130953
DOI:10.1145/292540
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 January 1999

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Article

Conference

POPL99
POPL99: Symposium on Prinicples of Programming Languages 1999
January 20 - 22, 1999
Texas, San Antonio, USA

Acceptance Rates

POPL '99 Paper Acceptance Rate 24 of 136 submissions, 18%;
Overall Acceptance Rate 824 of 4,130 submissions, 20%

Upcoming Conference

POPL '25

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)275
  • Downloads (Last 6 weeks)22
Reflects downloads up to 12 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Field-sensitive program slicingJournal of Systems and Software10.1016/j.jss.2023.111939210:COnline publication date: 1-Apr-2024
  • (2023)EnBinDiff: Identifying Data-Only Patches for BinariesIEEE Transactions on Dependable and Secure Computing10.1109/TDSC.2021.313350020:1(343-359)Online publication date: 1-Jan-2023
  • (2023)Operand-Variation-Oriented Differential Analysis for Fuzzing Binding Calls in PDF ReadersProceedings of the 45th International Conference on Software Engineering10.1109/ICSE48619.2023.00020(95-107)Online publication date: 14-May-2023
  • (2022)Relational abstract interpretation of arrays in assembly codeFormal Methods in System Design10.1007/s10703-022-00399-359:1-3(103-135)Online publication date: 2-Oct-2022
  • (2022)Field-Sensitive Program SlicingSoftware Engineering and Formal Methods10.1007/978-3-031-17108-6_5(74-90)Online publication date: 2022
  • (2019)Type Learning for Binaries and Its ApplicationsIEEE Transactions on Reliability10.1109/TR.2018.288414368:3(893-912)Online publication date: Sep-2019
  • (2019)Recovery of High-Level Intermediate Representations of Algorithms from Binary Code2019 Ivannikov Memorial Workshop (IVMEM)10.1109/IVMEM.2019.00015(57-63)Online publication date: Sep-2019
  • (2019)A data type inference method based on long short-term memory by improved feature for weakness analysis in binary codeFuture Generation Computer Systems10.1016/j.future.2019.05.013Online publication date: May-2019
  • (2018)TIFFProceedings of the 34th Annual Computer Security Applications Conference10.1145/3274694.3274746(505-517)Online publication date: 3-Dec-2018
  • (2017)Automated refactoring of legacy Java software to enumerated typesAutomated Software Engineering10.1007/s10515-016-0208-824:4(757-787)Online publication date: 1-Dec-2017
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media