Initial revision
This commit is contained in:
147
Patches/macppc
Normal file
147
Patches/macppc
Normal file
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user