gdb: Branch Trace Format
E.19 Branch Trace Format
========================
In order to display the branch trace of an inferior thread, GDB needs to
obtain the list of branches. This list is represented as list of
sequential code blocks that are connected via branches. The code in
each block has been executed sequentially.
This list is obtained using the 'qXfer:btrace:read' (qXfer
btrace read) packet and is an XML document.
GDB must be linked with the Expat library to support XML traceframe
info discovery. Expat.
The top-level structure of the document is shown below:
<?xml version="1.0"?>
<!DOCTYPE btrace
PUBLIC "+//IDN gnu.org//DTD GDB Branch Trace V1.0//EN"
"http://sourceware.org/gdb/gdb-btrace.dtd">
<btrace>
block...
</btrace>
* A block of sequentially executed instructions starting at BEGIN and
ending at END:
<block begin="BEGIN" end="END"/>
The formal DTD for the branch trace format is given below:
<!ELEMENT btrace (block* | pt) >
<!ATTLIST btrace version CDATA #FIXED "1.0">
<!ELEMENT block EMPTY>
<!ATTLIST block begin CDATA #REQUIRED
end CDATA #REQUIRED>
<!ELEMENT pt (pt-config?, raw?)>
<!ELEMENT pt-config (cpu?)>
<!ELEMENT cpu EMPTY>
<!ATTLIST cpu vendor CDATA #REQUIRED
family CDATA #REQUIRED
model CDATA #REQUIRED
stepping CDATA #REQUIRED>
<!ELEMENT raw (#PCDATA)>