This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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])


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]