Method and apparatus for creating a software patch by comparing object files
First Claim
1. A method of creating a software patch by comparing a first object file of a first software program to a second object file of a second software program, the method comprising the steps of:
- decomposing said first object file and said second object file into respective constituent cantles;
developing a first reduced program dependency graph for said first object file;
developing a second reduced program dependency graph for said second object file;
comparing said first reduced program dependency graph to said second reduced program dependency graph, wherein said comparing comprises;
locating functions of said first reduced program dependency graph;
locating functions of said second reduced program dependency graph;
determining if functions of said first reduced program dependency graph are on a working stack; and
comparing said functions of said second reduced program dependency graph to said functions of said first reduced program dependency graph if said functions of said first reduced program dependency graph are not on the working stack;
determining the changes between said first reduced program dependency graph and said second reduced program dependency graph; and
creating a patch comprised of said changes.
8 Assignments
0 Petitions
Accused Products
Abstract
Method and apparatus for creating a software patch by comparing object files. Method and apparatus are provided that create a software patch using object files of two software sources. The invention creates software patches for software programs written any high-level language so long as the programs compile to a standard object file format, and required information can be recovered. Functions of a compiled version of an existing software program are compared with an updated version that is compiled in a separate object file to discover a minimal set of changes, or “deltas” (for the patching process). The process for creating a patch includes decomposing the object file into cantles, examining fix-up information, creating reduced program dependency graphs, and comparing the graphs to determine the changes and create the patch. Because the software has already been compiled into object files, the invention is source-code independent and can be applied to code written in C/C++, Pascal or even to other specific proprietary languages.
-
Citations
12 Claims
-
1. A method of creating a software patch by comparing a first object file of a first software program to a second object file of a second software program, the method comprising the steps of:
-
decomposing said first object file and said second object file into respective constituent cantles;
developing a first reduced program dependency graph for said first object file;
developing a second reduced program dependency graph for said second object file;
comparing said first reduced program dependency graph to said second reduced program dependency graph, wherein said comparing comprises;
locating functions of said first reduced program dependency graph;
locating functions of said second reduced program dependency graph;
determining if functions of said first reduced program dependency graph are on a working stack; and
comparing said functions of said second reduced program dependency graph to said functions of said first reduced program dependency graph if said functions of said first reduced program dependency graph are not on the working stack;
determining the changes between said first reduced program dependency graph and said second reduced program dependency graph; and
creating a patch comprised of said changes. - View Dependent Claims (2, 3, 4)
determining if functions of said second reduced program dependency graph are on a working stack.
-
-
5. A method of creating a software patch by comparing code of a first software program to code of a second software program, the method comprising the steps of:
-
compiling said code of said first software program and said code of said second software program to form a first object file and a second object file, respectively;
decomposing said first object file and said second object file into respective constituent cantles;
examining fix-up information for each of said respective cantles;
developing a first reduced program dependency graph for said first object file;
developing a second reduced program dependency graph for said second object file;
comparing said first reduced program dependency graph and said second reduced program dependency graph to determine changes between said first reduced program dependency graph and said second reduced program dependency graph, wherein said comparing comprises;
locating functions of said first reduced program dependency graph;
locating functions of said second reduced program dependency graph;
determining if functions of said first reduced program dependency graph are on a working stack; and
comparing said functions of said second reduced program dependency graph to said functions of said first reduced program dependency graph if said functions of said first reduced program dependency graph are not on the working stack; and
creating a patch comprised of said changes.
-
-
6. Apparatus for creating a software patch by comparing code of a first software program to code of a second software program, the apparatus comprising:
-
means for compiling said code of said first software program and said code of said second software program to form a first object file and a second object file, respectively;
means for decomposing said first object file and said second object file into respective constituent cantles;
means for examining fix-up information for each of said respective cantles;
means for developing a first reduced program dependency graph for said first object file;
means for developing a second reduced program dependency graph for said second object file;
means for comparing said first reduced program dependency graph and said second reduced program dependency graph to determine change between said first reduced program dependency graph and said second reduced program dependency graph, wherein said means for comparing comprises;
means for locating functions of said first reduced program dependency graph;
means for locating functions of said second reduced program dependency graph;
means for determining if functions of said first reduced program dependency graph are on a working stack; and
means for comparing said functions of said second reduced program dependency graph to said functions of said first reduced program dependency graph if said functions of said first reduced program dependency graph are not on the working stack; and
means for creating a patch comprised of said changes.
-
-
7. A computer program produce for creating a software patch by comparing code of a first software program to code of a second software program, the computer program product having a medium with the computer program embodied thereon, the computer program comprising:
-
computer program code for compiling said code of said first software program and said code of said second software program to form a first object file and a second object file, respectively;
computer program code for decomposing said first object file and said second object file into respective constituent cantles;
computer program code for examining fix-up information for each of said respective cantles;
computer program code for developing a first reduced program dependency graph for said first object file;
computer program code for developing a second reduced program dependency graph for said second object file;
computer program code for comparing said first reduced program dependency graph and said second reduced program dependency graph to determine changes between said first reduced program dependency graph and said second reduced program dependency graph, wherein said computer program code for comparing comprises;
computer program code for locating functions of said first reduced program dependency graph;
computer program code for locating functions of said second reduced program dependency graph;
computer program code for determining if functions of said first reduced program dependency graph are on a working stack; and
computer program code for comparing said functions of said second reduced program dependency graph to said functions of said first reduced program dependency graph if said functions of said first reduced program dependency graph are not on the working stack; and
computer program code for creating a patch comprised of said changes.
-
-
8. A computer system for creating a software patch by comparing code of a first software program to code of a second software program comprising:
-
a processor for processing information;
a RAM device for storing information and instructions for said processor;
a ROM device for storing information and instructions for said processor;
a bus connected to said processor, RAM and ROM devices for communicating with said processor, RAM and ROM devices; and
computer program code for compiling said code of said first software program and said code of said second software program to form first and second object files;
computer program code for decomposing said first and second object files into respective constituent cantles;
computer program code for examining fix-up information for each of said respective cantles;
computer program code for developing a first reduced program dependency graph for said first object file and a second reduced program dependency graph for said second object file;
computer program code for comparing said first reduced program dependency graph and said second reduced program dependency graph and determining changes between said first reduced program dependency graph and said second reduced program dependency graph, wherein said computer program code for comparing comprises;
computer program code for locating functions of said first reduced program dependency graph;
computer program code for locating functions of said second reduced program dependency graph;
computer program code for determining if functions of said first reduced program dependency graph are on a working stack; and
computer program code for comparing said functions of said second reduced program dependency graph to said functions of said first reduced program dependency graph if said functions of said first reduced program dependency graph are not on the working stack; and
computer program code for creating a patch comprised of said changes.
-
-
9. A method of creating a software patch by comparing a first software program to a second software program, comprising the steps of:
-
compiling said first software program and said second software program to form respectively a first object file and a second object file;
determining changes between said first object file and said second object file, wherein determining comprises;
locating functions of said first software program;
locating functions of said second software program;
determining if said functions of are on a working stack; and
comparing said functions of said second software program to said functions of said first software programs if said functions are not on the working stack; and
creating a patch comprised of said changes.
-
-
10. Apparatus for creating a software patch by comparing a first software program to a second software program, the apparatus comprising:
-
means for compiling said first software program and said second software program to form respectively a first object file and a second object file;
means for determining changes between said first object file and said second object file, wherein said means for determining comprises;
means for locating functions of said first software program;
means for locating functions of said second software program;
means for determining if said functions of are on a working stack; and
means for comparing said functions of said second software program to said functions of said first software programs if said functions are not on the working stack; and
means for creating a patch comprised of said changes.
-
-
11. A computer program product for creating a software patch by comparing a first software program to a second software program, the computer program product having a medium with the computer program embodied thereon, the computer program comprising:
-
computer program code for compiling said first software program and said second software program to form respectively a first object file and a second object file;
computer program code for determining changes between said first object file and said second object file, wherein said computer program code for determining changes comprises;
computer program code for locating functions of said first software program;
computer program code for locating functions of said second software program;
computer program code for determining if said functions of are on a working stack; and
computer program code for comparing said functions of said second software program to said functions of said first software programs if said functions are not on the working stack; and
computer program code for creating a patch comprised of said changes.
-
-
12. A computer system operable to create a software patch by comparing a first software program to a second software program by performing the steps of:
-
compiling said first software program and said second software program to form respectively a first object file and a second object file;
determining changes between said first object file and said second object file, wherein said determining comprises;
locating functions of said first software program;
locating functions of said second software program;
determining if said functions of are on a working stack; and
comparing said functions of said second software program to said functions of said first software programs if said functions are not on the working stack; and
creating a patch comprised of said changes.
-
Specification