diff options
Diffstat (limited to 'gmon/mcount.c')
-rw-r--r-- | gmon/mcount.c | 30 |
1 files changed, 4 insertions, 26 deletions
diff --git a/gmon/mcount.c b/gmon/mcount.c index ac3584d..ea60afc 100644 --- a/gmon/mcount.c +++ b/gmon/mcount.c @@ -38,6 +38,10 @@ static char sccsid[] = "@(#)mcount.c 8.1 (Berkeley) 6/4/93"; #include <sys/param.h> #include <sys/gmon.h> +/* This file provides the machine-dependent definitions of the _MCOUNT_DECL + and MCOUNT macros. */ +#include "machine-gmon.h" + /* * mcount is called on entry to each function compiled with the profiling * switch set. _mcount(), which is declared in a machine-dependent way @@ -53,33 +57,9 @@ static char sccsid[] = "@(#)mcount.c 8.1 (Berkeley) 6/4/93"; * both frompcindex and frompc. Any reasonable, modern compiler will * perform this optimization. */ -#if 0 _MCOUNT_DECL(frompc, selfpc) /* _mcount; may be static, inline, etc */ register u_long frompc, selfpc; -#endif - -/* GCC version 2 gives us a perfect magical function to get - just the information we need: - void *__builtin_return_address (unsigned int N) - returns the return address of the frame N frames up. */ - -#if __GNUC__ < 2 - #error "This file uses __builtin_return_address, a GCC 2 extension." -#endif - -#include <sysdep.h> -#ifndef NO_UNDERSCORES -/* The asm symbols for C functions are `_function'. - The canonical name for the counter function is `mcount', no _. */ -void _mcount (void) asm ("mcount"); -#endif - -void -_mcount (void) { - register u_long selfpc = (u_long) __builtin_return_address (0); - register u_long frompc = (u_long) __builtin_return_address (1); - register u_short *frompcindex; register struct tostruct *top, *prevtop; register struct gmonparam *p; @@ -195,10 +175,8 @@ overflow: return; } -#if 0 /* Obsolete with __builtin_return_address. */ /* * Actual definition of mcount function. Defined in <machine/profile.h>, * which is included by <sys/gmon.h>. */ MCOUNT -#endif |