[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

w3m-991203-sparc.patch



小林と申します。

w3mをNetBSD 1.4.1/SPARCで使いたいと思い、w3mのWeb Page
http://ei5nazha.yz.yamagata-u.ac.jp/%7Eaito/w3m/
で、

-----
砂川さんはNetBSDの各種プラットフォームへのw3m移植をしておられるようですので,
PowerPC以外のNetBSDシステムでw3mを使いたい方は,以下まで連絡してほしいとの
ことです.

    メイリングリスト
    英語    tech-pkg@netbsd.org
    日本語  tech-pkg-ja@jp.netbsd.org
-----

のように書いてありましたので subscribe させて頂きました。

w3mのsparc用pkgは少し古いバージョンでしたので、
パッチを拝見させて頂き、w3m-991203のgcに対して
同様の修正をして、パッチとしてまとめました。

但し、手を入れたのはsparcの部分のみです。
SSLも使えてます。

----
 小林 寿浩          Email(会社): koba@lsig.nel.co.jp
(こばやし としひろ) Email(自宅): toshinyo@mtf.biglobe.ne.jp
★ SPARCしようよ ★ http://www2s.biglobe.ne.jp/~toshinyo/
diff -ur w3m.org/gc/dyn_load.c w3m/gc/dyn_load.c
--- w3m.org/gc/dyn_load.c	Thu Nov 11 14:21:04 1999
+++ w3m/gc/dyn_load.c	Thu Dec 16 11:52:37 1999
@@ -48,7 +48,7 @@
 #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)
  --> 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 +260,21 @@
 # endif /* !USE_PROC ... */
 # endif /* SUNOS */
 
-#if defined(LINUX) && defined(__ELF__) || defined(SCO_ELF)
+#if defined(LINUX) && defined(__ELF__) || defined(SCO_ELF) || defined(NETBSD) && defined(__ELF__)
 
 /* 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
diff -ur w3m.org/gc/gcconfig.h w3m/gc/gcconfig.h
--- w3m.org/gc/gcconfig.h	Thu Nov 11 14:21:05 1999
+++ w3m/gc/gcconfig.h	Thu Dec 16 15:25:03 1999
@@ -53,6 +53,11 @@
 #    define NETBSD
 #    define mach_type_known
 # endif
+# if defined(__NetBSD__) && defined(__sparc__)
+#    define SPARC
+#    define NETBSD
+#    define mach_type_known
+# endif
 # if defined(vax)
 #    define VAX
 #    ifdef ultrix
@@ -94,7 +99,7 @@
 #   define RT
 #   define mach_type_known
 # endif
-# if defined(sun) && (defined(sparc) || defined(__sparc))
+# if defined(sun) && (defined(sparc) || defined(__sparc)) && !defined(__NetBSD__)
 #   define SPARC
     /* Test for SunOS 5.x */
 #     include <errno.h>
@@ -106,11 +111,16 @@
 #   define mach_type_known
 # endif
 # if defined(sparc) && defined(unix) && !defined(sun) && !defined(linux) \
-     && !defined(__OpenBSD__)
+     && !defined(__OpenBSD__) && !defined(__NetBSD__)
 #   define SPARC
 #   define DRSNX
 #   define mach_type_known
 # endif
+# if defined(__NetBSD__) && defined(__sparc__)
+#    define SPARC
+#    define NETBSD
+#    define mach_type_known
+# endif
 # if defined(_IBMR2)
 #   define RS6000
 #   define mach_type_known
@@ -631,6 +641,11 @@
 #     define STACKBOTTOM ((ptr_t) 0xf8000000)
 #     define DATASTART ((ptr_t)(&etext))
 #   endif
+#   ifdef NETBSD
+#     define OS_TYPE "NETBSD"
+#     define HEURISTIC2
+#     define DATASTART ((ptr_t)(&etext))
+#   endif
 # endif
 
 # ifdef I386
@@ -1088,7 +1103,7 @@
 	/* Use setjmp based hack to mark from callee-save registers. */
 #	define USE_GENERIC_PUSH_REGS
 # endif
-# if defined(SPARC) && !defined(LINUX)
+# if defined(SPARC) && !defined(LINUX) && !defined(NETBSD)
 #   define SAVE_CALL_CHAIN
 #   define ASM_CLEAR_CODE	/* Stack clearing is crucial, and we 	*/
 				/* include assembly code to do it well.	*/
diff -ur w3m.org/gc/misc.c w3m/gc/misc.c
--- w3m.org/gc/misc.c	Thu Nov 11 14:21:04 1999
+++ w3m/gc/misc.c	Thu Dec 16 15:08:06 1999
@@ -430,6 +430,9 @@
 #   if defined(LINUX) && (defined(POWERPC) || defined(ALPHA) || defined(SPARC))
 	GC_init_linux_data_start();
 #   endif
+#   if defined(NETBSD) && defined(__ELF__)
+        GC_init_netbsd_elf();
+#   endif
 #   ifdef SOLARIS_THREADS
 	GC_thr_init();
 	/* We need dirty bits in order to find live stack sections.	*/
diff -ur w3m.org/gc/os_dep.c w3m/gc/os_dep.c
--- w3m.org/gc/os_dep.c	Thu Nov 11 14:21:04 1999
+++ w3m/gc/os_dep.c	Thu Dec 16 15:12:27 1999
@@ -2400,7 +2400,7 @@
  * Call stack save code for debugging.
  * Should probably be in mach_dep.c, but that requires reorganization.
  */
-#if defined(SPARC) && !defined(LINUX)
+#if defined(SPARC) && !defined(LINUX) && !defined(NETBSD)
 #   if defined(SUNOS4)
 #     include <machine/frame.h>
 #   else