On Thu, Nov 21, 2002 at 10:28:42AM -0500, Andy Dougherty wrote: > > +#ifdef HAS_HEADER_SETJMP > > + jmp_buf env; > > + > > + /* this should put registers in env, which then get marked in > > + * trace_system_stack below > > + */ > > + setjmp(env); > > +#endif > > Alas, no, though it seems to me you may be on the right track. What > appears to be happening is that sub.c is getting lex->names from list_new, > but (when compiled with optimization) list_new is returning a list that is > not on the stack. Indeed, if I try to use the debugger and "print list" > while in list_new, I simply get
After a bit of research on google I found that setjmp on SPARC only saves the stack pointer, the frame pointer and the program counter, which is why the setjmp technique does not work. longjmp() on the other hand does do a window flush in order to unroll stack frames. -- Jason