aboutsummaryrefslogtreecommitdiffstats
path: root/Patches/macppc
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Patches/macppc147
1 files changed, 147 insertions, 0 deletions
diff --git a/Patches/macppc b/Patches/macppc
new file mode 100644
index 0000000..c52adc4
--- /dev/null
+++ b/Patches/macppc
@@ -0,0 +1,147 @@
+Here is a patch to port GC library to NetBSD/macppc. If you are
+using NetBSD on PowerMac, apply this patch first.
+
+This patch is provided by K. Sunagawa (kei_sun@ba2.so-net.ne.jp).
+
+Index: gc/dyn_load.c
+===================================================================
+RCS file: /cvsroot/w3m/gc/dyn_load.c,v
+retrieving revision 1.1.1.2
+retrieving revision 1.2
+diff -u -u -r1.1.1.2 -r1.2
+--- gc/dyn_load.c 1999/06/02 19:29:13 1.1.1.2
++++ gc/dyn_load.c 1999/06/03 12:44:49 1.2
+@@ -48,7 +48,8 @@
+ #if !defined(SUNOS4) && !defined(SUNOS5DL) && !defined(IRIX5) && \
+ !defined(MSWIN32) && !(defined(ALPHA) && defined(OSF1)) && \
+ !defined(HP_PA) && !(defined(LINUX) && defined(__ELF__)) && \
+- !defined(RS6000) && !defined(SCO_ELF)
++ !defined(RS6000) && !defined(SCO_ELF) && \
++ !(defined(NETBSD) && defined(POWERPC))
+ --> We only know how to find data segments of dynamic libraries for the
+ --> above. Additional SVR4 variants might not be too
+ --> hard to add.
+@@ -260,14 +261,22 @@
+ # endif /* !USE_PROC ... */
+ # endif /* SUNOS */
+
+-#if defined(LINUX) && defined(__ELF__) || defined(SCO_ELF)
++#if defined(LINUX) && defined(__ELF__) || defined(SCO_ELF) || \
++ (defined(NETBSD) && defined(POWERPC))
+
+ /* Dynamic loading code for Linux running ELF. Somewhat tested on
+ * Linux/x86, untested but hopefully should work on Linux/Alpha.
+ * This code was derived from the Solaris/ELF support. Thanks to
+ * whatever kind soul wrote that. - Patrick Bridges */
+
++#if defined(NETBSD)
++#include <sys/exec_elf.h>
++#define DT_DEBUG 21
++#define PT_LOAD 1
++#define PF_W 0x2
++#else
+ #include <elf.h>
++#endif
+ #include <link.h>
+
+ /* Newer versions of Linux/Alpha and Linux/x86 define this macro. We
+Index: gc/gcconfig.h
+===================================================================
+RCS file: /cvsroot/w3m/gc/gcconfig.h,v
+retrieving revision 1.1.1.2
+retrieving revision 1.2
+diff -u -u -r1.1.1.2 -r1.2
+--- gc/gcconfig.h 1999/06/02 19:29:18 1.1.1.2
++++ gc/gcconfig.h 1999/06/03 12:44:49 1.2
+@@ -48,6 +48,11 @@
+ # define NETBSD
+ # define mach_type_known
+ # endif
++# if defined(__NetBSD__) && defined(__powerpc__)
++# define POWERPC
++# define NETBSD
++# define mach_type_known
++# endif
+ # if defined(vax)
+ # define VAX
+ # ifdef ultrix
+@@ -486,8 +491,8 @@
+
+ # ifdef POWERPC
+ # define MACH_TYPE "POWERPC"
+-# define ALIGNMENT 2
+ # ifdef MACOS
++# define ALIGNMENT 2
+ # ifndef __LOWMEM__
+ # include <LowMem.h>
+ # endif
+@@ -497,6 +502,7 @@
+ # define DATAEND /* not needed */
+ # endif
+ # ifdef LINUX
++# define ALIGNMENT 2
+ # define OS_TYPE "LINUX"
+ # define HEURISTIC1
+ # undef STACK_GRAN
+@@ -504,6 +510,14 @@
+ # define DATASTART GC_data_start
+ extern int _end;
+ # define DATAEND (&_end)
++# endif
++# ifdef NETBSD
++# define ALIGNMENT 4
++# define OS_TYPE "NETBSD"
++# define HEURISTIC2
++ extern char etext;
++# define DATASTART GC_data_start
++# define DYNAMIC_LOADING
+ # endif
+ # endif
+
+Index: gc/misc.c
+===================================================================
+RCS file: /cvsroot/w3m/gc/misc.c,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -u -r1.1.1.1 -r1.2
+--- gc/misc.c 1999/06/02 19:23:56 1.1.1.1
++++ gc/misc.c 1999/06/03 12:44:50 1.2
+@@ -433,6 +433,9 @@
+ # if defined(LINUX) && defined(SPARC)
+ GC_init_linuxsparc();
+ # endif
++# if defined(NETBSD) && defined(POWERPC)
++ GC_init_netbsd_powerpc();
++# endif
+ # ifdef SOLARIS_THREADS
+ GC_thr_init();
+ /* We need dirty bits in order to find live stack sections. */
+Index: gc/os_dep.c
+===================================================================
+RCS file: /cvsroot/w3m/gc/os_dep.c,v
+retrieving revision 1.1.1.2
+retrieving revision 1.2
+diff -u -u -r1.1.1.2 -r1.2
+--- gc/os_dep.c 1999/06/02 19:29:10 1.1.1.2
++++ gc/os_dep.c 1999/06/03 12:44:50 1.2
+@@ -84,6 +84,19 @@
+ # include <machine/trap.h>
+ #endif
+
++#if defined(NETBSD) && defined(POWERPC)
++ ptr_t GC_data_start;
++
++ void GC_init_netbsd_powerpc()
++ {
++ extern ptr_t GC_find_limit();
++ extern char **environ;
++ /* This may need to be environ, without the underscore, for */
++ /* some versions. */
++ GC_data_start = GC_find_limit((ptr_t)&environ, FALSE);
++ }
++#endif
++
+ #ifdef AMIGA
+ # include <proto/exec.h>
+ # include <proto/dos.h>
+