diff options
| -rw-r--r-- | src/thread/i386/__unmapself.s | 9 | ||||
| -rw-r--r-- | src/thread/pthread_create.c | 2 | ||||
| -rw-r--r-- | src/thread/x86_64/__unmapself.s | 13 | 
3 files changed, 2 insertions, 22 deletions
| diff --git a/src/thread/i386/__unmapself.s b/src/thread/i386/__unmapself.s index 5c674966..bcf6e7fe 100644 --- a/src/thread/i386/__unmapself.s +++ b/src/thread/i386/__unmapself.s @@ -2,15 +2,6 @@  .global __unmapself  .type   __unmapself,%function  __unmapself: -	call 1f -	.long -1 -	.long -1 -1:	popl %ecx -	xorl %ebx,%ebx -	xorl %edx,%edx -	movl $8,%esi -	movl $175,%eax -	int $128  	movl $91,%eax  	movl 4(%esp),%ebx  	movl 8(%esp),%ecx diff --git a/src/thread/pthread_create.c b/src/thread/pthread_create.c index 7c436957..c73c5211 100644 --- a/src/thread/pthread_create.c +++ b/src/thread/pthread_create.c @@ -25,6 +25,8 @@ void __pthread_unwind_next(struct __ptcb *cb)  		}  	} +	syscall4(__NR_sigprocmask, SIG_BLOCK, (long)(uint64_t[1]){-1}, 0, 8); +  	if (!a_fetch_add(&libc.threads_minus_1, -1))  		exit(0); diff --git a/src/thread/x86_64/__unmapself.s b/src/thread/x86_64/__unmapself.s index 59092eaa..d36257d0 100644 --- a/src/thread/x86_64/__unmapself.s +++ b/src/thread/x86_64/__unmapself.s @@ -3,19 +3,6 @@  .global __unmapself  .type   __unmapself,%function  __unmapself: -	call 1f         /* glibc ABI compat */ -	.long -1 -	.long -1 -1:      push %rsi       /* save arg2 for munmap */ -	push %rdx       /* save arg3 for munmap */ -	mov %rdi,%rsi   /* rt_sigprocmask() args: move arg1 to rsi */ -	xor %rdi,%rdi -	xor %rdx,%rdx -	movq $8,%r10 -	movl $14,%eax   /* __NR_rt_sigprocmask */ -	syscall         /* call rt_sigprocmask(0,arg1,0,8) */ -	pop %rsi        /* munmap() args: reload from stack */ -	pop %rdi  	movl $11,%eax   /* __NR_munmap */  	syscall         /* munmap(arg2,arg3) */  	xor %rdi,%rdi   /* exit() args: always return success */ | 
