This is the mail archive of the java-patches@sourceware.cygnus.com mailing list for the Java project.


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

GC patches for PowerPC Linux



I've committed the following changes for PowerPC Linux.  The collector
previously wasn't finding the program's data section when built as a
shared library.  We now use data_start, which should be exported as a
weak symbol from crt1.o, which every program should be linking in.

Hans points out that this will fail for programs that define
data_start themselves.

1999-12-15  Anthony Green  <green@cygnus.com>

        * gcconfig.h (DATASTART): Define as (&data_start) for PowerPC
        Linux.
        (DYNAMIC_LOADING): Define for PowerPC Linux.
        * os_dep.c: Remove some special cases for PowerPC Linux.
        * misc.c (GC_init_inner): Don't call GC_init_linux_data_start
        for PowerPC Linux.

Index: misc.c
===================================================================
RCS file: /cvs/java/libgcj/boehm-gc/misc.c,v
retrieving revision 1.8
diff -u -r1.8 misc.c
--- misc.c	1999/11/04 18:53:24	1.8
+++ misc.c	1999/12/12 18:00:18
@@ -444,7 +444,7 @@
  	GC_init_win32();
 #   endif
 #   if defined(LINUX) && \
-	(defined(POWERPC) || defined(ALPHA) || defined(SPARC) || defined(IA64))
+	(defined(ALPHA) || defined(SPARC) || defined(IA64))
 	GC_init_linux_data_start();
 #   endif
 #   ifdef SOLARIS_THREADS
Index: os_dep.c
===================================================================
RCS file: /cvs/java/libgcj/boehm-gc/os_dep.c,v
retrieving revision 1.7
diff -u -r1.7 os_dep.c
--- os_dep.c	1999/11/04 17:25:07	1.7
+++ os_dep.c	1999/12/12 18:00:20
@@ -75,7 +75,7 @@
 # endif
 
 # if defined(LINUX) && \
-     (defined(POWERPC) || defined(SPARC) || defined(ALPHA) || defined(IA64))
+     (defined(SPARC) || defined(ALPHA) || defined(IA64))
 #   define NEED_FIND_LIMIT
 # endif
 
@@ -142,8 +142,7 @@
 # define OPT_PROT_EXEC 0
 #endif
 
-#if defined(LINUX) && (defined(POWERPC) || defined(SPARC) || defined(ALPHA) \
-    		       || defined(IA64))
+#if defined(LINUX) && (defined(SPARC) || defined(ALPHA) || defined(IA64))
   /* The I386 case can be handled without a search.  The Alpha case	*/
   /* used to be handled differently as well, but the rules changed	*/
   /* for recent Linux versions.  This seems to be the easiest way to	*/
Index: gcconfig.h
===================================================================
RCS file: /cvs/java/libgcj/boehm-gc/gcconfig.h,v
retrieving revision 1.5
diff -u -r1.5 gcconfig.h
--- gcconfig.h	1999/11/04 17:25:07	1.5
+++ gcconfig.h	1999/12/12 18:00:21
@@ -532,14 +532,10 @@
 #     undef STACK_GRAN
 #     define STACK_GRAN 0x10000000
 	/* Stack usually starts at 0x80000000 */
-#     define DATASTART GC_data_start
-	/* Others have reported better success with */
-        /*  	extern int __data_start;	    */
-	/*#     define DATASTART (&__data_start)    */
-	/* and disabling the GC_data_start	    */
-	/* initialization code.			    */
+#     define DATASTART (&data_start)
       extern int _end;
 #     define DATAEND (&_end)
+#     define DYNAMIC_LOADING
 #   endif
 #   ifdef MACOSX
 #     define ALIGNMENT 4

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