This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: alpha/nptl/linux fails in glibc-2.5+ due to sigsuspend updates


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]