Program tracing for time travel debugging and analysis
US-2018060213-A1 · Mar 1, 2018 · US
US11720681B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-11720681-B2 |
| Application number | US-202017062146-A |
| Country | US |
| Kind code | B2 |
| Filing date | Oct 2, 2020 |
| Priority date | Dec 31, 2019 |
| Publication date | Aug 8, 2023 |
| Grant date | Aug 8, 2023 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
An example method of generating an execution profile of a firmware module comprises: receiving an execution trace of a firmware module comprising a plurality of executable instructions, wherein the execution trace comprises a plurality of execution trace records, wherein each execution trace record of the plurality of execution trace records indicates a successful execution of an executable instruction identified by a program counter (PC) value; retrieving a first execution trace record of the plurality of execution trace records, wherein the first execution trace record comprises a first PC value; identifying a first executable instruction referenced by the first PC value; identifying a firmware function containing the first executable instruction; incrementing a cycle count for the firmware function by a number of cycles associated with the first executable instruction; and generating, using the cycle count, an execution profile of the firmware module.
Opening claim text (preview).
What is claimed is: 1. A method, comprising: receiving, by a processing device, an execution trace of a firmware module comprising a plurality of executable instructions, wherein the execution trace comprises a plurality of execution trace records, wherein each execution trace record of the plurality of execution trace records indicates a successful execution of an executable instruction identified by a program counter (PC) value; retrieving a first execution trace record of the plurality of execution trace records, wherein the first execution trace record comprises a first PC value; identifying a first executable instruction referenced by the first PC value; identifying a firmware function containing the first executable instruction; incrementing a cycle count for the firmware function by a number of cycles associated with the first executable instruction; generating, using the cycle count, an execution profile of the firmware module; and utilizing, by the processing device, the execution profile for firmware verification. 2. The method of claim 1 , wherein each execution trace record of the plurality of execution trace records further comprises a timestamp. 3. The method of claim 1 , wherein the plurality of execution trace records are ordered based on an execution flow of the plurality of executable instructions. 4. The method of claim 1 , wherein the execution trace is generated by an execution environment running the firmware module. 5. The method of claim 1 , further comprising: responsive to determining that an identifier of the firmware function does not match a stored function identifier, incrementing a call count associated with the firmware function. 6. The method of claim 1 , wherein generating the execution profile further comprises: generating a text comprising a source code line associated with the first executable instruction, the first PC value, and the cycle count. 7. The method of claim 1 , further comprising: causing the execution profile to be rendered by a graphical user interface (GUI). 8. The method of claim 1 , wherein identifying the first executable instruction referenced by the first PC value further comprises: computing a relative address by subtracting a second PC value corresponding to an entry point of the firmware module from the first PC value; and identifying a source code line identified by the relative address. 9. The method of claim 8 , wherein identifying the firmware function further comprises: traversing a list of functions that is ordered by relative starting addresses, until a function is identified having an address range that includes the relative address. 10. A system, comprising: a memory; and a processing device coupled to the memory, the processing device to perform operations, comprising: receiving an execution trace of a firmware module comprising a plurality of executable instructions, wherein the execution trace comprises a plurality of execution trace records, wherein each execution trace record of the plurality of execution trace records indicates a successful execution of an executable instruction identified by a program counter (PC) value; retrieving a first execution trace record of the plurality of execution trace records, wherein the first execution trace record comprises a first PC value; identifying a firmware function containing a first executable instruction referenced by the first PC value; incrementing a cycle count for the firmware function by a number of cycles associated with the first executable instruction; and generating an execution profile of the firmware module, wherein the execution profile comprises a source code line associated with the first executable instruction, the first PC value, and the cycle count. 11. The system of claim 10 , wherein the plurality of execution trace records are ordered based on an execution flow of the plurality of executable instructions. 12. The system of claim 10 , wherein the execution trace is generated by an execution environment running the firmware module. 13. The system of claim 10 , wherein the operations further comprise: responsive to determining that an identifier of the firmware function does not match a stored function identifier, incrementing a call count associated with the firmware function. 14. The system of claim 10 , wherein the operations further comprise: causing the execution profile to be rendered by a graphical user interface (GUI). 15. The system of claim 10 , wherein identifying the first executable instruction referenced by the first PC value further comprises: computing a relative address by subtracting a second PC value corresponding to an entry point of the firmware module from the first PC value; and identifying a source code line identified by the relative address. 16. The system of claim 10 , wherein identifying the firmware function further comprises: traversing a list of functions that is ordered by relative starting addresses, until a function is identified having an address range that includes the relative address. 17. A non-transitory computer-readable storage medium comprising executable instructions which, when executed by a processing device, cause the processing device to perform operations, comprising: receiving an execution trace of a firmware module comprising a plurality of executable instructions, wherein the execution trace comprises a plurality of execution trace records, wherein each execution trace record of the plurality of execution trace records indicates a successful execution of an executable instruction identified by a program counter (PC) value; retrieving a first execution trace record of the plurality of execution trace records, wherein the first execution trace record comprises a first PC value; identifying a first executable instruction referenced by the first PC value; identifying a firmware function containing the first executable instruction; incrementing a cycle count for the firmware function by a number of cycles associated with the first executable instruction; generating, using the cycle count, an execution profile of the firmware module; and utilizing the execution profile for firmware verification. 18. The non-transitory computer-readable storage medium of claim 17 , wherein the plurality of execution trace records are ordered based on an execution flow of the plurality of executable instructions. 19. The non-transitory computer-readable storage medium of claim 17 , wherein the operations further comprise: responsive to determining that an identifier of the firmware function does not match a stored function identifier, incrementing a call count associated with the firmware function. 20. The non-transitory computer-readable storage medium of claim 17 , wherein identifying the first executable instruction referenced by the first PC value further comprises: computing a relative address by subtracting a second PC value corresponding to an entry point of the firmware module from the first PC value; and identifying a source code line identified by the relative address.
Secure firmware programming, e.g. of basic input output system [BIOS] · CPC title
Program or instruction counter, e.g. incrementing · CPC title
Visualisation of programs or trace data · CPC title
by tracing the execution of the program · CPC title
Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.