diff options
Diffstat (limited to 'gmon/sys')
-rw-r--r-- | gmon/sys/gmon.h | 25 | ||||
-rw-r--r-- | gmon/sys/gmon_out.h | 132 |
2 files changed, 148 insertions, 9 deletions
diff --git a/gmon/sys/gmon.h b/gmon/sys/gmon.h index f7af72b98a..8cbd6bdeda 100644 --- a/gmon/sys/gmon.h +++ b/gmon/sys/gmon.h @@ -39,17 +39,23 @@ #include <sys/cdefs.h> /* - * Structure prepended to gmon.out profiling data file. + * See gmon_out.h for gmon.out format. */ -struct gmonhdr { - u_long lpc; /* base pc address of sample buffer */ - u_long hpc; /* max pc address of sampled buffer */ - int ncnt; /* size of sample buffer (plus this header) */ - int version; /* version number */ - int profrate; /* profiling clock rate */ - int spare[3]; /* reserved */ + +/* structure emitted by "gcc -a". This must match struct bb in + gcc/libgcc2.c. It is OK for gcc to declare a longer structure as + long as the members below are present. */ +struct __bb +{ + long zero_word; + const char *filename; + long *counts; + long ncounts; + struct __bb *next; + const unsigned long *addresses; }; -#define GMONVERSION 0x00051879 + +extern struct __bb *__bb_head; /* * histogram counters are unsigned shorts (according to the kernel). @@ -137,6 +143,7 @@ struct gmonparam { u_long highpc; u_long textsize; u_long hashfraction; + long log_hashfraction; }; extern struct gmonparam _gmonparam; diff --git a/gmon/sys/gmon_out.h b/gmon/sys/gmon_out.h new file mode 100644 index 0000000000..6eab094444 --- /dev/null +++ b/gmon/sys/gmon_out.h @@ -0,0 +1,132 @@ +/* Copyright (C) 1996 Free Software Foundation, Inc. + Contributed by David Mosberger (davidm@cs.arizona.edu). + +This file is part of the GNU C Library. + +The GNU C Library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +The GNU C Library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +/* 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 _SYS_GMON_OUT_H_ +#define _SYS_GMON_OUT_H_ + +#define GMON_MAGIC "gmon" /* magic cookie */ +#define GMON_VERSION 1 /* version number */ + +/* + * Raw header as it appears on file (without padding). This header + * always comes first in gmon.out and is then followed by a series + * records defined below. + */ +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 = 0, GMON_TAG_CG_ARC = 1, GMON_TAG_BB_COUNT = 2 +} GMON_Record_Tag; + +struct gmon_hist_hdr { + char low_pc[sizeof (char *)]; /* base pc address of sample buffer */ + char high_pc[sizeof (char *)]; /* 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 (char *)]; /* address within caller's body */ + char self_pc[sizeof (char *)]; /* address within callee's body */ + char count[4]; /* number of arc traversals */ +}; + +#endif /* !_SYS_GMON_OUT_H_ */ +/* Copyright (C) 1996 Free Software Foundation, Inc. + Contributed by David Mosberger (davidm@cs.arizona.edu). + +This file is part of the GNU C Library. + +The GNU C Library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +The GNU C Library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +/* 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 _SYS_GMON_OUT_H_ +#define _SYS_GMON_OUT_H_ + +#define GMON_MAGIC "gmon" /* magic cookie */ +#define GMON_VERSION 1 /* version number */ + +/* + * Raw header as it appears on file (without padding). This header + * always comes first in gmon.out and is then followed by a series + * records defined below. + */ +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 = 0, GMON_TAG_CG_ARC = 1, GMON_TAG_BB_COUNT = 2 +} GMON_Record_Tag; + +struct gmon_hist_hdr { + char low_pc[sizeof (char *)]; /* base pc address of sample buffer */ + char high_pc[sizeof (char *)]; /* 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 (char *)]; /* address within caller's body */ + char self_pc[sizeof (char *)]; /* address within callee's body */ + char count[4]; /* number of arc traversals */ +}; + +#endif /* !_SYS_GMON_OUT_H_ */ |