<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="static/style.xsl"?><OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"><responseDate>2026-09-19T08:52:31Z</responseDate><request verb="GetRecord" identifier="oai:dspace.mit.edu:1721.1/112860" metadataPrefix="dim">https://dspace.mit.edu/server/oai/request</request><GetRecord><record><header><identifier>oai:dspace.mit.edu:1721.1/112860</identifier><datestamp>2026-06-06T00:49:33Z</datestamp><setSpec>com_1721.1_7582</setSpec><setSpec>com_1721.1_7581</setSpec><setSpec>col_1721.1_131023</setSpec></header><metadata><dim:dim xmlns:dim="http://www.dspace.org/xmlns/dspace/dim" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:doc="http://www.lyncode.com/xoai" xsi:schemaLocation="http://www.dspace.org/xmlns/dspace/dim http://www.dspace.org/schema/dim.xsd">
   <dim:field mdschema="dc" element="contributor" qualifier="advisor" lang="en_US">Martin C. Rinard and Stelios Sidiroglou-Douskos.</dim:field>
   <dim:field mdschema="dc" element="contributor" qualifier="author" lang="en_US">Davis, Eli Bristol</dim:field>
   <dim:field mdschema="dc" element="contributor" qualifier="other" lang="en_US">Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science.</dim:field>
   <dim:field mdschema="dc" element="contributor" qualifier="department">Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science</dim:field>
   <dim:field mdschema="dc" element="date" qualifier="accessioned">2017-12-20T18:15:08Z</dim:field>
   <dim:field mdschema="dc" element="date" qualifier="available">2017-12-20T18:15:08Z</dim:field>
   <dim:field mdschema="dc" element="date" qualifier="copyright" lang="en_US">2016</dim:field>
   <dim:field mdschema="dc" element="date" qualifier="issued" lang="en_US">2016</dim:field>
   <dim:field mdschema="dc" element="identifier" qualifier="uri">http://hdl.handle.net/1721.1/112860</dim:field>
   <dim:field mdschema="dc" element="identifier" qualifier="oclc" lang="en_US">1014182895</dim:field>
   <dim:field mdschema="dc" element="description" lang="en_US">Thesis: M. Eng., Massachusetts Institute of Technology, Department of Electrical Engineering and Computer Science, 2016.</dim:field>
   <dim:field mdschema="dc" element="description" lang="en_US">Cataloged from PDF version of thesis.</dim:field>
   <dim:field mdschema="dc" element="description" lang="en_US">Includes bibliographical references (pages 95-97).</dim:field>
   <dim:field mdschema="dc" element="description" qualifier="abstract" lang="en_US">The lack of memory safety in C/C++ programs is one of, if not the, most persistent and costly sources of program exploits. Attacks based on memory corruption can range from the reading of private data to a complete hostile takeover of a process. While many solutions to this problem have been proposed, it is as of yet unsolved-as old memory corruption attacks are rendered obsolete, new attacks continually spring up. This lack of success is largely due to the trade-offs that memory safety solutions make between completeness, compatibility, and overhead. There no a single solution with all three properties, and a solution must have all three in order to once-and-for-all solve the lack of memory safety in C programs: If a solution is incomplete, attackers will find a workaround. Unless it is backwards compatible and low-overhead, it will not be deployed in production. My goal for this thesis was to take an existing system which is close to having all three properties, and add the missing property. I chose to work with SoftboundCETS an LLVM pass which is already complete and backwards compatible, but has high runtime overhead. In this thesis, I take SoftboundCETS and heavily optimize its runtimes, reducing its total overhead by half. I split the original pass into two separate passes (one to mark which instructions were to be instrumented and the second to do the actual instrumentation) and then insert several optimization passes between them. I test my results on selected benchmarks from SPEC2000 and SPEC2006, and create a virtual machine image which allows my results to be reliably reproduced. Lastly, I propose a number of further optimizations which would allow Softbound-CETS to achieve low enough overhead to be used in a mid-performance production system.</dim:field>
   <dim:field mdschema="dc" element="description" qualifier="statementofresponsibility" lang="en_US">by Eli Bristol Davis.</dim:field>
   <dim:field mdschema="dc" element="description" qualifier="degree" lang="en_US">M.Eng.</dim:field>
   <dim:field mdschema="dc" element="format" qualifier="extent" lang="en_US">97 pages</dim:field>
   <dim:field mdschema="dc" element="language" qualifier="iso" lang="en_US">eng</dim:field>
   <dim:field mdschema="dc" element="publisher" lang="en_US">Massachusetts Institute of Technology</dim:field>
   <dim:field mdschema="dc" element="rights" lang="en_US">MIT theses are protected by copyright. They may be viewed, downloaded, or printed from this source but further reproduction or distribution in any format is prohibited without written permission.</dim:field>
   <dim:field mdschema="dc" element="rights" qualifier="uri" lang="en_US">http://dspace.mit.edu/handle/1721.1/7582</dim:field>
   <dim:field mdschema="dc" element="subject" lang="en_US">Electrical Engineering and Computer Science.</dim:field>
   <dim:field mdschema="dc" element="title" lang="en_US">Fast, compatible, complete memory safety For C programs</dim:field>
   <dim:field mdschema="dc" element="type" lang="en_US">Thesis</dim:field>
   <dim:field mdschema="dc" element="format" qualifier="mimetype">application/pdf</dim:field>
   <dim:field mdschema="dspace" element="authorsordered">false</dim:field>
   <dim:field mdschema="dspace" element="entity" qualifier="type">Publication</dim:field>
   <dim:field mdschema="others" element="access-status">unknown</dim:field>
   <dim:field mdschema="others" element="access-status">unknown</dim:field>
   <dim:field mdschema="cerif" element="openaire" authority="" confidence="-1">&lt;Publication xmlns="https://www.openaire.eu/cerif-profile/1.1/" id="502ea0f4-a709-446e-aee2-cbcead4d5b19">
	&lt;Type xmlns="https://www.openaire.eu/cerif-profile/vocab/COAR_Publication_Types">http://purl.org/coar/resource_type/c_1843&lt;/Type>
	&lt;Language>eng&lt;/Language>
   	&lt;Title>Fast, compatible, complete memory safety For C programs&lt;/Title>
   	&lt;PublishedIn>
    	&lt;Publication>
      	&lt;/Publication>
   	&lt;/PublishedIn>
   	&lt;PublicationDate>2016&lt;/PublicationDate>
   	&lt;Authors>
      	&lt;Author>
        	&lt;DisplayName&gt;Davis, Eli Bristol&lt;/DisplayName>
         	&lt;Affiliation>
         		&lt;OrgUnit>
         		&lt;/OrgUnit>
         	&lt;/Affiliation>
      	&lt;/Author>
	&lt;/Authors>
   	&lt;Editors>
	&lt;/Editors>
    &lt;Publishers>
        &lt;Publisher>
            &lt;DisplayName>Massachusetts Institute of Technology&lt;/DisplayName>
            &lt;OrgUnit />
        &lt;/Publisher>
    &lt;/Publishers>
    &lt;License>http://dspace.mit.edu/handle/1721.1/7582&lt;/License>
    &lt;Keyword>Electrical Engineering and Computer Science.&lt;/Keyword>
   	&lt;Abstract>The lack of memory safety in C/C++ programs is one of, if not the, most persistent and costly sources of program exploits. Attacks based on memory corruption can range from the reading of private data to a complete hostile takeover of a process. While many solutions to this problem have been proposed, it is as of yet unsolved-as old memory corruption attacks are rendered obsolete, new attacks continually spring up. This lack of success is largely due to the trade-offs that memory safety solutions make between completeness, compatibility, and overhead. There no a single solution with all three properties, and a solution must have all three in order to once-and-for-all solve the lack of memory safety in C programs: If a solution is incomplete, attackers will find a workaround. Unless it is backwards compatible and low-overhead, it will not be deployed in production. My goal for this thesis was to take an existing system which is close to having all three properties, and add the missing property. I chose to work with SoftboundCETS an LLVM pass which is already complete and backwards compatible, but has high runtime overhead. In this thesis, I take SoftboundCETS and heavily optimize its runtimes, reducing its total overhead by half. I split the original pass into two separate passes (one to mark which instructions were to be instrumented and the second to do the actual instrumentation) and then insert several optimization passes between them. I test my results on selected benchmarks from SPEC2000 and SPEC2006, and create a virtual machine image which allows my results to be reliably reproduced. Lastly, I propose a number of further optimizations which would allow Softbound-CETS to achieve low enough overhead to be used in a mid-performance production system.&lt;/Abstract>
	&lt;Access xmlns="http://purl.org/coar/access_right" 
    >
    &lt;/Access>
&lt;/Publication>
</dim:field>
</dim:dim>
</metadata></record></GetRecord></OAI-PMH>