105 research outputs found

    Separation Logic for Small-step Cminor

    Get PDF
    Cminor is a mid-level imperative programming language; there are proved-correct optimizing compilers from C to Cminor and from Cminor to machine language. We have redesigned Cminor so that it is suitable for Hoare Logic reasoning and we have designed a Separation Logic for Cminor. In this paper, we give a small-step semantics (instead of the big-step of the proved-correct compiler) that is motivated by the need to support future concurrent extensions. We detail a machine-checked proof of soundness of our Separation Logic. This is the first large-scale machine-checked proof of a Separation Logic w.r.t. a small-step semantics. The work presented in this paper has been carried out in the Coq proof assistant. It is a first step towards an environment in which concurrent Cminor programs can be verified using Separation Logic and also compiled by a proved-correct compiler with formal end-to-end correctness guarantees.Comment: Version courte du rapport de recherche RR-613

    Actes de la conférence JFLA2008 (Journées Francophones des Langages Applicatifs)

    Get PDF
    Ce fichier regroupe en un seul document l'ensemble des articles acceptés pour la conférence JFLA2008.JFLA 2008 est la dix-neuvième conférence francophone organisée autour des langages applicatifs. Cette année, les journées ont lieu à Étretat, en Normandie. Nous respectons ainsi l'alternance mer-montagne traditionnelle aux JFLA et le choix d'un cadre propice aux échanges conviviaux sur les langages applicatifs. Le comité de programme a choisi 11 articles sur les 18 présentés, portant sur des sujets très variés, témoignant de la vitalité et de la diversité de notre communauté. Les soumissions étaient de grande qualité et nous remercions les auteurs qui ont soumis un article aux JFLA 2008, en contribuant ainsi au haut niveau scientifique de ces journées. Deux orateurs ont été invités: Pierre Weis, de l'INRIA Paris-Rocquencourt et Cédric Fournet, de Microsoft Research. Pour la troisième année consécutive, deux sessions d'une demi-journée chacune ont été consacrées à la découverte de thèmes de recherche: les sémantiques formelles (par Yves Bertot de l'INRIA Sophia Antipolis - Méditerranée) et la conception d'une bibliothèque formelle de mathématiques effectives (par Renaud Rioboo du laboratoire CEDRIC de l'ENSIIE)

    Comment gagner confiance en C ?

    Get PDF
    National audiencevoir article (cette communication est une chronique et ne contient pas de résumé)

    Experiments in validating formal semantics for C

    Get PDF
    International audienceThis paper reports on the design of adequate on-machine formal semantics for a certified C compiler. This compiler is an optimizing compiler, that targets critical embedded software. It is written and formally verified using the Coq proof assistant. The main structure of the compiler is very strongly conditioned by the choice of the languages of the compiler, and also by the kind of semantics of these languages

    An automatic interprocedural analysis for the understanding of scientific application programs

    Get PDF
    International audienceThis paper reports on an approach for improving the understanding of old programs which have become very complex due to numerous extensions. We have adapted partial evaluation techniques for program understanding. These techniques mainly use propagation through statements and simplifications of statements. We focus here on the automatic interprocedural analysis and we specify both tasks (propagation and simplification) for call-statements, in terms of inference rules with notations taken from the formal specification languages B and VDM. We describe how we have implemented that interprocedural analysis in a tool, and how it can be used to improve program understanding. The difficulty of that analysis is due to the lack of well defined interprocedural mechanisms and the complexity of visibility rules in Fortran

    Application of formal methods to the development of a software maintenance tool

    Get PDF
    Partial evaluation is a technique traditionally used in compilation. We have adapted this technique to the undestanding of scientific application programs during their maintenance and we have implemented a tool. This tool analyzes Fortran 90 programs and performs an interprocedural pointer analysis. This paper presents how we have specified this analysis with different formalisms (inference rules with global definitions and set and relational operators). Then we present the tool implementing these specifications. It has been implemented in a generic programming environment and a graphical inetrface has been developped to visualize the information computed during the partial evaluation

    Register allocation by graph coloring under full live-range splitting

    Get PDF
    International audienceRegister allocation is often a two-phase approach: spilling of registers to memory, followed by coalescing of registers. Extreme liverange splitting (i.e. live-range splitting after each statement) enables optimal solutions based on ILP, for both spilling and coalescing. However, while the solutions are easily found for spilling, for coalescing they are more elusive. This difficulty stems from the huge size of interference graphs resulting from live-range splitting. This paper focuses on coalescing in the context of extreme liverange splitting. It presents some theoretical properties that give rise to an algorithm for reducing interference graphs. This reduction consists mainly in finding and removing useless splitting points. It is followed by a graph decomposition based on clique separators. The reduction and decomposition are general enough, so that any coalescing algorithm can be applied afterwards. Our strategy for reducing and decomposing interference graphs preserves the optimality of coalescing. When used together with an optimal coalescing algorithm (e.g. ILP), optimal solutions are much more easily found. The strategy has been tested on a standard benchmark, the optimal coalescing challenge. For this benchmark, the cutting-plane algorithm for optimal coalescing (the only optimal algorithm for coalescing) runs 300 times faster when combined with our strategy. Moreover, we provide all the optimal solutions of the optimal coalescing challenge, including the three instances that were previously unsolved

    Formal Verification of Control-flow Graph Flattening

    Get PDF
    International audienceCode obfuscation is emerging as a key asset in security by obscurity.It aims at hiding sensitive information in programs so that theybecome more difficult to understand and reverse engineer. Since theresults on the impossibility of perfect and universal obfuscation,many obfuscation techniques have been proposed in the literature,ranging from simple variable encoding to hiding the control flow ofa program.In this paper, we formally verify in Coq an advanced code obfuscationcalled control-flow graph flattening, that is used in stateof-the-artprogram obfuscators. Our control-flow graph flatteningis a program transformation operating over C programs, that is integratedinto the CompCert formally verified compiler. The semanticspreservation proof of our program obfuscator relies on a simulationproof performed on a realistic language, the Clight languageof CompCert. The automatic extraction of our program obfuscatorinto OCaml yields a program with competitive results
    • …
    corecore