[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The old BSD-derived file format used for profile data does not contain a
magic cookie that allows to check whether a data file really is a
gprof
file. Furthermore, it does not provide a version number, thus
rendering changes to the file format almost impossible. GNU gprof
uses a new file format that provides these features. For backward
compatibility, GNU gprof
continues to support the old BSD-derived
format, but not all features are supported with it. For example,
basic-block execution counts cannot be accommodated by the old file
format.
The new file format is defined in header file `gmon_out.h'. It
consists of a header containing the magic cookie and a version number,
as well as some spare bytes available for future extensions. All data
in a profile data file is in the native format of the target for which
the profile was collected. GNU gprof
adapts automatically
to the byte-order in use.
In the new file format, the header is followed by a sequence of
records. Currently, there are three different record types: histogram
records, call-graph arc records, and basic-block execution count
records. Each file can contain any number of each record type. When
reading a file, GNU gprof
will ensure records of the same type are
compatible with each other and compute the union of all records. For
example, for basic-block execution counts, the union is simply the sum
of all execution counts for each basic-block.