Has anyone taken a look at w3m on ARM linux? w3m uses a garbage collection library (http://reality.sgi.com/boehm/gc.html) that seems to have a sick makingly hacky desire to know: the address of the beginning and end of the data segment. the address of cool end of the stack, which is usually the highest address in the stack. what registers might contain pointers how shared libraries work (so as to find where they might be squirreling pointers and possibly a couple of other cringeworthily non-portable things. Anyway, I found that with the attached patch to the gc library the gc library appears to be happy to compile and pass its testsuite, and w3m compiles and runs (for the time I tried it) without segving. However, I've no idea if it'sleaking slowly, or about to suffer horrible death by freeing things it should not. Does anyone here have any idea or experience. Have I duplicated someone else's patching? Nick PS gc library has (IMHO) bad habit of just leaving plain text comments in as error traps, rather than using a #error Aaaaaaargh *** w3m/gc/gcconfig.h.orig Thu Nov 11 05:21:05 1999 --- w3m/gc/gcconfig.h Thu Feb 24 17:57:33 2000 *************** *** 270,275 **** --- 270,280 ---- # endif # define mach_type_known # endif + # if defined(__arm__) && defined(__linux__) + # define ARM + # define LINUX + # define mach_type_known + # endif /* Feel free to add more clauses here */ *************** *** 281,287 **** /* SYSV on an M68K actually means A/UX. */ /* The distinction in these cases is usually the stack starting address */ # ifndef mach_type_known ! --> unknown machine type # endif /* Mapping is: M68K ==> Motorola 680X0 */ /* (SUNOS4,HP,NEXT, and SYSV (A/UX), */ --- 286,292 ---- /* SYSV on an M68K actually means A/UX. */ /* The distinction in these cases is usually the stack starting address */ # ifndef mach_type_known ! #error --> unknown machine type # endif /* Mapping is: M68K ==> Motorola 680X0 */ /* (SUNOS4,HP,NEXT, and SYSV (A/UX), */ *************** *** 983,988 **** --- 988,1002 ---- # define DATASTART (ptr_t)GC_SysVGetDataStart(0x10000, &_etext) # define DATAEND (&_end) # define HEURISTIC2 + # endif + + # ifdef ARM + # define MACH_TYPE "ARM" + # define ALIGNMENT 4 + extern int __data_start; + # define DATASTART ((ptr_t)(&__data_start)) + #define USE_GENERIC_PUSH_REGS + # define HEURISTIC1 # endif # ifndef STACK_GROWS_UP unsubscribe: body of `unsubscribe linux-arm' to [EMAIL PROTECTED] ++ Please use [EMAIL PROTECTED] for ++ ++ kernel-related discussions. ++
