skip to main content
10.1145/2480362.2480593acmconferencesArticle/Chapter ViewAbstractPublication PagessacConference Proceedingsconference-collections
research-article

Common specification language for static and dynamic analysis of C programs

Published:18 March 2013Publication History

ABSTRACT

Various combinations of static and dynamic analysis techniques were recently shown to be beneficial for software verification. A frequent obstacle to combining different tools in a completely automatic way is the lack of a common specification language. Our work proposes to translate a Pre-Post based specification into executable C code. This paper presents e-acsl, subset of the acsl specification language for C programs, and its automatic translator into C implemented as a Frama-C plug-in. The resulting C code is executable and can be used by a dynamic analysis tool. We illustrate how the PathCrawler test generation tool automatically treats such pre- and postconditions specified as C functions.

References

  1. M. Barnett, K. R. M. Leino, and W. Schulte. The Spec# programming system: An overview. In the Construction and Analysis of Safe, Secure, and Interoperable Smart Devices, International Workshop (CASSIS 2004), volume 3362 of LNCS, pages 49--69. Springer, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. P. Baudin, J. C. Filliâtre, T. Hubert, C. Marché, B. Monate, Y. Moy, and V. Prevosto. ACSL: ANSI/ISO C Specification Language, v1.6, Sept. 2012. URL: http://frama-c.com/acsl.html.Google ScholarGoogle Scholar
  3. P. Baudin, A. Pacalet, J. Raguideau, D. Schoen, and N. Williams. CAVEAT: a tool for software validation. In the 2002 International Conference on Dependable Systems and Networks (DSN 2002), page 537. IEEE Computer Society, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. B. Botella, M. Delahaye, S. Hong-Tuan-Ha, N. Kosmatov, P. Mouy, M. Roger, and N. Williams. Automating structural testing of C programs: Experience with PathCrawler. In the 4th International Workshop on Automation of Software Test (AST 2009), pages 70--78. IEEE Computer Society, 2009.Google ScholarGoogle ScholarCross RefCross Ref
  5. G. Canet, P. Cuoq, and B. Monate. A value analysis for C programs. In the Ninth IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM 2009), pages 123--124. IEEE Computer Society, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. P. Chalin. Engineering a sound assertion semantics for the verifying compiler. IEEE Transactions on Software Engineering, 36:275--287, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. O. Chebaro, N. Kosmatov, A. Giorgetti, and J. Julliand. Program slicing enhances a verification technique combining static and dynamic analysis. In the ACM Symposium on Applied Computing (SAC 2012), pages 1284--1291. ACM, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Y. Cheon. A Runtime Assertion Checker for the Java Modeling Language. Iowa State Univ., 2003. URL: http://cs.iastate.edu/~leavens/JML/Relatedpapers/index.html.Google ScholarGoogle ScholarCross RefCross Ref
  9. C. Comar, J. Kanig, and Y. Moy. Integrating formal program verification with testing. In the Embedded Real-Time Software and Systems Congress (ERTS 2012), 2012.Google ScholarGoogle Scholar
  10. L. Correnson and J. Signoles. Combining Analyses for C Program Verification. In the 17th International Workshop on Formal Methods for Industrial Critical Systems (FMICS 2012), volume 7437 of LNCS, pages 108--130. Springer, 2012.Google ScholarGoogle Scholar
  11. C. Csallner and Y. Smaragdakis. Check'n'crash: combining static checking and testing. In the 27th International Conference on Software Engineering (ICSE 2005), pages 422--431. ACM, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. P. Cuoq, F. Kirchner, N. Kosmatov, V. Prevosto, J. Signoles, and B. Yakobowski. Frama-C, a program analysis perspective. In the 10th International Conference on Software Engineering and Formal Methods (SEFM 2012), volume 7504 of LNCS, pages 233--247. Springer, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. M. D. Ernst, J. H. Perkins, P. J. Guo, S. McCamant, C. Pacheco, M. S. Tschantz, and C. Xiao. The Daikon system for dynamic detection of likely invariants. Sci. Comput. Program., 69(1--3):35--45, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. M. Fähndrich, M. Barnett, and F. Logozzo. Embedded contract languages. In the 2010 ACM Symposium on Applied Computing (SAC 2010), pages 2103--2110. ACM, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. J.-C. Filliâtre and C. Marché. The Why/Krakatoa/Caduceus platform for deductive program verification. In the 19th International Conference on Computer Aided Verification (CAV 2007), volume 4590 of LNCS, pages 173--177. Springer, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. B. S. Gulavani, T. A. Henzinger, Y. Kannan, A. V. Nori, and S. K. Rajamani. SYNERGY: a new algorithm for property checking. In the 14th ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE 2006), pages 117--127. ACM, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. B. Hackett, M. Das, D. Wang, and Z. Yang. Modular checking for buffer overflows in the large. In 28th International Conference on Software Engineering (ICSE 2006), pages 232--241. ACM, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. B. Konikowska, A. Tarlecki, and A. Blikle. A three-valued logic for software specification and validation. Fundam. Inform., pages 411--453, 1991.Google ScholarGoogle Scholar
  19. B. Meyer. Object-Oriented Software Construction. Prentice-Hall, Inc., Upper Saddle River, NJ, USA, 1988. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. G. C. Necula, S. McPeak, and W. Weimer. CCured: type-safe retrofitting of legacy code. In 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL 2002), pages 128--139. ACM, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. J. Signoles. E-ACSL: Executable ANSI/ISO C Specification Language, Jan. 2012. URL: http://frama-c.com/download/e-acsl/e-acsl.pdf.Google ScholarGoogle Scholar
  22. J. Signoles. E-ACSL Version 1.5-4. Implementation in Frama-C Plug-in E-ACSL version 0.1, Jan. 2012. URL: http://frama-c.com/download/e-acsl/e-acsl-implementation.pdf.Google ScholarGoogle Scholar
  23. Y. Smaragdakis and C. Csallner. Combining static and dynamic reasoning for bug detection. In the First International Conference on Tests and Proofs (TAP 2007), volume 4454 of LNCS, pages 1--16. Springer, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  1. Common specification language for static and dynamic analysis of C programs

    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
      SAC '13: Proceedings of the 28th Annual ACM Symposium on Applied Computing
      March 2013
      2124 pages
      ISBN:9781450316569
      DOI:10.1145/2480362

      Copyright © 2013 ACM

      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]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 18 March 2013

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article

      Acceptance Rates

      SAC '13 Paper Acceptance Rate255of1,063submissions,24%Overall Acceptance Rate1,650of6,669submissions,25%

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader