diff options
Diffstat (limited to 'elf/dl-error.c')
-rw-r--r-- | elf/dl-error.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/elf/dl-error.c b/elf/dl-error.c index 3a0d9bb8a7..b5374e949c 100644 --- a/elf/dl-error.c +++ b/elf/dl-error.c @@ -112,7 +112,8 @@ _dl_signal_error (int errcode, const char *objname, const char *occation, lcatch->errstring = _dl_out_of_memory; lcatch->malloced = false; } - longjmp (lcatch->env, errcode ?: -1); + /* We do not restore the signal mask because none was saved. */ + __longjmp (lcatch->env, errcode ?: -1); } else { @@ -169,7 +170,8 @@ _dl_catch_error (const char **objname, const char **errstring, struct catch **const catchp = &CATCH_HOOK; old = *catchp; - errcode = setjmp (c.env); + /* Do not save the signal mask. */ + errcode = __sigsetjmp (c.env, 0); if (__builtin_expect (errcode, 0) == 0) { *catchp = &c; |