Method for inserting new machine instructions into preexisting m

Excavating

Patent

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

371 19, 395375, 3642674, 364DIG1, G06F 1100

Patent

active

053353447

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: 4533997 (1985-08-01), Furgerson
patent: 4802165 (1989-01-01), Ream
patent: 4811347 (1991-03-01), Bolt
patent: 4953084 (1990-08-01), Meloy et al.
patent: 5029078 (1991-07-01), Iwai
patent: 5132972 (1992-07-01), Hansen
Austin et al., "Efficient Detection of All Pointer and Array Access Errors," Computer Sciences Department, Univ. of Wisconsin-Madison, Dec. 1, 1993, pp. 1-29.
Larus et al., "Rewriting Executable Files to Measure Program Behavior," Computer Science Department, University of Wisconsin-Madison, Mar. 25, 1992, pp. 1-17.
Calliss et al., "Dynamic Data Flow Analysis of C Programs," Proceedings of the Twenty-First Annual Hawaii International Conference on System Sciences, vol. II, IEEE, Jan. 5-8, 1988, pp. 514-523.
Murray 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, Mass. 02138.
Saber-C Reference, Saber Software, Inc., Cambridge, Mass. 02138.
Graham et al., "Practical Data Breakpoints: Design and Implementation," Computer Science Division, Univ. of California-Berkeley, Jun. 1993, pp. 1-13.
Chow et al., "Engineering a RISC Compiler System," MIPS Computer Systems, IEEE, 1986, pp. 132-137.
Borg, Anita; Kessler, R. E.; Lazana, Georgia; Wall, David W.; "Long Address Traces from RISC Machines: Generation and Analysis", Western Research Laboratory, Palo Alto, Calif., Sep. 1989.
Goldberg, Aaron; Hennessy, John; "MTOOL: A Method For Detecting Memory Bottlenecks", Western Research Laboratory, Palo Alto, Calif., Dec. 1990.
McFarling, Scott; "Program Optimization for Instruction Caches", Computer Systems Laboratory, Stanford University, Association for Computing Machinery, 1989.
MIPS Computer Systems, Inc.; RISCompiler and C Programmer's Guide, Sunnyvale, Calif. 1989.
Wall, David W.; "Global Register Allocation at Link Time", Western Research Laboratory, Palo Alto, Calif., Oct. 28, 1986.
Wall, David W.; "Link-Time Code Modification, Western Research Laboratory", Palo Alto, Calif., Sep. 1989.
Wall, David W.; Powell, Michael L.; "The Mahler Experience: Using an Intermediate Language as the Machine Description", Western Research Laboratory, Palo Alto, Calif., Aug. 18, 1987.
Wall, David W.; "Register Windows vs. Register Allocation", Western Research Laboratory, Palo Alto, Calif., Dec. 1987.
Wahbe, Robert; Lucco, Steven; Anderson, Thomas and Graham, Susan L.; "Low Latency RPC Via Software-Enforced Protection Domains", Computer Science Division, 571 Evans Hall, UC Berkeley, Berkeley, Calif. 94720, 1993 (C00595).
Wahbe, Robert; "Efficient Data Breakpoints", Computer Science Division, 571 Evans Hall, UC Berkeley, Berkeley, Calif. 94720, ACM 1992 (C0001), pp. 200-209.
Wall, David W.; "Systems for Late Code Modification", DEC Western Research Laboratory, Palo Alto, Calif., May, 1992 (C00093).
Wall, David W.; Post-Compiler Code Transformation, DEC Western Research Laboratory, Palo Alto, Calif., May 29, 1992 (C00011).
Hastings and Joyce, "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/Catalytix, Cambridge, Mass., prior to Feb. 1991.
Feuer, "si- An Interpreter for the C Language", USENIX 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, Calif., Jun. 20-24, pp. 161-171.
Kessler, "Fast Breakpoint: Design and Implementation", Proceedings of the ACM SIGPLAN '90, White Plains, N.Y., 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, N.J., 1978, pp. 44-56.
Evans et al., "DEBUG- An Extension to Current Online Debugging Techniques", Communications of the ACM, vol. 8, No. 5, May, 1965, pp. 321-326.
Smith, "Tracing with pixie", Stanford, Calif.
"pixie" UNIX man pages, pp. 1-2.
May, "MIMIC: A Fast System/370 Simulator", St. Paul, Minn., ACM SIGPLAN Notices, vol. 22, No. 7, 1987, pp. 1-13.
Boothe, "Fast Accurate Simulation of Large Shared Memory Multiprocessors", UC Berkeley EECS Report 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- Practive 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, Calif.
Fox, "Dynamic Memory Management in C", BYTE, Jun. 1988, pp. 313-314, 316, 318.
Heller, "Just Add Water", BYTE, Jun. 1990, pp. 188, 190.
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 et al., "The Implementation 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 Transactions on Programming Languages and Systems, vol. 6, No. 4, Oct. 1984, pp. 449-467.
Chase, et al., "Selective Interpretation as a Technique for Debugging Computationally Intensive Programs", ACM SIGPLAN Notices, 22(7), 1987, pp. 113-124.
Grossman, "Debugging with the 80386", Dr. Dobb's Journal, Feb. 1988, pp. 18, 20, 24, 26, 28.
Sato et al., "Run-time Checking

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Method for inserting new machine instructions into preexisting m 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 for inserting new machine instructions into preexisting m, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Method for inserting new machine instructions into preexisting m will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-71712

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.