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

Reply via email to