Related articles |
---|
New tech report on memory access checking austin@cs.wisc.edu (Todd Austin) (1993-12-02) |
Newsgroups: | comp.compilers |
From: | Todd Austin <austin@cs.wisc.edu> |
Keywords: | report, FTP, available, debug |
Organization: | Compilers Central |
Date: | Thu, 2 Dec 1993 19:57:45 GMT |
A new technical report on pointer and array access checking is available
via anonymous ftp from "ftp.cs.wisc.edu" in directory
"tech-reports/reports/93" in the file "tr1197.ps.Z". The file is a
compressed postscript file. If you do not have ftp access or a postscript
printer, send e-mail to austin@cs.wisc.edu. We can e-mail postscript or
mail a hardcopy.
Best Regards,
Todd Austin
University of Wisconsin-Madison, austin@cs.wisc.edu
------------------------------------------------------------------------------
Title: "Efficient Detection of All Pointer and Array Access Errors"
Todd M. Austin, Scott E. Breach, and Gurindar S. Sohi
{austin, breach, sohi}@cs.wisc.edu
University of Wisconsin-Madison, Comp. Sci. Dept. TR #1197
Abstract:
In this paper, we present a pointer and array access checking technique
that provides complete error coverage through a simple set of program
transformations. Our technique, based on an extended safe pointer
representation, has a number of novel aspects. Foremost, it is the first
technique that detects all spatial and temporal access errors. Its use is
not limited by the expressiveness of the language; that is, it can be
applied successfully to compiled or interpreted languages with subscripted
and mutable pointers, local references, and explicit and typeless dynamic
storage management, e.g., C. Because it is a source level transformation,
it is amenable to both compile- and run-time optimization. Finally, its
performance, even without compile-time optimization, is quite good. We
implemented a prototype translator for the C language and analyzed the
checking overheads of six non-trivial, pointer intensive programs.
Execution overheads range from 130% to 540%; with text and data size
overheads typically below 100%.
Table of Contents:
1.0 Introduction
2.0 Safe Pointers
3.0 Program Transformations
3.1 Pointer Conversion
3.2 Check Insertion
3.3 Operator Conversion
3.4 Run-Time Support
4.0 Implications of Complete Error Coverage
5.0 Optimizing Dereference Checks
5.1 Run-Time Check Optimization
5.2 Compile-Time Check Optimization
6.0 Experimental Evaluation
6.1 Experimental Framework
6.2 Analyzed Programs
6.3 Results
7.0 Related Work
8.0 Conclusions
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.