This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
[PATCH] ppc64 gmon-start changes
- From: Steve Munroe <sjmunroe at vnet dot ibm dot com>
- To: libc-alpha at sources dot redhat dot com
- Cc: geoffk at geoffk dot org, roland at frob dot com
- Date: Wed, 11 Sep 2002 14:06:53 -0500
- Subject: [PATCH] ppc64 gmon-start changes
For PowerPC64 we use the address of ._start as the lowest address for which
we need to keep profiling records. We can't copy the ia64 scheme as our
entry poiny address is really the address of the function descriptor, not
the actual function entry.
2002-09-10 Alan Modra <amodra@bigpond.net.au>
* csu/gmon-start.c [!TEXT_START]: Define TEXT_START if not already
defined in entry.h.
(__gmon_start__) [!ENTRY_POINT_DECL]: Use TEXT_START macro to obtain
lowest address for profiling in __monstartup call.
* sysdeps/powerpc/powerpc64/elf/entry.h: New file.
diff -ru2PN -xCVS -x*orig -xmanual libc23-cvstip-20020906/csu/gmon-start.c libc23/csu/gmon-start.c
--- libc23-cvstip-20020906/csu/gmon-start.c Wed Feb 13 03:16:58 2002
+++ libc23/csu/gmon-start.c Fri Sep 6 15:19:48 2002
@@ -36,4 +36,12 @@
extern void etext;
+#ifndef TEXT_START
+#ifdef ENTRY_POINT_DECL
+#define TEXT_START ENTRY_POINT
+#else
+#define TEXT_START &ENTRY_POINT
+#endif
+#endif
+
#ifndef HAVE_INITFINI
/* This function gets called at startup by the normal constructor
@@ -67,5 +75,5 @@
__monstartup ((u_long) ENTRY_POINT, (u_long) &etext);
#else
- __monstartup ((u_long) &ENTRY_POINT, (u_long) &etext);
+ __monstartup ((u_long) TEXT_START, (u_long) &etext);
#endif
diff -ru2PN -xCVS -x*orig -xmanual libc23-cvstip-20020906/sysdeps/powerpc/powerpc64/elf/entry.h libc23/sysdeps/powerpc/powerpc64/elf/entry.h
--- libc23-cvstip-20020906/sysdeps/powerpc/powerpc64/elf/entry.h Wed Dec 31 18:00:00 1969
+++ libc23/sysdeps/powerpc/powerpc64/elf/entry.h Fri Sep 6 15:19:48 2002
@@ -0,0 +1,34 @@
+/* Configuration of lookup functions. PowerPC64 version.
+ Copyright (C) 2002 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+#ifndef __ASSEMBLY__
+extern void _start (void);
+#endif
+
+#define ENTRY_POINT _start
+
+/* We have to provide a special declaration. */
+#define ENTRY_POINT_DECL(class) class void _start (void);
+
+/* Use the address of ._start as the lowest address for which we need
+ to keep profiling records. We can't copy the ia64 scheme as our
+ entry poiny address is really the address of the function
+ descriptor, not the actual function entry. */
+#define TEXT_START (((long int *) ENTRY_POINT)[0])