]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - gprof/gmon_out.h
Lots of changes from David Mosberger-Tang; see ChangeLog and NOTES for details:
[thirdparty/binutils-gdb.git] / gprof / gmon_out.h
1 /*
2 * This file specifies the format of gmon.out files. It should have
3 * as few external dependencies as possible as it is going to be
4 * included in many different programs. That is, minimize the
5 * number of #include's.
6 *
7 * A gmon.out file consists of a header (defined by gmon_hdr) followed
8 * by a sequence of records. Each record starts with a one-byte tag
9 * identifying the type of records, followed by records specific data.
10 */
11 #ifndef gmon_out_h
12 #define gmon_out_h
13
14 #define GMON_MAGIC "gmon" /* magic cookie */
15 #define GMON_VERSION 1 /* version number */
16
17 /*
18 * Raw header as it appears on file (without padding):
19 */
20 struct gmon_hdr {
21 char cookie[4];
22 char version[4];
23 char spare[3*4];
24 };
25
26 /* types of records in this file: */
27 typedef enum {
28 GMON_TAG_TIME_HIST, GMON_TAG_CG_ARC, GMON_TAG_BB_COUNT
29 } GMON_Record_Tag;
30
31 struct gmon_hist_hdr {
32 char low_pc[sizeof(bfd_vma)]; /* base pc address of sample buffer */
33 char high_pc[sizeof(bfd_vma)]; /* max pc address of sampled buffer */
34 char hist_size[4]; /* size of sample buffer */
35 char prof_rate[4]; /* profiling clock rate */
36 char dimen[15]; /* phys. dim., usually "seconds" */
37 char dimen_abbrev; /* usually 's' for "seconds" */
38 };
39
40 struct gmon_cg_arc_record {
41 char from_pc[sizeof(bfd_vma)]; /* address within caller's body */
42 char self_pc[sizeof(bfd_vma)]; /* address within callee's body */
43 char count[4]; /* number of arc traversals */
44 };
45
46 #endif /* gmon_out_h */