mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
Thu Oct 26 23:11:11 1995 Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>
* sysdeps/unix/sysv/linux/poll.c: Don't define as stub. Use simulation of system call using select. * sysdeps/unix/sysv/linux/signal.c: Use POSIX implementation. * sysdeps/unix/sysv/linux/statbuf.h: Define _STAT_VER. * sysdeps/unix/sysv/linux/i386/sigaction.c: Correct parameter name usage (new->act, old->oact). Correct asm statement because of gcc strangeness. * sysdeps/i386/i586/strchr.S: Correct typos: cmp -> cmpb. * sunrpc/clnt_perr.c: Remove declaration of sys_errlist. They conflict with the ones in stdio.h. * string/tester.c: %Z is no complete format. Change to %Zd. * sysdeps/mach/hurd/symlink.c (__symlink): Ditto.
This commit is contained in:
@ -31,20 +31,20 @@ __sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
|
||||
struct sigaction newact;
|
||||
int result;
|
||||
|
||||
if (new)
|
||||
if (act)
|
||||
{
|
||||
newact = *new;
|
||||
new = &newact;
|
||||
new->sa_restorer = ((new->sa_flags & SA_NOMASK)
|
||||
? &&restore_nomask : &&restore);
|
||||
newact = *act;
|
||||
newact.sa_restorer = ((act->sa_flags & SA_NOMASK)
|
||||
? &&restore_nomask : &&restore);
|
||||
act = &newact;
|
||||
}
|
||||
|
||||
asm volatile ("pushl %%ebx\n"
|
||||
"movl %1, %%ebx\n"
|
||||
"movl %2, %%ebx\n"
|
||||
"int $0x80\n"
|
||||
"popl %%ebx"
|
||||
: "=a" (result)
|
||||
: "0" (SYS_ify (sigaction)), "g" (sig), "c" (new), "d" (old));
|
||||
: "0" (SYS_ify (sigaction)), "g" (sig), "c" (act), "d" (oact));
|
||||
|
||||
if (result < 0)
|
||||
{
|
||||
@ -56,31 +56,34 @@ __sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
|
||||
restore:
|
||||
asm (
|
||||
#ifdef PIC
|
||||
" pushl %ebx\n"
|
||||
" pushl %%ebx\n"
|
||||
" call 0f\n"
|
||||
"0: popl %ebx\n"
|
||||
" addl $_GLOBAL_OFFSET_TABLE_+[.-0b],%ebx\n"
|
||||
"0: popl %%ebx\n"
|
||||
" addl $_GLOBAL_OFFSET_TABLE_+[.-0b], %%ebx\n"
|
||||
" addl $8, %%esp\n"
|
||||
" call __sigsetmask@PLT\n"
|
||||
" addl $8, %%esp\n"
|
||||
" popl %ebx\n"
|
||||
" popl %%ebx\n"
|
||||
#else
|
||||
" addl $4, %%esp\n"
|
||||
" call __sigsetmask\n"
|
||||
" addl $4, %%esp\n"
|
||||
#endif
|
||||
"popl %eax\n"
|
||||
"popl %ecx\n"
|
||||
"popl %edx\n"
|
||||
"popf\n"
|
||||
"ret");
|
||||
" popl %%eax\n"
|
||||
" popl %%ecx\n"
|
||||
" popl %%edx\n"
|
||||
" popf\n"
|
||||
" ret"
|
||||
: : );
|
||||
restore_nomask:
|
||||
asm ("addl $4, %esp\n"
|
||||
"popl %eax\n"
|
||||
"popl %ecx\n"
|
||||
"popl %edx\n"
|
||||
"popf\n"
|
||||
"ret");
|
||||
asm (" addl $4, %%esp\n"
|
||||
" popl %%eax\n"
|
||||
" popl %%ecx\n"
|
||||
" popl %%edx\n"
|
||||
" popf\n"
|
||||
" ret"
|
||||
: : );
|
||||
/* NOTREACHED */
|
||||
}
|
||||
|
||||
weak_alias (__sigaction, sigaction)
|
||||
|
Reference in New Issue
Block a user