blob: 18dd2024815c23934e37a6c96d9c50cee78f9290 (
plain) (
tree)
|
|
From lars@junk.nocrew.org Tue Mar 7 04:44 EST 2000
Return-Path: <lars@junk.nocrew.org>
Received: from ei5sun.yz.yamagata-u.ac.jp (ei5sun.yz.yamagata-u.ac.jp [133.24.114.42])
by ei5hp710.yz.yamagata-u.ac.jp (8.9.3/8.9.3) with ESMTP id EAA25953
for <aito@ei5hp710.yz.yamagata-u.ac.jp>; Tue, 7 Mar 2000 04:44:51 -0500 (EST)
Received: from junk.nocrew.org (mail@[212.73.17.42]) by ei5sun.yz.yamagata-u.ac.jp (8.8.0/3.5Wbeta) with ESMTP id SAA07952 for <aito@ei5sun.yz.yamagata-u.ac.jp>; Tue, 7 Mar 2000 18:54:43 +0900 (JST)
Received: from lars by junk.nocrew.org with local (Exim 3.03 #1 (Debian))
for aito@ei5sun.yz.yamagata-u.ac.jp
id 12SGVE-0001rh-00; Tue, 07 Mar 2000 10:42:08 +0100
To: aito@ei5sun.yz.yamagata-u.ac.jp
Subject: ARMLinux patch
From: lars brinkhoff <lars@nocrew.org>
Date: 07 Mar 2000 10:42:08 +0100
Message-ID: <85zosbjevj.fsf@junk.nocrew.org>
Lines: 89
User-Agent: Gnus/5.0803 (Gnus v5.8.3) Emacs/20.5
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Sender: lars brinkhoff <lars@junk.nocrew.org>
This patch is an attempt to make w3m version 0.1.6 work in ARMLinux.
It seems to work well.
--- gc/gcconfig.h.org Wed Jan 12 05:23:37 2000
+++ gc/gcconfig.h Sun Mar 5 14:24:52 2000
@@ -151,6 +151,10 @@
# define SPARC
# define mach_type_known
# endif
+# if defined(LINUX) && (defined(__arm__) || defined(arm))
+# define ARM
+# define mach_type_known
+# endif
# if defined(__alpha) || defined(__alpha__)
# define ALPHA
# if !defined(LINUX)
@@ -985,6 +989,39 @@
# define DATASTART (ptr_t)GC_SysVGetDataStart(0x10000, &_etext)
# define DATAEND (&_end)
# define HEURISTIC2
+# endif
+
+# ifdef ARM
+# define MACH_TYPE "ARM"
+# ifdef LINUX
+# define OS_TYPE "LINUX"
+# define HEURISTIC1
+# define STACKBOTTOM ((ptr_t) 0xbffffffc)
+# ifdef __ELF__
+# define DYNAMIC_LOADING
+# include <features.h>
+# if defined(__GLIBC__) && __GLIBC__ >= 2
+ extern int __data_start;
+# define DATASTART ((ptr_t)(&__data_start))
+# else
+ extern char **__environ;
+# define DATASTART ((ptr_t)(&__environ))
+ /* hideous kludge: __environ is the first */
+ /* word in crt0.o, and delimits the start */
+ /* of the data segment, no matter which */
+ /* ld options were passed through. */
+ /* We could use _etext instead, but that */
+ /* would include .rodata, which may */
+ /* contain large read-only data tables */
+ /* that we'd rather not scan. */
+# endif
+ extern int _end;
+# define DATAEND (&_end)
+# else
+ ARMLinux non elf ?
+# endif
+# endif
+# define ALIGNMENT 4
# endif
# ifndef STACK_GROWS_UP
diff -ur gc/mach_dep.c w3m-0.1.6.lars/gc/mach_dep.c
--- gc/mach_dep.c.org Wed Jan 12 05:23:37 2000
+++ gc/mach_dep.c Thu Jan 27 21:28:39 2000
@@ -337,7 +337,7 @@
/* other machines... */
# if !(defined M68K) && !(defined VAX) && !(defined RT)
# if !(defined SPARC) && !(defined I386) && !(defined NS32K)
-# if !defined(POWERPC) && !defined(UTS4)
+# if !defined(POWERPC) && !defined(UTS4) && !defined(ARM)
--> bad news <--
# endif
# endif
diff -ur w3m/gc/os_dep.c w3m-0.1.6.lars/gc/os_dep.c
--- gc/os_dep.c.org Wed Jan 12 05:23:37 2000
+++ gc/os_dep.c Thu Jan 27 21:37:27 2000
@@ -72,7 +72,7 @@
# define NEED_FIND_LIMIT
# endif
-# if defined(LINUX) && (defined(POWERPC) || defined(SPARC) || defined(ALPHA))
+# if defined(LINUX) && (defined(POWERPC) || defined(SPARC) || defined(ALPHA) || defined (ARM))
# define NEED_FIND_LIMIT
# endif
@@ -139,7 +139,7 @@
# define OPT_PROT_EXEC 0
#endif
-#if defined(LINUX) && (defined(POWERPC) || defined(SPARC) || defined(ALPHA))
+#if defined(LINUX) && (defined(POWERPC) || defined(SPARC) || defined(ALPHA) || defined(ARM))
/* 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 */
|