Subject: does setjmp() save all general purpose CPU registers on all NetBSD architectures?
To: NetBSD Kernel Technical Discussion List <tech-kern@NetBSD.ORG>
From: Greg A. Woods <woods@weird.com>
List: tech-kern
Date: 08/25/2000 17:51:10
Because I'd been experiencing repeated strange crashes causing broken
stack frames with Emacs-20.x on NetBSD I've been helping pretest the
upcoming GNU Emacs release (21.0) on NetBSD.  I've been asked to find
out if setjmp() saves all registers (which could possibly contain
Lisp_Object pointers, presumably any general purpose register that could
be used by the compiler for a pointer) in its jmp_buf on all NetBSD
architectures.  The Emacs maintainers have confirmed that FreeBSD, on
i386 at least, does indeed do what's necessary and I've more or less
confirmed by successful use that NetBSD/i386 also does this.

What about older releases of NetBSD?  Would any of them have potential
problems?

If setjmp() is OK then NetBSD will be able to take advantage of the new
lisp garbage collector in Emacs-21.  This new GC is not only faster (at
least I percieve it to be), but far less error-prone than the old GCPRO
mechanism (and indeed it seems to have positively affected bugs I was
encountering).

On a side note RMS also asked me if I could possibly upgrade my GDB to
the latest version (5.something).  At this point I'm a bit too busy to
try and test two major programs even though the failings in the GDB
v4.17 that's on my current test box are limiting my ability to debug
Emacs (gdb keeps crashing on me while I try to analyse Emacs crashes).
Has anyone tried the latest GDB on a recent (1.4V) NetBSD/i386?  (fyi
I'm current to egcs-1.1.2)

-- 
							Greg A. Woods

+1 416 218-0098      VE3TCP      <gwoods@acm.org>      <robohack!woods>
Planix, Inc. <woods@planix.com>; Secrets of the Weird <woods@weird.com>