Patent
1995-05-26
1996-07-09
Beausoliel, Jr., Robert W.
39518502, 39518506, 39518507, C06F 1100
Patent
active
055353290
ABSTRACT:
An object code expansion program inserts new instructions and data between preexisting instructions and data of an object code file; offsets are modified to reflect new positions of the preexisting instructions and data. For each item of preexisting object code (instructions or data), the following steps are performed: making a new code block comprising any desired new instructions and the item, and storing it as new object code; tracking the location of the item and the new code block within the new object code; and tracking items that contain inter-item offsets. Then, each inter-item offset is updated using the new location of the item or new code block, as required. Finally, offsets in symbol tables and relocation structures are updated with the new location of the item. This expansion program is used to add instructions to object code files of a second program, to monitor substantially all of the memory accesses of the second program. The added instructions establish and maintain a memory status array with entries for memory locations that are validly accessible by the second program; entries indicate the status of corresponding memory locations. The memory status array is used to check for the errors of writing to unallocated memory and reading from unallocated or uninitialized memory. Also, the data section of the object code files are expanded with extra dummy entries to aid in the detection of array bounds violations and similar data errors. Furthermore, watchpoints can be established for more comprehensive monitoring.
REFERENCES:
patent: 3815103 (1974-06-01), Holtey et al.
patent: 4104718 (1978-08-01), Poublin et al.
patent: 4394731 (1983-07-01), Flusche et al.
patent: 4533997 (1985-08-01), Furgerson
patent: 4802165 (1989-01-01), Ream
patent: 4811347 (1989-03-01), Bolt
patent: 4815025 (1989-03-01), Ossfeldt et al.
patent: 4903194 (1990-02-01), Houdek et al.
patent: 4937736 (1990-06-01), Chang et al.
patent: 4953084 (1990-08-01), Meloy et al.
patent: 5025366 (1991-06-01), Baror
patent: 5029078 (1991-07-01), Iwai
patent: 5075842 (1991-12-01), Lai
patent: 5115499 (1992-05-01), Stiffler et al.
patent: 5132972 (1992-07-01), Hansen
patent: 5175837 (1992-12-01), Arnold et al.
patent: 5193180 (1993-03-01), Hastings
patent: 5230070 (1993-07-01), Liu
patent: 5335344 (1994-08-01), Hastings
patent: 5404499 (1995-04-01), Nichols
patent: 5438670 (1995-08-01), Baror et al.
Austin et al., Efficient Detection Of All Pointer And Array Access Errors, Computer Sciences Dept., Univ. of Wisconsin-Madison, Dec. 1, 1993, pp. 1-29.
Larus et al., Rewriting Executable Files To Measure Program Behavior, Computer Sciences Dept., Univ. of Wisconsin-Madison, Mar. 25, 1992, pp. 1-17.
Calliss et al., Dynamic Data Flow Analysis of C Programs, Proc. of 21st Ann. Hawaii Inter. Conf. on Sys. Sci., vol. II, IEEE, Jan. 5-8, 1988, pp. 514-523.
Egan, Achieving Supercomputer Performance In A Low Pain Environment, Compcon Spring '90, Mar. 2, 1990, IEEE, pp. 205-207.
Using Saber-C, Saber Software, Inc., Cambridge, Massachusetts 02138.
Saber-C Reference, Saber Software, Inc., Cambridge, Massachusetts 02138.
Graham et al., Practical Data Breakpoints: Design And Implementation, Computer Science Division, Univ. of California, Berkeley, California 94720, Jun. 1993, pp. 1-13.
Chow et al., Engineering A Risc Compiler System, Mips Computer Systems, IEEE, 1986, pp. 132-137.
Borg et al., Long Address Traces From Risc Machines: Generation And Analysis, Western Research Laboratory, Palo Alto, California, Sep. 1989.
Goldberg et al., Mtool: A Method For Detecting Memory Bottlenecks, Western Research Laboratory, Palo Alto, California, Dec. 1990.
McFarling, Program Organization For Instruction Caches, Computer Systems Laboratory, Stanford University, Assoc. for Computing Machinery, 1989.
Mips Computer Systems Inc., Riscompiler and C Programmer's Guide, Sunnyvale, California 1989.
Wall, Global Register Allocation at Link Time, Western Research Laboratory, Palo Alto, California, Oct. 28, 1986.
Wall, Link-Time Code Modification, Western Research Laboratory, Palo Alto, California, Sep. 1989.
Wall et al., The Mahler Experience: Using An Intermediate Language As The Machine Description, Western Research Laboratory, Palo Alto, California, Aug. 18, 1987.
Wall, Register Windows VS. Register Allocation, Western Research Laboratory, Palo Alto, California, Dec. 1987.
Wahbe et al., Low Latency RPC Via Software--Enforced Protection Domains, Computer Science Division, 571 Evans Hall, UC Berkeley Berkeley, California 94720, 1993 (C00595).
Wahbe, Efficient Data Breakpoints, Computer Science Dept., University of California, Berkeley, California 94720, ACM 1992, (C0001), pp. 200-209.
Wall, Systems For Late Code Modification, DEC Western Research Laboratory, Palo Alto, California, May 1992 (C00093).
Wall, Post Compiler Code Transformation, DEC Western Research Laboratory, Palo Alto, California, May 29, 1992 (C00011).
Hastings et al., Purify: Fast Detection Of Memory Leaks And Access Errors, Proceedings of the Winter USENIX Conference, Jan. 1992, pp. 125-136.
The Safe C Runtime Analyzer, product description and manual pages, Blossom/Catalyix, Cambridge, Massachusetts, prior to Feb. 1991.
Feuer, SI-AN Interpreter For The C Language, USE-NIX Conference Proceedings, Summer 1985, pp. 47-55.
Kaufer et al., Saber C, An Interpreter-Based Programming Environment For The C Language, Summer USENIX 1988, San Francisco, California, Jun. 20-14, pp. 161-171.
Kessler, Fast Breakpoint: Design And Implementation, Proceeding of the ACM Sigplan '90, White Plains, New York, Jun. 20-22, 1990, pp. 78-84.
Johnson, Postloading For Fun And Profit, USENIX, Winter 1990, pp. 325-330.
Bishop, Profiling Under UNIX By Patching, Software Practice and Experience, vol. 17, No. 10, Oct. 1987, pp. 729-739.
Mellor-Crummey et al., A Software Instruction Counter, Sigplan Notices, vol. 24, special issue May 1989, pp. 78-86.
Ferrari, Computer Systems Performance Evaluation, Englewood Cliffs, New Jersey, 1978, pp. 44-56.
Evans et al., Debug-An Extension To Current On-Line Debugging Techniques, Comm. of ACM, vol. 8, No. 5, May 1965, pp. 321-326.
Smith, Tracing With Pixie, Stanford, California, "Pixie" UNIX man pages, pp. 1-2.
May, Mimic: A Fast System/370 Simulator, St. Paul, Minnesota, ACM Sigplan Notices, vol. 22, No. 7, 1987, pp. 1-13.
Boothe, Fast Accurate Simulation Of Large Shared Memory Multi-Processors, UC Berkeley EECS Rpt No. UCB/CDS 92/682, Apr. 1992.
Ward, Wierd C Bugs, Computer Language, Apr. 1988, pp. 63-66.
Merilatt, C Dynamic Memory Use, Dr. Dobb's Journal, Aug. 1989, pp. 62, 64, 66-67, 125.
Anderson, C Customized Memory Allocators, Dr. Dobb's C Sourcebook, Winter 1989/90, pp. 62-66, 94.
Kempton et al., Run-Time Detection Of Undefined Variables Considered Essential, Software-Practice and Experience, vol. 20(4), pp. 391-402, Apr. 1990.
Johnson, An Annotated Software Debugging Bibliography, Hewlett-Packard CSL 82-4, Mar. 1982, Palo Alto, California.
Fox, Dynamic Memory Management In C, Byte, Jun. 1988, pp. 313-314, 316, 318.
Heller, Just Add Water, Byte, Jun. 1990, pp. 188, 190. 314, 316, 318.
Pearson, Array Bounds Checking With Turbo C, Dr. Dobb's Journal May 1991, pp. 72-74, 78-82, 104.
Thompson, Error Checking, Tracing, And Dumping In An Algol 68 Checkout Compiler, Sigplan Notices Jul. 1977, pp. 106-111.
Steffen, Adding Run-Time Checking To The Portable C Compiler, Software-Practice and Experience, vol. 22(4), pp. 305-316, Apr. 1992.
Welsh, Economic Range Checks In Pascal, Software-Practice and Experience, vol. 8, pp. 85-97, 1978.
Zelkowitz et al., Error Checking With Pointer Variables, Proceedings of the ACM 1976 National Conference, pp. 391-395, 1976.
Delisle et al., Viewing A Programming Environment As A Single Tool, ACM Sigplan Notices, vol. 19(5), 1984, pp. 49-56.
Ross, Integral C-A Practical Environment For C Programming, ACM Sigplan Notices, vol. 22(1), 1986, pp. 42-48.
Fischer, The Implementtion Of Run-Time Diagnostics In Pascal, IEEE Transactions on Software Engineering, vol. SE-6, No. 4, Jul. 1980, pp. 313-319.
Winner, Unassigned Objects, ACM Transaction on Prog
Beausoliel, Jr. Robert W.
Palys Joseph E.
Pure Software Inc.
LandOfFree
Method and apparatus for modifying relocatable object code files does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Method and apparatus for modifying relocatable object code files, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Method and apparatus for modifying relocatable object code files will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-1875352