On 08/12/2014 01:04 PM, chru...@suse.cz wrote: > 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.
Sorry, I was incorrect. If a sigaction.c includes kernel_sigaction.h, it implies that the sigaction() implementation uses 'struct kernel_sigaction'. But this fact doesn't mean that 'struct sigaction' for this platform has/doesn't have .sa_restorer member. It seems that only: * alpha * ia64 * hppa platforms don't have .sa_restorer in 'struct sigaction'. > >> 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. > ------------------------------------------------------------------------------ _______________________________________________ Ltp-list mailing list Ltp-list@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ltp-list