This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: alpha/nptl/linux fails in glibc-2.5+ due to sigsuspend updates
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Mike Frysinger <vapier at gentoo dot org>, Richard Henderson <rth at redhat dot com>
- Cc: libc-alpha at sources dot redhat dot com
- Date: Sat, 21 Oct 2006 10:59:32 +0200
- Subject: Re: alpha/nptl/linux fails in glibc-2.5+ due to sigsuspend updates
- References: <200610210231.59112.vapier@gentoo.org>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
On Sat, Oct 21, 2006 at 02:31:58AM -0400, Mike Frysinger wrote:
> with the move to using XXX_nocancel() functions, alpha was left with a build
> failure ... the linux sigsuspend.c provides __sigsuspend_nocancel() when
> NO_CANCELLATION is defined, but the alpha hand coded asm sigsuspend.S does
> not ... i tried inserting some lame code like:
> #ifndef NO_CANCELLATION
> #include <sysdep.h>
> PSEUDO(__sigsuspend_nocancel, sigsuspend, 1)
> ret
> PSUEDO_END(__sigsuspend_nocancel)
> #endif
> but of course that fails as sysdep.h and sysdep-cancel.h use the same asm
> names
>
> so then i tried creating like
> sysdeps/unix/sysv/linux/alpha/sigsuspend_nocancel.S and using the above code,
> but NO_CANCELLATION is only set up by sysdep-cancel.h so ...
I think you either can just open code it in sigsuspend.S:
#ifndef NO_CANCELLATION
.globl __sigsuspend_nocancel;
.align 4;
.type __sigsuspend_nocancel, @function;
.usepv __sigsuspend_nocancel, std;
cfi_startproc;
__LABEL(__sigsuspend_nocancel)
ldgp gp, 0(pv);
PSEUDO_PROF;
PSEUDO_PREPARE_ARGS
lda v0, SYS_ify(sigsuspend);
call_pal PAL_callsys;
bne a3, SYSCALL_ERROR_LABEL;
ret;
cfi_endproc;
.size __sigsuspend_nocancel, .-__sigsuspend_nocancel
#endif
or, if you use sigsuspend_nocancel.S, then just don't use NO_CANCELLATION
at all, instead just make sure it is only linked into libc and libpthread.
Jakub