This is the mail archive of the
java-patches@sourceware.cygnus.com
mailing list for the Java project.
GC patches for PowerPC Linux
- To: java-patches at sourceware dot cygnus dot com
- Subject: GC patches for PowerPC Linux
- From: Anthony Green <green at cygnus dot com>
- Date: Sun, 12 Dec 1999 10:14:22 -0800
- CC: hboehm at exch dot hpl dot hp dot com
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