← Back to Patent Explorer
US6206584B1 Expired / Lapsed US ⏱️ 0.0 years remaining

Method and apparatus for modifying relocatable object code files and monitoring programs

Assignee: International Business Machines Corp
•
Filing: 1995-05-31
•
Granted: 2001-03-27
•
Expires: 2015-05-31
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

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.

Inventors

  • 👤 Reed Hastings

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-05 14:28
CPC Classifications
G; G06; G06F; G06F11/00; G06F11/36; G06F11/362; G06F11/3636; G06F11/3624; G06F11/3644; G06F8/00; G06F8/40; G06F8/41; G06F8/44; G06F8/447; G06F8/54; G06F8/70; G06F8/71; G06F9/00; G06F9/06; G06F9/44; G06F9/445; G06F9/44521

Claims Analysis

Total Claims: 47
Claim 1
Independent Claim 130 words
A computer implemented method for generating machine instructions including memory access monitoring instructions, said method comprising the steps of: receiving as input a first set of machine instructions, said first set of machine instructions being specific to a computer processor with each machine instruction of said first set corresponding to an instruciton executable by said computer processor, said first set of machine instructions including a memory access instruction; and generating a second set of machine instructions from said first set of machine instructions having additional machine instructions that are memory monitoring instructions, said memory monitoring instructions checking a memory status of a memory location accessed by said memory access instruction in conjunction with execution of said memory access instruciton, said memory status including an allocated state and an unallocated state.
Claim 2
Dependent Claim 130 words
A computer implemented method for generating machine instructions including memory access monitoring instructions, said method comprising the steps of: receiving as input a first set of machine instructions, said first set of machine instructions being specific to a computer processor with each machine instruction of said first set corresponding to an instruciton executable by said computer processor, said first set of machine instructions including a memory access instruction; and generating a second set of machine instructions from said first set of machine instructions having additional machine instructions that are memory monitoring instructions, said memory monitoring instructions checking a memory status of a memory location accessed by said memory access instruction in conjunction with execution of said memory access instruciton, said memory status including an allocated state and an unallocated state.
Claim 3
Dependent Claim 27 words
The method of claim 1 , further comprising the step of signalling an error if said memory status indicates said memory location is in an unallocated state.
Claim 4
Dependent Claim 18 words
The method of claim 1 , wherein said allocated state includes an allocated-and-uninitialized state and an allocated-and-initialized state.
Claim 5
Dependent Claim 36 words
The method of claim 3 , further comprising the step of signalling an error if said memory access instruction is a read operation and said memory status indicates said memory location is in an allocated-and-uninitialized state.
Claim 6
Dependent Claim 19 words
The method of claim 1 , further comprising the step of maintaining said memory status for said memory location.
Claim 7
Dependent Claim 30 words
The method of claim 1 , wherein said second set of machine instructions has additional memory monitoring instructions for substantially all memory access instructions that access a region of memory.
Claim 8
Dependent Claim 18 words
The method of claim 1 , wherein said first and second set of machine instructions are object code.
Claim 9
Dependent Claim 21 words
A computer readable medium storing a computer program generated according to a method including the steps recited in claim 1 .
Claim 10
Dependent Claim 129 words
A computer program produce that generates machine instructions including memory access monitoring instructions, comprising: computer code that receives as input a first set of machine instructions, said first set of machine instructions being specific to a computer processor with each machine instruction of said first set corresponding to an instruction executable by said computer processor, said first set of machine instructions including a memory access instruction; computer code that generates a second set of machine instructions that are memory monitoring instructions, said memory monitoring instructions checking a memory status of a memory location accessed by said memory access instruction in conjunction with execution of said memory access instruciton, said memory status including an allocated state and an unallocated state; and a computer readable medium that stores said computer codes.
Claim 11
Dependent Claim 129 words
A computer program produce that generates machine instructions including memory access monitoring instructions, comprising: computer code that receives as input a first set of machine instructions, said first set of machine instructions being specific to a computer processor with each machine instruction of said first set corresponding to an instruction executable by said computer processor, said first set of machine instructions including a memory access instruction; computer code that generates a second set of machine instructions that are memory monitoring instructions, said memory monitoring instructions checking a memory status of a memory location accessed by said memory access instruction in conjunction with execution of said memory access instruciton, said memory status including an allocated state and an unallocated state; and a computer readable medium that stores said computer codes.
Claim 12
Dependent Claim 17 words
The computer program product of claim 9 , wherein said computer readable medium is a computer memory.
Claim 13
Dependent Claim 29 words
The computer program product of claim 9 , further comprising computer code that signals an error is said memory status indicates said memory location is in an unallocated state.
Claim 14
Dependent Claim 20 words
The computer program product of claim 9 , wherein said allocated state includes an allocated-and-uninitialized state and an allocated-and-initialized state.
Claim 15
Dependent Claim 37 words
The computer program product of claim 12 , further comprising computer code that signals an error if said memory access instruction is a read operation and said memory status indicates said memory location in an allocated-and-uninitialized state.
Claim 16
Dependent Claim 18 words
The computer program product of claim 9 , wherein said memory status is maintained for said memory location.
Claim 17
Dependent Claim 32 words
The computer program product of claim 9 , wherein said second set of machine instructions has additional memory monitoring instructions for substantially all memory access instructions that access a region of memory.
Claim 18
Dependent Claim 20 words
The computer program product of claim 9 , wherein said first and second set of machine instructions are object code.
Claim 19
Dependent Claim 147 words
A computer system the generates machine instructions including memory access monitoring instructions, comprising: a processor; and a storage medium coupled to said processor, said storage medium storing computer code including: computer code that receives as input a first set of machine instructions, said first set of machine instructions being specific to a computer processor with each machine instruction of said first set corresponding to an instruciton executable by said computer processor, said first set of machine instructions including a memory access instruction; and computer code that generates a second set of machine instructions from said first set of machine instructions having additional machine instructions that are memory monitoring instructions, said memory monitoring instructions checking a memory status of a memory location accessed by said memory access instruction in conjunction with execution of said memory access instruction, said memory status includes an allocated state and an unallocated state.
Claim 20
Dependent Claim 147 words
A computer system the generates machine instructions including memory access monitoring instructions, comprising: a processor; and a storage medium coupled to said processor, said storage medium storing computer code including: computer code that receives as input a first set of machine instructions, said first set of machine instructions being specific to a computer processor with each machine instruction of said first set corresponding to an instruciton executable by said computer processor, said first set of machine instructions including a memory access instruction; and computer code that generates a second set of machine instructions from said first set of machine instructions having additional machine instructions that are memory monitoring instructions, said memory monitoring instructions checking a memory status of a memory location accessed by said memory access instruction in conjunction with execution of said memory access instruction, said memory status includes an allocated state and an unallocated state.
Claim 21
Dependent Claim 16 words
The computer system of claim 17 , wherein said computer storage medium is a computer memory.
Claim 22
Dependent Claim 28 words
The computer system of claim 17 , further comprising computer code that signals an error if said memory status indicates said memory location is in an unallocated state.
Claim 23
Dependent Claim 19 words
The computer system of claim 17 , wherein said allocated state includes an allocated-and-uninitialized state and an allocated-and-initialized state.
Claim 24
Dependent Claim 37 words
The computer system of claim 20 , further comprising computer code that signals an error if said memory access instruction is a read operation and said memory status indicates said memory location is in an allocated-and-uninitialized state.
Claim 25
Dependent Claim 17 words
The computer system of claim 17 , wherein said memory status is maintained for said memory location.
Claim 26
Dependent Claim 31 words
The computer system of claim 17 , wherein said second set of machine instructions has additional memory monitoring instructions of substantially all memory access instructions that access a region of memory.
Claim 27
Dependent Claim 19 words
The computer system of claim 17 , wherein said first and second set of machine instructions are object code.
Claim 28
Dependent Claim 193 words
A computer implemented method for generating machine instructions including memory access instructions checked by memory monitoring instructions, said method comprising the steps of: receiving as input the first set of machine instructions, said first set of machine instructions being specific to a computer processor with each machine instruction of said first set corresponding to an instruction executable by said computer processor, said first set of machine instructions including a memory access instruction; generating a second set of machine instructions from said first set of machine instructions having additional machine instructions that are memory monitoring instructions, said memory monitoring instructions checking a memory status of a memory location accessed by said memory access instruction in conjunction with execution of said memory access instruction, said memory status including an allocated state and an unallocated state; signaling an error if said memory status indicates said memory location is in an unallocated state when accessed by said memory access instruction, said error indicating a memory-access related fault is present in said first set of machine instructions; and generating a third set of machine instructions that do not include said memory-access related fault if said error is signaled.
Claim 29
Dependent Claim 193 words
A computer implemented method for generating machine instructions including memory access instructions checked by memory monitoring instructions, said method comprising the steps of: receiving as input the first set of machine instructions, said first set of machine instructions being specific to a computer processor with each machine instruction of said first set corresponding to an instruction executable by said computer processor, said first set of machine instructions including a memory access instruction; generating a second set of machine instructions from said first set of machine instructions having additional machine instructions that are memory monitoring instructions, said memory monitoring instructions checking a memory status of a memory location accessed by said memory access instruction in conjunction with execution of said memory access instruction, said memory status including an allocated state and an unallocated state; signaling an error if said memory status indicates said memory location is in an unallocated state when accessed by said memory access instruction, said error indicating a memory-access related fault is present in said first set of machine instructions; and generating a third set of machine instructions that do not include said memory-access related fault if said error is signaled.
Claim 30
Dependent Claim 24 words
The method of claim 25 , wherein said third set of machine instructions do not contain memory access instructions that access unallocated memory locations.
Claim 31
Dependent Claim 45 words
The method of claim 25 , wherein the step of generating said third set of machine instructions includes the steps of: modifying source code associated with said first set of machine instructions; and compiling said source code to generate said third set of machine instructions.
Claim 32
Dependent Claim 18 words
The method of claim 25 , wherein said allocated state includes an allocated-and-uninitialized state and an allocated-and-initialized state.
Claim 33
Dependent Claim 36 words
The method of claim 28 , further comprising the step of signalling an error if said memory access instruction is a read operation and said memory status indicates said memory location is in an allocated-and-uninitialized state.
Claim 34
Dependent Claim 19 words
The method of claim 25 , further comprising the step of maintaining said memory status for said memory location.
Claim 35
Dependent Claim 30 words
The method of claim 25 , wherein said second set of machine instructions has additional memory monitoring instructions for substantially all memory access instructions that access a region of memory.
Claim 36
Dependent Claim 19 words
The method of claim 25 , wherein said first, second and third set of machine instructions are object code.
Claim 37
Dependent Claim 21 words
A computer readable medium storing a computer program generated according to a method including the steps recited in claim 25 .
Claim 38
Dependent Claim 217 words
A computer program on a computer storage medium including memory access instructions checked by memory monitoring instructions, said computer program generated by the steps of: receiving as input a first set of machine isntrcutions, said first set of machine instructions being specific to a computer processor with each machine instruction of said first set corresponding to an instruction executable by said computer processor, said first set of machine instructions including a memory access instruction' generating a second set of machine instructions from said first set of machine instructions having additional machine instructions that are memory monitoring instructions, said memory monitoring instructions checking a memory status of a memory location accessed by said memory access instruction in conjunction with execution of said memory access instruciton, said memory status including an allocated state and unallocated state; signaling an error if said memory status indicates said memory location is in an unallocated state when accessed by said memory access instruction, said error indicating a memory-access related fault is present in said first set of machine instructions; generating a third set of machine instruction that do not include said memory-access related fault if said error is signaled; and storing said computer program on said computer storage medium, said computer program including executable instructions corresponding to said third set of machine instructions.
Claim 39
Dependent Claim 217 words
A computer program on a computer storage medium including memory access instructions checked by memory monitoring instructions, said computer program generated by the steps of: receiving as input a first set of machine isntrcutions, said first set of machine instructions being specific to a computer processor with each machine instruction of said first set corresponding to an instruction executable by said computer processor, said first set of machine instructions including a memory access instruction' generating a second set of machine instructions from said first set of machine instructions having additional machine instructions that are memory monitoring instructions, said memory monitoring instructions checking a memory status of a memory location accessed by said memory access instruction in conjunction with execution of said memory access instruciton, said memory status including an allocated state and unallocated state; signaling an error if said memory status indicates said memory location is in an unallocated state when accessed by said memory access instruction, said error indicating a memory-access related fault is present in said first set of machine instructions; generating a third set of machine instruction that do not include said memory-access related fault if said error is signaled; and storing said computer program on said computer storage medium, said computer program including executable instructions corresponding to said third set of machine instructions.
Claim 40
Dependent Claim 25 words
The computer program of claim 34 , wherein said third set of machine instructions do not contain memory access instructions that access unallocated memory locations.
Claim 41
Dependent Claim 46 words
The computer program of claim 34 , wherein the step of generating said third set of machine instructions includes the steps of: modifying source code associated with said first set of machine instructions; and compiling said source code to generate said third set of machine instructions.
Claim 42
Dependent Claim 19 words
The computer program of claim 34 , wherein said allocated state includes an allocated-and-uninitialized state and an allocated-and-initialized state.
Claim 43
Dependent Claim 38 words
The computer program of claim 37 , further generated by the step of signalling an error if said memory access instruction is a read operation and said memory status indicates said memory location is in an allocated-and-uninitialized state.
Claim 44
Dependent Claim 21 words
The computer program of claim 34 , further generated by the step of maintaining said memory status for said memory location.
Claim 45
Dependent Claim 31 words
The computer program of claim 34 , wherein said second set of machine instructions has additional memory monitoring instructions for substantially all memory access instructions that access a region of memory.
Claim 46
Dependent Claim 36 words
The computer program of claim 34 , wherein said first, second and third set of machine instructions are specific to a computer processor with each machine instruction corresponding to an instruction executable by said computer processor.
Claim 47
Dependent Claim 20 words
The computer program of claim 41 , wherein said first, second and third set of machine instructions are object code.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2004-03-26 2004-09-25 2005-03-27 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2008-03-26 2008-09-25 2009-03-27 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2012-03-26 2012-09-25 2013-03-27 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag