This is the mail archive of the
ecos-patches@sources.redhat.com
mailing list for the eCos project.
Re: Rework profiling (gprof) package
On Fri, 2002-11-15 at 10:22, Jonathan Larmour wrote:
> Gary Thomas wrote:
> > On Fri, 2002-11-15 at 00:43, Jonathan Larmour wrote:
> >
> >>Gary Thomas wrote:
> >>
> >>
> >>>Index: services/profile/gprof/current/include/gmon_out.h
> >>>===================================================================
> >>>RCS file: services/profile/gprof/current/include/gmon_out.h
> >>>diff -N services/profile/gprof/current/include/gmon_out.h
> >>>--- /dev/null 1 Jan 1970 00:00:00 -0000
> >>>+++ services/profile/gprof/current/include/gmon_out.h 14 Nov 2002 21:58:31 -0000
> >>>@@ -0,0 +1,82 @@
> >>>+// Slightly adapted for eCos environment
> >>>+
> >>>+/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
> >>>+ This file is part of the GNU C Library.
> >>>+ Contributed by David Mosberger <davidm@cs.arizona.edu>.
> >>>+
> >>>+ 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.
> >>
> >>We cannot have LGPL licensed software in eCos.
> >>
> >
> >
> > How to handle this? It's just the header, included to be compatible.
>
> I'm not sure. Is there some other non-glibc version around? For example I
> see
> http://examples.oreilly.com/palmprog/CDROM/Linux/libs_utils/binutils-2.7/gprof/gmon_out.h
> which implies glibc probably just imported that and slapped their own
> licence on, when there was not necessarily a reason to. (And we do the
> same of course so can hardly complain :-)).
Also, BTW, the version from OpenBSD is completely unadorned.
Maybe I should just use it (with attribution).
--
------------------------------------------------------------
Gary Thomas |
eCosCentric, Ltd. |
+1 (970) 229-1963 | eCos & RedBoot experts
gthomas@ecoscentric.com |
http://www.ecoscentric.com/ |
------------------------------------------------------------
/*
* 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 = 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 /* gmon_out_h */