summaryrefslogtreecommitdiff
path: root/elf/dl-error.c
diff options
context:
space:
mode:
Diffstat (limited to 'elf/dl-error.c')
-rw-r--r--elf/dl-error.c6
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;