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

Reply via email to