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