提交 dc3776d4 编写于 作者: R Rich Felker

fix previous commit that broke sigreturn. looks like the asm is needed.

上级 6027201e
.global __restore
.type __restore,%function
__restore:
popl %eax
movl $119, %eax
int $0x80
.size __restore,.-__restore
.global __restore_rt
.type __restore_rt,%function
__restore_rt:
movl $173, %eax
int $0x80
.size __restore_rt,.-__restore_rt
......@@ -4,10 +4,7 @@
#include "syscall.h"
#include "pthread_impl.h"
static void restorer()
{
syscall0(__NR_rt_sigreturn);
}
void __restore(), __restore_rt();
int __libc_sigaction(int sig, const struct sigaction *sa, struct sigaction *old)
{
......@@ -21,7 +18,7 @@ int __libc_sigaction(int sig, const struct sigaction *sa, struct sigaction *old)
if (sa) {
ksa.handler = sa->sa_handler;
ksa.flags = sa->sa_flags | SA_RESTORER;
ksa.restorer = restorer;
ksa.restorer = (sa->sa_flags & SA_SIGINFO) ? __restore_rt : __restore;
ksa.mask = sa->sa_mask;
pksa = (long)&ksa;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册