aboutsummaryrefslogtreecommitdiff
path: root/gprof/gmon_out.h
blob: c9638692e90ffc678633d2c06eff04fe5b0809da (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/*
 * This file specifies the format of gmon.out files.  It should have
 * as few external dependencies as possible as it is going to be
 * included in many different programs.  That is, minimize the
 * number of #include's.
 *
 * A gmon.out file consists of a header (defined by gmon_hdr) followed
 * by a sequence of records.  Each record starts with a one-byte tag
 * identifying the type of records, followed by records specific data.
 */
#ifndef gmon_out_h
#define gmon_out_h

#define	GMON_MAGIC	"gmon"	/* magic cookie */
#define GMON_VERSION	1	/* version number */

/*
 * Raw header as it appears on file (without padding):
 */
struct gmon_hdr {
    char	cookie[4];
    char	version[4];
    char	spare[3*4];
};

/* types of records in this file: */
typedef enum {
    GMON_TAG_TIME_HIST, GMON_TAG_CG_ARC, GMON_TAG_BB_COUNT
} GMON_Record_Tag;

struct gmon_hist_hdr {
    char low_pc[sizeof(bfd_vma)];	/* base pc address of sample buffer */
    char high_pc[sizeof(bfd_vma)];	/* max pc address of sampled buffer */
    char hist_size[4];			/* size of sample buffer */
    char prof_rate[4];			/* profiling clock rate */
    char dimen[15];			/* phys. dim., usually "seconds" */
    char dimen_abbrev;			/* usually 's' for "seconds" */
};

struct gmon_cg_arc_record {
    char from_pc[sizeof(bfd_vma)];	/* address within caller's body */
    char self_pc[sizeof(bfd_vma)];	/* address within callee's body */
    char count[4];			/* number of arc traversals */
};

#endif /* gmon_out_h */