]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
sparc: fix sigaction for 32bit builds [BZ #18694]
authorMike Frysinger <vapier@gentoo.org>
Mon, 20 Jul 2015 11:29:15 +0000 (07:29 -0400)
committerMike Frysinger <vapier@gentoo.org>
Tue, 21 Jul 2015 01:53:47 +0000 (21:53 -0400)
Commit a059d359d86130b5fa74e04a978c8523a0293f77 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.

ChangeLog
NEWS
sysdeps/unix/sysv/linux/sparc/bits/sigaction.h

index cf107dfb4f99e202e7b12f886cf3607db81eb9f2..52e1837914673edefff5dbe6a1a5537c70602e4b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/NEWS b/NEWS
index a2c3b4840ab6f85c720abe7c9abe75043a333534..0e350a92c68e96f7995929c585dd04f1cf70a229 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -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.
 \f
 Version 2.21
 
index 0750b5203875a19b148972586675fafbb85ef5fa..3af5541024ec5affe5954439ec45019c34c37d89 100644 (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.  */