SYSTEMS AND METHODS FOR BACKWARD-COMPATIBLE CONSTANT-TIME EXCEPTION-PROTECTION MEMORY
First Claim
1. A method comprising:
- utilizing one or more processors to execute a program of instructions, the program of instructions comprising computer readable program code configured to;
in programs supporting general pointers, detect all types of temporal and spatial memory access errors, including uninitialized memory accesses;
wherein all types of temporal and spatial memory access errors are checked in constant time;
wherein coverage of said uninitialized memory accesses is complete for small allocations and is approximate otherwise; and
wherein coverage of all other memory errors is complete within constant time.
1 Assignment
0 Petitions
Accused Products
Abstract
Embodiments of the invention provide a table-free technique for detecting all temporal and spatial memory access errors in programs supporting general pointers. Embodiments of the invention provide such error checking using constant-time operations. Embodiments of the invention rely on fat pointers, whose size is contained within standard scalar sizes (up to two words) so that atomic hardware support for operations upon the pointers is obtained along with meaningful casts in-between pointers and other scalars. Optimized compilation of code becomes possible since the scalarized-for-free encoded pointers get register allocated and manipulated. Backward compatibility is enabled by the scalar pointer sizes, with automatic support provided for encoding and decoding of fat pointers in place for interaction with unprotected code.
-
Citations
24 Claims
-
1. A method comprising:
-
utilizing one or more processors to execute a program of instructions, the program of instructions comprising computer readable program code configured to; in programs supporting general pointers, detect all types of temporal and spatial memory access errors, including uninitialized memory accesses; wherein all types of temporal and spatial memory access errors are checked in constant time; wherein coverage of said uninitialized memory accesses is complete for small allocations and is approximate otherwise; and wherein coverage of all other memory errors is complete within constant time. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. An apparatus comprising:
-
one or more processors; and a computer readable storage medium having computer readable program code embodied therewith and executable by the one or more processors, the computer readable program code comprising; computer readable program code configured to, in programs supporting general pointers, detect all types of temporal and spatial memory access errors, including uninitialized memory accesses; wherein all types of temporal and spatial memory access errors are checked in constant time; wherein coverage of said uninitialized memory accesses is complete for small allocations and is approximate otherwise; and wherein coverage of all other memory errors is complete within constant time. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. A computer program product comprising:
-
a computer readable storage medium having computer readable program code embodied therewith, the computer readable program code comprising; computer readable program code configured to, in programs supporting general pointers, detect all types of temporal and spatial memory access errors, including uninitialized memory accesses; wherein all types of temporal and spatial memory access errors are checked in constant time; wherein coverage of said uninitialized memory accesses is complete for small allocations and is approximate otherwise; and wherein coverage of all other memory errors is complete within constant time. - View Dependent Claims (22, 23, 24)
-
Specification