Mon Feb 19 15:30:26 1996 Roland McGrath <roland@charlie-brown.gnu.ai.mit.edu>
authorroland <roland>
Mon, 19 Feb 1996 20:55:20 +0000 (20:55 +0000)
committerroland <roland>
Mon, 19 Feb 1996 20:55:20 +0000 (20:55 +0000)
* sysdeps/generic/machine-gmon.h: New file.
* gmon/Makefile (distribute): Add machine-gmon.h.
* gmon/mcount.c: Undo changes of Feb 13.
Include "machine-gmon.h".

gmon/Makefile
gmon/mcount.c
sysdeps/generic/machine-gmon.h [new file with mode: 0644]

index 8fd25c6..2a5bb5f 100644 (file)
@@ -22,7 +22,7 @@
 subdir := gmon
 
 headers        := sys/gmon.h
-
+distribute := machine-gmon.h
 routines := gmon mcount profil
 
 include ../Rules
index ac3584d..ea60afc 100644 (file)
@@ -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
diff --git a/sysdeps/generic/machine-gmon.h b/sysdeps/generic/machine-gmon.h
new file mode 100644 (file)
index 0000000..24101f3
--- /dev/null
@@ -0,0 +1,44 @@
+/* Machine-dependent definitions for profiling support.  Generic GCC 2 version.
+Copyright (C) 1996 Free Software Foundation, Inc.
+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.  */
+
+/* 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
+
+#define _MCOUNT_DECL(frompc, selfpc) \
+static inline void mcount_internal (frompc, selfpc)
+
+#define MCOUNT \
+void _mcount (void)                                                          \
+{                                                                            \
+  mcount_internal ((u_long) __builtin_return_address (0),                    \
+                  (u_long) __builtin_return_address (1));                    \
+}