IP Library Granted Patent US 7,296,261
Granted Patent B2
US 7,296,261 · App. 10/862,048 · Granted Nov 13, 2007

Method for determining the degree to which changed code has been exercised

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,296,261
App. No.
10/862,048
Granted
Nov 13, 2007
Kind
B2
Abstract

A method for determining changed code in a second program binary relative to a first or baseline program binary, where the second program is a different version of the first program, includes translating, responsive to symbol tables and/or control flow representations, machine addresses of both program binaries to symbols. The first and second program binaries are disassembled using the translated symbols. Differences between the two resulting disassemblies are determined, and a list of the differences is created. Differences between the program binaries can be determined by textually comparing the disassemblies, or alternatively, by determining the differences between the control flow representations of the programs. The list of differences can be presented to a user, or alternatively, can be passed to another process for further processing, such as test coverage analysis, code change analysis, or failure analysis, among other analyses.

Claims (80)

1. A system comprising:

a memory;

a processor; and

computer-readable code stored on said memory and processable by said processor, said computer-readable code including:

a first program binary and a second program binary, wherein the second program is a modified version of the first program;

a disassembler; and

a comparator;

wherein the disassembler is configured to:

translate machine addresses of the first program binary and the second program binary to a respective first and second set of symbols,

convert the first and second program binaries into a first and a second disassembly, respectively, using the first and second set of symbols;

and wherein the comparator is configured to:

detect differences between the first and second disassemblies; and

provide a difference list indicative of said differences.

2. The system as recited in claim 1 , further comprising a control flow analyzer configured to create a first control flow representation and a second control flow representation for the first and second program binary respectively, wherein the disassembler is further configured to utilize the first and second control flow representations to translate the machine addresses.

3. The system as recited in claim 1 , further comprising a control flow analyzer configured to create a first and a second control flow graph for the first and second disassembly, respectively, wherein the comparator is further configured to detect the differences between the first and second disassemblies using graph-matching techniques.

4. The system as recited in claim 1 , further comprising a compiler configured to create a first symbol table and a second symbol table for the first and second program binary respectively, wherein the disassembler is further configured to utilize the first and second symbol tables to translate the first and second program binaries.

5. The system as recited in claim 1 , wherein each of the first and second program binaries includes debug information, wherein the disassembler is configured to utilize the debug information to translate the first and second program binaries.

6. The system as recited in claim 1 , further comprising a filter configured to convert the difference list into a modified difference list.

7. The system as recited in claim 1 , further comprising an application configured to:

associate a first indicator with one or more changed lines of code in the second disassembly; and

execute the second program in a test environment, and associate a second indicator with one or more lines of code in the second disassembly executed in the test environment;

execute the second program in a non-test environment, and associate a third indicator with one or more lines of code in the second disassembly executed in the non-test environment; and

display an annotated listing of the second disassembly to a user, wherein the annotated listing includes the first indicator, the second indicator and the third indicator.

8. The system as recited in claim 1 , further comprising a failure analysis tool, wherein the failure analysis tool is configured to highlight changed code in a code path to a failure.

9. The system as recited in claim 1 , further comprising a compiler configured to create At least one symbol table for the first and second program binary, wherein the disassembler is further configured to utilize the at least one symbol table to translate the first and second program binaries.

10. A method comprising:

translating machine addresses of a first program binary and a second program binary to a respective first and second set of symbols,

converting the first and second program binaries into a first and a second disassembly, respectively, using the first and second set of symbols;

detecting differences between the first and second disassemblies; and

providing a difference list indicative of said differences.

11. The method as recited in claim 10 , further comprising:

creating a first control flow representation and a second control flow representation for the first and second program binary, respectively; and

utilizing the first and second control flow representations to translate the machine addresses.

12. The method as recited in claim 10 , further comprising:

creating a first and a second control flow graph for the first and second disassembly, respectively; and

detecting the differences between the first and second disassemblies using graph-matching techniques.

13. The method as recited in claim 10 , further comprising:

creating a first symbol table and a second symbol table for the first and second program binary, respectively; and

utilizing the first and second symbol tables to translate the first and second program binaries.

14. The method as recited in claim 10 , wherein each of the first and second program binaries includes debug information, further comprising:

utilizing the debug information to translate the first and second program binaries.

15. The method as recited in claim 10 , further comprising: converting the difference list into a modified difference list using a filter.

16. The method as recited in claim 10 , further comprising:

associating a first indicator with one or more changed lines of code in the second disassembly; and

executing the second program in a test environment, and associating a second indicator with one or more lines of code in the second disassembly executed in the test environment;

executing the second program in a non-test environment, and associating a third indicator with one or more lines of code in the second disassembly executed in the non-test environment; and

displaying an annotated listing of the second disassembly to a user, wherein the annotated listing includes the first indicator, the second indicator and the third indicator.

17. The method as recited in claim 10 , further comprising:

highlighting changed code in a code path to a failure.

18. The method as recited in claim 10 , further comprising:

creating at least one symbol table for the first and second program binary; and

utilizing the at least one symbol table to translate the first and second program binaries.

19. A physical computer readable storage medium comprising program instructions, wherein the program instructions are executable to:

translate machine addresses of a first program binary and a second program binary to a respective first and second set of symbols,

convert the first and second program binaries into a first and a second disassembly, respectively, using the first and second set of symbols;

detect differences between the first and second disassemblies; and

provide a difference list indicative of said differences.

20. The physical computer readable storage medium as recited in claim 19 , wherein the program instructions are further executable to:

create a first control flow representation and a second control flow representation for the first and second program binary, respectively; and

utilize the first and second control flow representations to translate the machine addresses.

21. The physical computer readable storage medium as recited in claim 19 , wherein the program instructions are further executable to:

create a first and a second control flow graph for the first and second disassembly, respectively; and

detect the differences between the first and second disassemblies using graph-matching techniques.

22. The physical computer readable storage medium as recited in claim 19 , wherein the program instructions are further executable to:

create a first symbol table and a second symbol table for the first and second program binary, respectively; and

utilize the first and second symbol tables to translate the first and second program binaries.

23. The physical computer readable storage medium as recited in claim 19 , wherein each of the first and second program binaries includes debug information, wherein the program instructions are further executable to:

utilize the debug information to translate the first and second program binaries.

24. The physical computer readable storage medium as recited in claim 19 , wherein the program instructions are further executable to:

convert the difference list into a modified difference list using a filter.

25. The physical computer readable storage medium as recited in claim 19 , wherein the program instructions are further executable to:

associate a first indicator with one or more changed lines of code in the second disassembly; and

execute the second program in a test environment, and associate a second indicator with one or more lines of code in the second disassembly executed in the test environment;

execute the second program in a non-test environment, and associate a third indicator with one or more lines of code in the second disassembly executed in the non-test environment; and

display an annotated listing of the second disassembly to a user, wherein the annotated listing includes the first indicator, the second indicator and the third indicator.

26. The physical computer readable storage medium as recited in claim 19 , wherein the program instructions are further executable to:

highlight changed code in a code path to a failure.

27. The physical computer readable storage medium as recited in claim 19 , wherein the program instructions are further executable to:

create at least one symbol table for the first and second program binary; and

utilize the at least one symbol table to translate the first and second program binaries.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2019
From: SYMANTEC CORPORATION
To: CA, INC.
Reel/Frame 051144/0918 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 28, 2015
From: SYMANTEC OPERATING CORPORATION
To: SYMANTEC CORPORATION
Reel/Frame 036199/0642 →
ASSET PURCHASE AGREEMENT Recorded Feb 15, 2010
From: INCERT SOFTWARE CORPORATION
To: VERITAS SOFTWARE CORPORATION
Reel/Frame 023928/0792 →
CHANGE OF NAME Recorded Feb 15, 2010
From: VERITAS SOFTWARE CORPORATION
To: VERITAS OPERATING CORPORATION
Reel/Frame 023928/0836 →
CHANGE OF NAME Recorded Feb 15, 2010
From: VERITAS OPERATING CORPORATION
To: SYMANTEC OPERATING CORPORATION
Reel/Frame 023928/0877 →