Re: [LTP] [PATCH V2 3/3] ltp_rt_sigaction.h: added SPARC support

chrubis
2014-08-12T09:05:48Z

Hi!
> > I've started to prepare for release and tried to build LTP on as much
> > arch/distro combination I could, for ia64 the rt_sigaction fails with:
> >
> > In file included from rt_sigaction01.c:42:
> > [ 349s] ../../../../include/lapi/rt_sigaction.h: In function
> > 'ltp_rt_sigaction':
> > [ 349s] ../../../../include/lapi/rt_sigaction.h:206: error: 'struct
> > sigaction' has no member named 'sa_restorer'
> > [ 349s] rt_sigaction01.c: In function 'set_handler':
> > [ 349s] rt_sigaction01.c:73: warning: unused parameter 'sig_to_mask'
> > [ 349s] make[4]: *** [rt_sigaction01] Error 1
> > [ 349s] make[4]: Leaving directory
> > `/usr/src/packages/BUILD/ltp-full-git/testcases/kernel/syscalls/rt_sigaction'
> > [ 349s] make[3]: *** [all] Error 2
> > [ 349s] make[3]: Leaving directory
> > `/usr/src/packages/BUILD/ltp-full-git/testcases/kernel/syscalls'
> > [ 349s] make[2]: *** [all] Error 2
> > [ 349s] make[2]: Leaving directory
> > `/usr/src/packages/BUILD/ltp-full-git/testcases/kernel'
> > [ 349s] make[1]: *** [all] Error 2
> > [ 349s] make[1]: Leaving directory
> > `/usr/src/packages/BUILD/ltp-full-git/testcases'
> > [ 349s] make: *** [testcases-all] Error 2
> > [ 349s] error: Bad exit status from /var/tmp/rpm-tmp.20244 (%build)
> >
> > Looking into glibc they have #ifdef HAVE_SA_RESTORER around code that
> > accesses the field. I guess that we have to add corresponding configure
> > check and ifdef too...
> >
>
> I looked at all sigaction.c files under glibc/sysdeps/unix/sysv/linux
> and found that in most of them kernel_sigaction.h file is used.
>
> And only these architectures don't have .sa_restorer field:
> * s390/s390-64/sigaction.c
> * ia64/sigaction.c

Strange it fails to compile only on ia64 for me, s390 and s390x seems to
be fine.

> What do you think about this approach (everything inside rt_sigaction.h):
> * define HAVE_SA_RESTORER for all architectures except the two above
> * protect all accesses to .sa_restorer (both in 'struct sigaction' and
> 'struct kernel_sigaction') with #ifdef HAVE_SA_RESTORER

Sounds good to me.

--
Cyril Hrubis
chrubis@suse.cz