ia64: Remove sigprocmask/sigblock objects from libpthread

It is required because __libc_unwind_longjmp (used on thread
cancellation) calls __sigprocmask.  Replace with a direct call.

They are required because __libc_unwind_longjmp (used for thread
cancellation) calls __sigprocmask.  Replace this with a direct call.

The sigblock function is not exported and is not used internally, so
it can be removed.

Checked on cross build for ia64-linux-gnu.
This commit is contained in:
Adhemerval Zanella 2020-03-13 19:10:08 +00:00
parent c6663fee43
commit 34d49f120d
2 changed files with 3 additions and 4 deletions

View File

@ -20,6 +20,6 @@ gen-as-const-headers += tcb-offsets.sym
endif
ifeq ($(subdir),nptl)
libpthread-routines += sysdep sigblock sigprocmask
libpthread-shared-only-routines += sysdep sigblock sigprocmask
libpthread-routines += sysdep
libpthread-shared-only-routines += sysdep
endif

View File

@ -34,8 +34,7 @@ __libc_unwind_longjmp (sigjmp_buf env, int val)
if (env[0].__mask_was_saved)
/* Restore the saved signal mask. */
(void) __sigprocmask (SIG_SETMASK, &env[0].__saved_mask,
(sigset_t *) NULL);
__libc_signal_restore_set (&env[0].__saved_mask);
/* Call the machine-dependent function to restore machine state. */
__sigstack_longjmp (env[0].__jmpbuf, val ?: 1);