skip to main content
10.1145/1134650.1134658acmconferencesArticle/Chapter ViewAbstractPublication PagescpsweekConference Proceedingsconference-collections
Article

Pluggable abstract domains for analyzing embedded software

Published:14 June 2006Publication History

ABSTRACT

Many abstract value domains such as intervals, bitwise, constants, and value-sets have been developed to support dataflow analysis. Different domains offer alternative tradeoffs between analysis speed and precision. Furthermore, some domains are a better match for certain kinds of code than others. This paper presents the design and implementation of cXprop, an analysis and transformation tool for C that implements "conditional X propagation," a generalization of the well-known conditional constant propagation algorithm where X is an abstract value domain supplied by the user. cXprop is interprocedural, context-insensitive, and achieves reasonable precision on pointer-rich codes. We have applied cXprop to sensor network programs running on TinyOS, in order to reduce code size through interprocedural dead code elimination, and to find limited-bitwidth global variables. Our analysis of global variables is supported by a novel concurrency model for interrupt-driven software. cXprop reduces TinyOS application code size by an average of 9.2% and predicts an average data size reduction of 8.2% through RAM compression.

References

  1. Phil Buonadonna, Joseph Hellerstein, Wei Hong, David Gay, and Samuel Madden. TASK: Sensor network in a box. In Proc. of the European Workshop on Wireless Sensor Networks, Istanbul, Turkey, 2005.]]Google ScholarGoogle Scholar
  2. Caml language Web site. http://caml.inria.fr/.]]Google ScholarGoogle Scholar
  3. Jong-Deok Choi, R. Cytron, and J. Ferrante. On the efficient engineering of ambitious program analysis. IEEE Trans. Softw. Eng., 20(2):105--114, 1994.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Michael Codish, Anne Mulkers, Maurice Bruynooghe, Maria Garcia de la Banda, and Manuel Hermenegildo. Improving abstract interpretations by combining domains. ACM Transactions on Programming Languages and Systems, 17(1):28--44, 1995.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Patrick Cousot and Radhia Cousot. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Proc. of the 4th Symp. on Principles of Programming Languages (POPL), pages 238--252, Los Angeles, CA, January 1977.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Crossbow Technology, Inc. http://xbow.com.]]Google ScholarGoogle Scholar
  7. Ron Cytron, Jeanne Ferrante, Barry Rosen, Mark Wegman, and F. Kenneth Zadeck. Efficiently computing static single assignment form and the control dependence graph. ACM Transactions on Programming Languages and Systems, 13(4):451--490, October 1991.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Matthew B. Dwyer and Lori A. Clarke. A flexible architecture for building data flow analyzers. In Proc. of the 18th Intl. Conf. on Software Engineering (ICSE), pages 554--564, Berlin, Germany, March 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Matthew B. Dwyer, Lori A. Clarke, Jamieson M. Cobleigh, and Gleb Naumovich. Flow analysis for verifying properties of concurrent software systems. In ACM Transactions on Software Engineering and Methodology (TOSEM), pages 359--430, October 2004.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Chien-Liang Fok, Gruia-Catalin Roman, and Chenyang Lu. Mobile agent middleware for sensor networks: An application case study. In Proc. of the 4th Intl. Conf. on Information Processing in Sensor Networks (IPSN 05), pages 382--387, Los Angeles, CA, April 2005.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. David Gay, Phil Levis, Robert von Behren, Matt Welsh, Eric Brewer, and David Culler. The nesC language: A holistic approach to networked embedded systems. In Proc. of the Conf. on Programming Language Design and Implementation (PLDI), pages 1--11, San Diego, CA, June 2003.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Philippe Granger. Improving the results of static analyses of programs by locally decreasing iterations. In Proc. of the Conf. on Foundations of Software Technology and Theoretical Computer Science (FSTTCS), pages 68--79, New Delhi, India, December 1992.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Matthew R. Guthaus, Jeffrey S. Ringenberg, Dan Ernst, Todd M. Austin, Trevor Mudge, and Richard B. Brown. MiBench: A free, commercially representative embedded benchmark suite. In Proc. of Workshop on Workload Characterization, pages 3--14, Austin, TX, December 2001. http://www.eecs.umich.edu/mibench.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. John L. Henning. SPEC CPU2000: Measuring CPU performance in the new millennium. IEEE Computer, 33(7), July 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Ákos Lédeczi, András Nádas, Péter Völgyesi, György Balogh, Branislav Kusy, János Sallai, Gábor Pap, Sebestyén Dóra, Károly Molnár, Miklós Maróti, and Gyula Simon. Countersniper system for urban warfare. ACM Trans. Sen. Netw., 1(2):153--177, November 2005.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Philip Levis, David Gay, Vlado Handziski, Jan-Hinrich Hauer, Ben Greenstein, Martin Turon, Jonathan Hui, Kevin Klues, Cory Sharp, Robert Szewczyk, Joe Polastre, Philip Buonadonna, Lama Nachman, Gilman Tolle, David Culler, and Adam Wolisz. T2: A Second Generation OS For Embedded Sensor Networks. Technical Report TKN-05-007, Telecommunication Network Group, Technische Universität Berlin, November 2005.]]Google ScholarGoogle Scholar
  17. David Malan, Matt Welsh, and Michael Smith. A Public-Key Infrastructure for Key Distribution in TinyOS Based on Elliptic Curve Cryptography. In Proc. of the Intl. Conf. on Sensor and Ad hoc Communications and Networks (SECON), Santa Clara, CA, October 2004.]]Google ScholarGoogle Scholar
  18. Florian Martin. PAG-An efficient program analyzer generator. International Journal on Software Tools for Technology Transfer, 2(1):46--67, 1998.]]Google ScholarGoogle ScholarCross RefCross Ref
  19. Antoine Miné. The Octagon abstract domain. In Proc. of the 8th Working Conf. on Reverse Engineering (WCRE), Stuttgart, Germany, October 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Moteiv Corporation. http://www.moteiv.com.]]Google ScholarGoogle Scholar
  21. George C. Necula, Scott McPeak, S. P. Rahul, and Westley Weimer. CIL: Intermediate language and tools for analysis and transformation of C programs. In Proc. of the Intl. Conf. on Compiler Construction (CC), pages 213--228, Grenoble, France, April 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Alessandra Di Pierro and Herbert Wiklicky. Measuring the precision of abstract interpretations. In Proc. of the Intl. Workshop on Logic Based Program Synthesis and Transformation (LOPSTR), pages 147--164, London, UK, July 2001. Springer-Verlag.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. John Regehr and Usit Duongsaa. Deriving abstract transfer functions for analyzing embedded software. In Proc. of the 2005 Conf. on Languages, Compilers, and Tools for Embedded Systems (LCTES), Ottawa, Canada, June 2006.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Martin C. Rinard. Analysis of multithreaded programs. In Proc. of the 8th Static Analysis Symposium, Paris, France, July 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Mark Stephenson, Jonathan Babb, and Saman Amarasinghe. Bitwidth analysis with application to silicon compilation. In Proc. of the Conf. on Programming Language Design and Implementation (PLDI), pages 108--120, Vancouver, Canada, June 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Ben L. Titzer, Daniel Lee, and Jens Palsberg. Avrora: Scalable sensor network simulation with precise timing. In Proc. of the 4th Intl. Conf. on Information Processing in Sensor Networks (IPSN), Los Angeles, CA, April 2005.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Bryan Turner. RandomProgramGenerator, 2005. http://www.fractalscape.org/RandomProgramGenerator.]]Google ScholarGoogle Scholar
  28. Clark Verbrugge, Phong Co, and Laurie Hendren. Generalized constant propagation a study in C. In Proc. of the Intl. Conf. on Compiler Construction (CC), Linkoping, Sweden, April 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Mark N. Wegman and F. Kenneth Zadeck. Constant propagation with conditional branches. ACM Transactions on Programming Languages and Systems (TOPLAS), 13(2):181--210, April 1991.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Daniel S. Wilkerson. Delta, 2003. http://delta.tigris.org/.]]Google ScholarGoogle Scholar
  31. Andreas Zeller and Ralf Hildebrandt. Simplifying and isolating failure-inducing input. IEEE Transactions on Software Engineering, 28(2):183--200, February 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library

Recommendations

Comments

Login options

Check if you have access through your login credentials or your institution to get full access on this article.

Sign in
  • Published in

    cover image ACM Conferences
    LCTES '06: Proceedings of the 2006 ACM SIGPLAN/SIGBED conference on Language, compilers, and tool support for embedded systems
    June 2006
    220 pages
    ISBN:159593362X
    DOI:10.1145/1134650
    • cover image ACM SIGPLAN Notices
      ACM SIGPLAN Notices  Volume 41, Issue 7
      Proceedings of the 2006 LCTES Conference
      July 2006
      208 pages
      ISSN:0362-1340
      EISSN:1558-1160
      DOI:10.1145/1159974
      Issue’s Table of Contents

    Copyright © 2006 ACM

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    • Published: 14 June 2006

    Permissions

    Request permissions about this article.

    Request Permissions

    Check for updates

    Qualifiers

    • Article

    Acceptance Rates

    Overall Acceptance Rate116of438submissions,26%

PDF Format

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader
About Cookies On This Site

We use cookies to ensure that we give you the best experience on our website.

Learn more

Got it!