Advertisement

CompCertS: A Memory-Aware Verified C Compiler Using Pointer as Integer Semantics

  • Frédéric BessonEmail author
  • Sandrine BlazyEmail author
  • Pierre WilkeEmail author
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 10499)

Abstract

The CompCert C compiler provides the formal guarantee that the observable behaviour of the compiled code improves on the observable behaviour of the source code. In this paper, we present a formally verified C compiler, CompCertS, which is essentially the CompCert compiler, albeit with a stronger formal guarantee: it gives a semantics to more programs and ensures that the memory consumption is preserved by the compiler. CompCertS is based on an enhanced memory model where, unlike CompCert but like Gcc, the binary representation of pointers can be manipulated much like integers and where, unlike CompCert, allocation may fail if no memory is available.

The whole proof of CompCertS is a significant proof-effort and we highlight the crux of the novel proofs of 12 passes of the back-end and a challenging proof of an essential optimising pass of the front-end.

Keywords

Verified compilation Low-level code Optimisations Pointer as integer 

Notes

Acknowledgments

This work has been partially funded by the French ANR project AnaStaSec ANR-14-CE28-0014, NSF grant 1521523 and DARPA grant FA8750-12-2-0293.

References

  1. 1.
  2. 2.
    Bedin Franca, R., Blazy, S., Favre-Felix, D., Leroy, X., Pantel, M., Souyris, J.: Formally verified optimizing compilation in ACG-based flight control software. In: ERTS 2012: Embedded Real Time Software and Systems (2012)Google Scholar
  3. 3.
    Besson, F., Blazy, S., Wilke, P.: A precise and abstract memory model for C using symbolic values. In: Garrigue, J. (ed.) APLAS 2014. LNCS, vol. 8858, pp. 449–468. Springer, Cham (2014). doi: 10.1007/978-3-319-12736-1_24 Google Scholar
  4. 4.
    Besson, F., Blazy, S., Wilke, P.: A concrete memory model for CompCert. In: Urban, C., Zhang, X. (eds.) ITP 2015. LNCS, vol. 9236, pp. 67–83. Springer, Cham (2015). doi: 10.1007/978-3-319-22102-1_5 Google Scholar
  5. 5.
    Blazy, S., Trieu, A.: Formal verification of control-flow graph flattening. In: CPP. ACM (2016)Google Scholar
  6. 6.
    Carbonneaux, Q., Hoffmann, J., Ramananandro, T., Shao, Z.: End-to-end verification of stack-space bounds for C programs. In: PLDI. ACM (2014)Google Scholar
  7. 7.
    Hathhorn, C., Ellison, C., Rosu, G.: Defining the undefinedness of C. In: PLDI. ACM (2015)Google Scholar
  8. 8.
    Kang, J., Hur, C., Mansky, W., Garbuzov, D., Zdancewic, S., Vafeiadis, V.: A formal C memory model supporting integer-pointer casts. In: PLDI (2015)Google Scholar
  9. 9.
    Krebbers, R.: Aliasing restrictions of C11 formalized in Coq. In: Gonthier, G., Norrish, M. (eds.) CPP 2013. LNCS, vol. 8307, pp. 50–65. Springer, Cham (2013). doi: 10.1007/978-3-319-03545-1_4 CrossRefGoogle Scholar
  10. 10.
    Krebbers, R.: An operational and axiomatic semantics for non-determinism and sequence points in C. In: POPL. ACM (2014)Google Scholar
  11. 11.
    Kroll, J.A., Stewart, G., Appel, A.W.: Portable software fault isolation. In: CSF. IEEE (2014)Google Scholar
  12. 12.
    Leroy, X.: Formal verification of a realistic compiler. C. ACM 52(7), 107–115 (2009)CrossRefGoogle Scholar
  13. 13.
    Memarian, K., Matthiesen, J., Lingard, J., Nienhuis, K., Chisnall, D., Watson, R.N., Sewell, P.: Into the depths of C: elaborating the de facto standards. In: PLDI. ACM (2016)Google Scholar
  14. 14.
    Norrish, M.: C formalised in HOL. Ph.D. thesis, University of Cambridge (1998)Google Scholar
  15. 15.
    Robert, V., Leroy, X.: A formally-verified alias analysis. In: Hawblitzel, C., Miller, D. (eds.) CPP 2012. LNCS, vol. 7679, pp. 11–26. Springer, Heidelberg (2012). doi: 10.1007/978-3-642-35308-6_5 CrossRefGoogle Scholar
  16. 16.
    Ševčík, J., Vafeiadis, V., Zappa Nardelli, F., Jagannathan, S., Sewell, P.: CompCertTSO: a verified compiler for relaxed-memory concurrency. J. ACM 60(3), 22:1–22:50 (2013)MathSciNetzbMATHGoogle Scholar

Copyright information

© Springer International Publishing AG 2017

Authors and Affiliations

  1. 1.InriaRennesFrance
  2. 2.Université Rennes 1 - CNRS - IRISARennesFrance
  3. 3.Yale UniversityNew HavenUSA

Personalised recommendations