<?xml version="1.0" encoding="UTF-8"?><mets:mets xmlns:mads="http://www.loc.gov/mads/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:tef="http://www.abes.fr/abes/documents/tef" xmlns:metsRights="http://cosimo.stanford.edu/sdr/metsrights/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mets="http://www.loc.gov/METS/">
<mets:metsHdr ID="rennes1-ori-wf-1-8596" CREATEDATE="2016-09-26T16:06:07" LASTMODDATE="2016-09-26T16:06:08">
  <mets:agent ROLE="CREATOR">
            <mets:name>Université de Rennes 1</mets:name>
        </mets:agent>
</mets:metsHdr>
<mets:dmdSec ID="desc_expr" CREATED="2016-09-26T16:06:07">
  <mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_desc_these">
            <mets:xmlData>
                <tef:thesisRecord>
     <dc:title xml:lang="en">Formally verified compilation of low-level C code</dc:title>
     <dcterms:alternative xml:lang="fr">Compilation formellement vérifiée de code C de bas-niveau</dcterms:alternative>
     <dc:subject xml:lang="fr">compilation</dc:subject><dc:subject xml:lang="fr">langage C</dc:subject><dc:subject xml:lang="fr">Coq (logiciel)</dc:subject><dc:subject xml:lang="fr">méthodes formelles</dc:subject><dc:subject xml:lang="fr">comportement indéfini</dc:subject>
     <dc:subject xml:lang="en">compilation</dc:subject><dc:subject xml:lang="en">Language C code</dc:subject><dc:subject xml:lang="en">Coq (Electronic resource)</dc:subject><dc:subject xml:lang="en">formal methods</dc:subject><dc:subject xml:lang="en">undefined behaviour</dc:subject>
     <tef:sujetRameau><tef:vedetteRameauNomCommun>
						<tef:elementdEntree autoriteSource="Sudoc" autoriteExterne="027672441">C (langage de programmation)</tef:elementdEntree>
      <tef:subdivision autoriteSource="Sudoc" type="subdivisionDeForme" autoriteExterne="027253139">Thèses et écrits académiques</tef:subdivision>
					</tef:vedetteRameauNomCommun><tef:vedetteRameauNomCommun>
						<tef:elementdEntree autoriteSource="Sudoc" autoriteExterne="050702858">Méthodes formelles (informatique)</tef:elementdEntree>
      <tef:subdivision autoriteSource="Sudoc" type="subdivisionDeForme" autoriteExterne="027253139">Thèses et écrits académiques</tef:subdivision>
					</tef:vedetteRameauNomCommun><tef:vedetteRameauNomCommun>
						<tef:elementdEntree autoriteSource="Sudoc" autoriteExterne="168284979">Coq (logiciel)</tef:elementdEntree>
      <tef:subdivision autoriteSource="Sudoc" type="subdivisionDeForme" autoriteExterne="027253139">Thèses et écrits académiques</tef:subdivision>
					</tef:vedetteRameauNomCommun></tef:sujetRameau>
     
     
     <dcterms:abstract xml:lang="fr">Cette thèse présente une extension du compilateur CompCert permettant de fournir des garanties formelles de préservation sémantique à des programmes auxquels CompCert n'en donne pas. CompCert est un compilateur pour le langage C vers différentes architectures qui fournit, en plus d'un exécutable compilé, des garanties formelles concernant le comportement du programme assembleur généré. En particulier, tout programme C ayant une sémantique définie selon le standard C est compilé en un programme assembleur équivalent, c'est-à-dire qui a la même sémantique. En revanche, ce théorème n'assure aucune garantie lorsque le programme source n'a pas de sémantique définie : on parle en C de comportement indéfini. Toutefois, des programmes C issus de réels projets largement utilisés contiennent des comportements indéfinis. Cette thèse détaille dans un premier temps un certain nombre d'exemples de programmes C qui déclenchent des comportements indéfinis. Nous argumentons que ces programmes devraient tout de même bénéficier du théorème de préservation sémantique de CompCert, d'abord parce qu'ils apparaissent dans de vrais projets et parce que leur utilisation des comportements indéfinis semble légitime. Dans ce but, nous proposons d'abord un modèle mémoire pour CompCert qui définit l'arithmétique arbitraire de pointeurs et la manipulation de données non initialisées, à l'aide d'un formalisme de valeurs symboliques qui capturent la sémantique d'opérations non définies dans le standard. Nous adaptons l'intégralité du modèle mémoire de CompCert avec ces valeurs symboliques, puis nous adaptons les sémantiques formelles de chacun des langages intermédiaires de CompCert. Nous montrons que ces sémantiques symboliques sont un raffinement des sémantiques existantes dans CompCert, et nous montrons par ailleurs que ces sémantiques capturent effectivement le comportement des programmes sus-cités. Enfin, afin d'obtenir des garanties similaires à celles que CompCert fournit, nous devons adapter les preuves de préservation sémantique à notre nouveau modèle. Pour ce faire, nous généralisons d'importantes techniques de preuves comme les injections mémoire, ce qui nous permet de transporter les preuves de CompCert sur nos nouvelles sémantiques. Nous obtenons ainsi un théorème de préservation sémantique qui traite plus de programmes C.</dcterms:abstract>
     <dcterms:abstract xml:lang="en">This thesis presents an extension of the CompCert compiler that aims at providing formal guarantees about the compilation of more programs than CompCert does. The CompCert compiler compiles C code into assembly code for various architectures and provides formal guarantees about the behaviour of the compiled assembly program. It states that whenever the C program has a defined semantics, the generated assembly program behaves similarly. However, the theorem does not provide any guarantee when the source program has undefined semantics, or, in C parlance, when it exhibits undefined behaviour, even though those behaviours actually happen in real-world code. This thesis exhibits a number of C idioms, that occur in real-life code and whose behaviour is undefined according to the C standard. Because they happen in real programs, our goal is to enhance the CompCert verified compiler so that it also provides formal guarantees for those programs. To that end, we propose a memory model for CompCert that makes pointer arithmetic and uninitialised data manipulation defined, introducing a notion of symbolic values that capture the meaning of otherwise undefined idioms. We adapt the whole memory model of CompCert with this new formalism and adapt the semantics of all the intermediate languages. We prove that our enhanced semantics subsumes that of CompCert. Moreover, we show that these symbolic semantics capture the behaviour of the previously undefined C idioms. The proof of semantic preservation from CompCert needs to be reworked to cope with our model. We therefore generalize important proof techniques such as memory injections, which enable us to port the whole proof of CompCert to our new memory model, therefore providing formal guarantees for more programs.</dcterms:abstract>
     <dc:type>Electronic Thesis or Dissertation</dc:type><dc:type xsi:type="dcterms:DCMIType">Text</dc:type>
     <dc:language xsi:type="dcterms:RFC3066">en</dc:language>
    </tef:thesisRecord>
            </mets:xmlData>
        </mets:mdWrap>
</mets:dmdSec>
<mets:dmdSec ID="desc_edition" CREATED="2016-09-26T16:06:07">
  <mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_desc_edition">
            <mets:xmlData>
                <tef:edition><dcterms:medium xsi:type="dcterms:IMT">application/pdf</dcterms:medium><dcterms:extent>1 : 1957 Ko</dcterms:extent><dc:identifier xsi:type="dcterms:URI">https://ecm.univ-rennes1.fr/nuxeo/site/esupversions/0dd50a06-b579-4b54-9d08-0cba13bae718</dc:identifier></tef:edition>
            </mets:xmlData>
        </mets:mdWrap>
</mets:dmdSec>
<mets:amdSec>
        <mets:techMD ID="admin_expr">
            <mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_admin_these">
                <mets:xmlData>
                    <tef:thesisAdmin>
                        <tef:auteur>
       <tef:nom>Wilke</tef:nom>
       <tef:prenom>Pierre</tef:prenom>
       
       <tef:dateNaissance>1990-10-02</tef:dateNaissance>
       <tef:nationalite scheme="ISO-3166-1">FR</tef:nationalite>
       <tef:autoriteExterne autoriteSource="Sudoc">199148848</tef:autoriteExterne>
       <tef:autoriteExterne autoriteSource="mailPerso">wilke.pierre@gmail.com</tef:autoriteExterne>
      </tef:auteur>
                        <dc:identifier xsi:type="tef:NNT">2016REN1S088</dc:identifier>
                        <dc:identifier xsi:type="tef:nationalThesisPID">http://www.theses.fr/2016REN1S088</dc:identifier>
                        <dcterms:dateAccepted xsi:type="dcterms:W3CDTF">2016-11-09</dcterms:dateAccepted>
                        <tef:thesis.degree>
                            <tef:thesis.degree.discipline xml:lang="fr">Informatique</tef:thesis.degree.discipline>
                            <tef:thesis.degree.grantor>
        <tef:nom>Universite de Rennes 1</tef:nom><tef:autoriteInterne>thesis.degree.grantor_1</tef:autoriteInterne>
        
        <tef:autoriteExterne autoriteSource="Sudoc">02778715X</tef:autoriteExterne>
       </tef:thesis.degree.grantor>
                            <tef:thesis.degree.level>Doctorat</tef:thesis.degree.level>
                        </tef:thesis.degree>
                        <tef:theseSurTravaux>non</tef:theseSurTravaux>
                        <tef:avisJury>oui</tef:avisJury><tef:directeurThese><tef:nom>Blazy</tef:nom><tef:prenom>Sandrine</tef:prenom><tef:autoriteInterne>intervenant_1</tef:autoriteInterne><tef:autoriteExterne autoriteSource="Sudoc">153042567</tef:autoriteExterne></tef:directeurThese><tef:directeurThese><tef:nom>Besson</tef:nom><tef:prenom>Frédéric</tef:prenom><tef:autoriteInterne>intervenant_2</tef:autoriteInterne><tef:autoriteExterne autoriteSource="Sudoc">070000182</tef:autoriteExterne></tef:directeurThese>
      
      
      
      
      
      
                        
                        
                        <tef:ecoleDoctorale>
       <tef:nom>MATISSE</tef:nom><tef:autoriteInterne>ecoleDoctorale_1</tef:autoriteInterne>
       
       <tef:autoriteExterne autoriteSource="Sudoc">139007164</tef:autoriteExterne>
      </tef:ecoleDoctorale>
                        <tef:partenaireRecherche type="autreType" autreType="ComuE">
       <tef:nom>Universite Bretagne Loire</tef:nom><tef:autoriteInterne>partenaireRecherche_1</tef:autoriteInterne>
       
       <tef:autoriteExterne autoriteSource="Sudoc">191639044</tef:autoriteExterne>
      </tef:partenaireRecherche>
                        <tef:partenaireRecherche type="laboratoire">
       <tef:nom>
IRISA
</tef:nom><tef:autoriteInterne>partenaireRecherche_2</tef:autoriteInterne>
       
       <tef:autoriteExterne autoriteSource="Sudoc">
026386909
</tef:autoriteExterne>
      </tef:partenaireRecherche>
                        <tef:oaiSetSpec>ddc:004</tef:oaiSetSpec>
                        
                        
                        
                        
                    





     <tef:MADSAuthority authorityID="intervenant_1" type="personal"><tef:personMADS><mads:namePart type="family">Blazy</mads:namePart><mads:namePart type="given">Sandrine</mads:namePart></tef:personMADS></tef:MADSAuthority><tef:MADSAuthority authorityID="intervenant_2" type="personal"><tef:personMADS><mads:namePart type="family">Besson</mads:namePart><mads:namePart type="given">Frédéric</mads:namePart></tef:personMADS></tef:MADSAuthority><tef:MADSAuthority authorityID="thesis.degree.grantor_1" type="corporate"><tef:personMADS><mads:namePart>Universite de Rennes 1</mads:namePart><mads:description>Sciences et technologie, medecine, pharmacie, odontologie, droit, economie, gestion, philosophie</mads:description></tef:personMADS></tef:MADSAuthority><tef:MADSAuthority authorityID="ecoleDoctorale_1" type="corporate"><tef:personMADS><mads:namePart>MATISSE</mads:namePart><mads:description>École doctorale Mathématiques, informatique, signal, électronique et télécommunications (Rennes)</mads:description></tef:personMADS></tef:MADSAuthority><tef:MADSAuthority authorityID="partenaireRecherche_1" type="corporate"><tef:personMADS><mads:namePart>Universite Bretagne Loire</mads:namePart><mads:description>
        
        
        
        Communaute des etablissements d enseignement superieur et de recherche (ComuE)
       
       
       
       </mads:description></tef:personMADS></tef:MADSAuthority><tef:MADSAuthority authorityID="partenaireRecherche_2" type="corporate"><tef:personMADS><mads:namePart>
IRISA
</mads:namePart></tef:personMADS></tef:MADSAuthority></tef:thesisAdmin>
                </mets:xmlData>
            </mets:mdWrap>
        </mets:techMD><mets:techMD ID="file_1"><mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_tech_fichier"><mets:xmlData><tef:meta_fichier>
     <tef:encodage>ASCII</tef:encodage>
     <tef:formatFichier>PDF</tef:formatFichier>
     
     
     
     <tef:taille>2003461</tef:taille>
    </tef:meta_fichier></mets:xmlData></mets:mdWrap></mets:techMD>

        
        <mets:rightsMD ID="dr_expr_thesard">
            <mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_droits_auteur_these">
                <mets:xmlData>
                    <metsRights:RightsDeclarationMD>
                        <metsRights:Context CONTEXTCLASS="GENERAL PUBLIC">
                            <metsRights:Permissions DISCOVER="true" DISPLAY="true" COPY="true" DUPLICATE="true" MODIFY="false" DELETE="false" PRINT="true"/>
                        </metsRights:Context>
                    </metsRights:RightsDeclarationMD>
                </mets:xmlData>
            </mets:mdWrap>
        </mets:rightsMD>
        <mets:rightsMD ID="dr_expr_univ">
            <mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_droits_etablissement_these">
                <mets:xmlData>
                    <metsRights:RightsDeclarationMD>
                        <metsRights:Context CONTEXTCLASS="GENERAL PUBLIC">
                            <metsRights:Permissions DISCOVER="true" DISPLAY="true" COPY="true" DUPLICATE="true" MODIFY="false" DELETE="false" PRINT="true"/>
                        </metsRights:Context>
                    </metsRights:RightsDeclarationMD>
                </mets:xmlData>
            </mets:mdWrap>
        </mets:rightsMD>
        <mets:rightsMD ID="dr_version">
            <mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_droits_version">
                <mets:xmlData>
                    <metsRights:RightsDeclarationMD>
                        <metsRights:Context CONTEXTCLASS="GENERAL PUBLIC">
                            <metsRights:Permissions DISCOVER="true" DISPLAY="true" COPY="true" DUPLICATE="true" MODIFY="false" DELETE="false" PRINT="true"/>
                        </metsRights:Context>
                    </metsRights:RightsDeclarationMD>
                </mets:xmlData>
            </mets:mdWrap>
        </mets:rightsMD>
    </mets:amdSec>
<mets:fileSec>
  <mets:fileGrp ID="FGrID1" USE="archive"><mets:file ID="FID1" ADMID="file_1" MIMETYPE="application/pdf" USE="maitre"><mets:FLocat LOCTYPE="URL" xlink:href="https://ecm.univ-rennes1.fr/nuxeo/site/esupversions/0dd50a06-b579-4b54-9d08-0cba13bae718"/></mets:file></mets:fileGrp>
 </mets:fileSec>
<mets:structMap TYPE="logical">
        <mets:div DMDID="desc_expr" ADMID="dr_expr_thesard dr_expr_univ admin_expr" TYPE="THESE" CONTENTIDS="http://ori-oai-search.univ-rennes1.fr/uid/rennes1-ori-wf-1-8596/oeuvre">
            <mets:div ADMID="dr_version" TYPE="VERSION_COMPLETE" CONTENTIDS="http://ori-oai-search.univ-rennes1.fr/uid/rennes1-ori-wf-1-8596/oeuvre/version">
                <mets:div DMDID="desc_edition" TYPE="EDITION" CONTENTIDS="http://ori-oai-search.univ-rennes1.fr/uid/rennes1-ori-wf-1-8596/oeuvre/version/edition">
                    <mets:fptr FILEID="FGrID1"/>
                </mets:div>
            </mets:div>
        </mets:div>
    </mets:structMap>
</mets:mets>