mirror of
https://sourceware.org/git/glibc.git
synced 2026-10-24 01:33:52 +03:00
Make soft-float powerpc swapcontext restore the signal mask (bug 21045).
The soft-float powerpc version of swapcontext does not restore the signal mask, resulting in stdlib/tst-setcontext2 failing: after getcontext after setcontext after swapcontext FAIL: SIGUSR2 is blocked after swapcontext. This patch fixes this by adjusting the arguments passed to __sigprocmask so that it restores the saved signal mask as well as saving the existing one. (For hard-float, this code is only used for a compat symbol, not for the current version of swapcontext.) Tested for soft-float powerpc. [BZ #21045] * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S (__CONTEXT_FUNC_NAME): Pass address of signal mask to be restored to __sigprocmask.
This commit is contained in:
@@ -271,7 +271,8 @@ ENTRY(__CONTEXT_FUNC_NAME)
|
||||
|
||||
/* Restore ucontext (parm1) from stack. */
|
||||
lwz r12,_FRAME_PARM_SAVE1(r1)
|
||||
li r4,0
|
||||
lwz r4,_FRAME_PARM_SAVE2(r1)
|
||||
addi r4,r4,_UC_SIGMASK
|
||||
stw r3,_UC_REGS_PTR(r12)
|
||||
addi r5,r12,_UC_SIGMASK
|
||||
li r3,SIG_SETMASK
|
||||
|
||||
Reference in New Issue
Block a user