sparc: fix sigaction for 32bit builds [BZ #18694]

Commit a059d359d8 changed the sigaction
struct to pass conform tests, but it ended up also changing the ABI for
32 bit builds.  For 64 bit builds, changing the long to two ints works,
but for 32 bit builds, it inserts 4 extra bytes.  This leads to many
packages randomly failing like bash that spews things like:
	configure: line 471: wait_for: No record of process 0

Bracket the new member by a wordsize check to fix the ABI for 32bit.
This commit is contained in:
Mike Frysinger 2015-07-20 07:29:15 -04:00
parent d72c276305
commit 7fde904c73
3 changed files with 16 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2015-07-21 Mike Frysinger <vapier@gentoo.org>
[BZ #18694]
* sysdeps/unix/sysv/linux/sparc/bits/sigaction.h: Include
bits/wordsize.h.
(sigaction): Declare __glibc_reserved0 only when __WORDSIZE is 64.
2015-07-21 Siddhesh Poyarekar <siddhesh@redhat.com>
* stdlib/tst-tls-atexit-lib.c (do_foo): Rename to reg_dtor.

6
NEWS
View File

@ -27,7 +27,7 @@ Version 2.22
18522, 18527, 18528, 18529, 18530, 18532, 18533, 18534, 18536, 18539,
18540, 18542, 18544, 18545, 18546, 18547, 18549, 18553, 18557, 18558,
18569, 18583, 18585, 18586, 18592, 18593, 18594, 18602, 18612, 18613,
18619, 18633, 18641, 18643, 18648, 18676, 18696.
18619, 18633, 18641, 18643, 18648, 18676, 18694, 18696.
* Cache information can be queried via sysconf() function on s390 e.g. with
_SC_LEVEL1_ICACHE_SIZE as argument.
@ -71,6 +71,10 @@ Version 2.22
compliance. The new implementation fixes the following long-standing
issues: BZ#6544, BZ#11216, BZ#12836, BZ#13151, BZ#13152, and BZ#14292. The
old implementation is still present for use be by existing binaries.
* The 32-bit sparc sigaction ABI was inadvertently broken in the 2.20 and 2.21
releases. It has been fixed to match 2.19 and older, but binaries built
against 2.20 and 2.21 might need to be recompiled. See BZ#18694.
Version 2.21

View File

@ -20,6 +20,8 @@
# error "Never include <bits/sigaction.h> directly; use <signal.h> instead."
#endif
#include <bits/wordsize.h>
/* Structure describing the action to be taken when a signal arrives. */
struct sigaction
{
@ -43,7 +45,9 @@ struct sigaction
__sigset_t sa_mask;
/* Special flags. */
#if __WORDSIZE == 64
int __glibc_reserved0;
#endif
int sa_flags;
/* Not used by Linux/Sparc yet. */