* __bb_exit_func.c: New file, from David Mosberger-Tang.
[external/binutils.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   {
22     char cookie[4];
23     char version[4];
24     char spare[3 * 4];
25   };
26
27 /* types of records in this file: */
28 typedef enum
29   {
30     GMON_TAG_TIME_HIST = 0, GMON_TAG_CG_ARC = 1, GMON_TAG_BB_COUNT = 2
31   }
32 GMON_Record_Tag;
33
34 struct gmon_hist_hdr
35   {
36     char low_pc[sizeof (char*)];        /* base pc address of sample buffer */
37     char high_pc[sizeof (char*)];       /* max pc address of sampled buffer */
38     char hist_size[4];                  /* size of sample buffer */
39     char prof_rate[4];                  /* profiling clock rate */
40     char dimen[15];                     /* phys. dim., usually "seconds" */
41     char dimen_abbrev;                  /* usually 's' for "seconds" */
42   };
43
44 struct gmon_cg_arc_record
45   {
46     char from_pc[sizeof (char*)];       /* address within caller's body */
47     char self_pc[sizeof (char*)];       /* address within callee's body */
48     char count[4];                      /* number of arc traversals */
49   };
50
51 #endif /* gmon_out_h */