Subject: Re: setjmp/sigsetjmp/longjmp/siglongjmp errors on many ports?
To: Christos Zoulas <christos@zoulas.com>
From: Michael Graff <explorer@flame.org>
List: tech-userlevel
Date: 11/27/1999 11:37:47
christos@zoulas.com (Christos Zoulas) writes:
> You must be confused... the __***14 are the ones used.
Are you certain?
From libc/arch/i386/gen/setjmp.S:
ENTRY(setjmp)
PIC_PROLOGUE
pushl $0
#ifdef PIC
call PIC_PLT(_C_LABEL(sigblock))
#else
call _C_LABEL(sigblock)
#endif
addl $4,%esp
PIC_EPILOGUE
..
ENTRY(longjmp)
movl 4(%esp),%edx
PIC_PROLOGUE
pushl 24(%edx)
#ifdef PIC
call PIC_PLT(_C_LABEL(sigsetmask))
#else
call _C_LABEL(sigsetmask)
#endif
addl $4,%esp
PIC_EPILOGUE
From libc/arch/alpha/gen/setjmp.S:
...
/*
* get signal information
*/
mov a0, s0 /* squirrel away ptr to sc */
/* see what's blocked */
mov zero, a0
CALL(sigblock) /* see what's blocked */
stq v0, (1 * 8)(s0) /* and remember it in sc_mask */
...