change jmp_buf to share an underlying type and struct tag with sigjmp_buf
this is necessary to meet the C++ ABI target. alternatives were considered to avoid the size increase for non-sig jmp_buf objects, but they seemed to have worse properties. moreover, the relative size increase is only extreme on x86[_64]; one way of interpreting this is that, if the size increase from this patch makes jmp_buf use too much memory, then the program was already using too much memory when built for non-x86 archs.
This commit is contained in:
parent
4a30ba5ca4
commit
9693501c15
9 changed files with 14 additions and 15 deletions
|
|
@ -7,5 +7,5 @@
|
|||
_Noreturn void siglongjmp(sigjmp_buf buf, int ret)
|
||||
{
|
||||
if (buf->__fl) __restore_sigs(buf->__ss);
|
||||
longjmp(buf->__jb, ret);
|
||||
longjmp(buf, ret);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,5 +11,5 @@ int sigsetjmp(sigjmp_buf buf, int save)
|
|||
{
|
||||
if ((buf->__fl = save))
|
||||
pthread_sigmask(SIG_SETMASK, 0, (sigset_t *)buf->__ss);
|
||||
return setjmp(buf->__jb);
|
||||
return setjmp(buf);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue