Bounds-checking Entire Program without Recompiling

download Bounds-checking Entire Program without Recompiling

of 12

Transcript of Bounds-checking Entire Program without Recompiling

  • 7/31/2019 Bounds-checking Entire Program without Recompiling

    1/12

    Bounds-Checking Entire Programs without Recompiling

    Nicholas NethercoteComputer Laboratory

    University of CambridgeUnited Kingdom

    [email protected]

    Jeremy FitzhardingeSan FranciscoUnited States

    [email protected]

    ABSTRACT

    Categories and Subject Descriptors

    General Terms

    Keywords

    1. INTRODUCTION

    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 arenot made or distributed for profit or commercial advantage and that copiesbear this notice and the full citation on the first page. To copy otherwise, torepublish, to post on servers or to redistribute to lists, re quires prior specificpermission and/or a fee.SPACE 2004 Venice, ItalyCopyright 2003 ACM X-XXXXX-XX-X/XX/XX ... 5.00.

  • 7/31/2019 Bounds-checking Entire Program without Recompiling

    2/12

    2. THEORY

    2.1 Overview

    2.2 Metadata

    2.3 Checking Accesses

    2.4 Allocating and Freeing Segments

    2.4.1 Heap Segments

  • 7/31/2019 Bounds-checking Entire Program without Recompiling

    3/12

    2.4.2 Static Segments

    2.4.3 Stack Segments

  • 7/31/2019 Bounds-checking Entire Program without Recompiling

    4/12

    2.5 Operations

    2.5.1 Copying Values

    2.5.2 New Static Values

    2.5.3 New Dynamic Values

  • 7/31/2019 Bounds-checking Entire Program without Recompiling

    5/12

    2.5.4 Subtraction

    2.5.5 Propagation of Unknown

    2.5.6 Other Operations

    2.6 Comments

  • 7/31/2019 Bounds-checking Entire Program without Recompiling

    6/12

    3. PRACTICE

    3.1 Implementation Framework

    3.2 Metadata Representation

    3.3 Segment Management

    3.3.1 Storing Segments

    3.3.2 Freeing Segments

  • 7/31/2019 Bounds-checking Entire Program without Recompiling

    7/12

    3.4 Static Segments

    3.5 Stack Segments

    3.6 Range Tests

    3.7 Pointer Differences

    3.8 System Calls

  • 7/31/2019 Bounds-checking Entire Program without Recompiling

    8/12

    3.9 Custom Allocators

    3.10 Leniency

    3.11 Examples

    3.12 Performance

    4. SHORTCOMINGS

    4.1 Optimal Case

  • 7/31/2019 Bounds-checking Entire Program without Recompiling

    9/12

    4.2 Implementation

    4.3 No Debugging Information

    4.4 No Symbols

    4.5 Avoiding Shortcomings

  • 7/31/2019 Bounds-checking Entire Program without Recompiling

    10/12

    5. RELATED WORK

    5.1 Redzones

    5.2 Fat Pointers

  • 7/31/2019 Bounds-checking Entire Program without Recompiling

    11/12

    5.3 Static Checking

    5.4 Runtime Type Checking

    6. FUTURE WORK AND CONCLUSION

    7. ACKNOWLEDGMENTS

    8. REFERENCES

  • 7/31/2019 Bounds-checking Entire Program without Recompiling

    12/12