]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Bug 338974 glibc 2.20 changed size of struct sigaction sa_flags on s390
authorMark Wielaard <mark@klomp.org>
Wed, 10 Sep 2014 12:08:15 +0000 (12:08 +0000)
committerMark Wielaard <mark@klomp.org>
Wed, 10 Sep 2014 12:08:15 +0000 (12:08 +0000)
To track POSIX glibc and the kernel agreed to change the type of the
sa_flags field in struct sigaction to an int. There is now a int
__glibc_reserved0 padding field that can be passed undefined.
See https://sourceware.org/ml/libc-alpha/2014-09/msg00161.html

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14508

NEWS
include/vki/vki-s390x-linux.h

diff --git a/NEWS b/NEWS
index d467258932a25d3e0444e5dabb706ffca8b8f887..e9f6616713daab105d4297f76dd785b6e68694de 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -328,6 +328,7 @@ where XXXXXX is the bug number as listed below.
 338791  alt dwz files can be relative of debug/main file
 338878  on MacOS: assertion 'VG_IS_PAGE_ALIGNED(clstack_end+1)' failed
 338932  build V-trunk with gcc-trunk
+338974  glibc 2.20 changed size of struct sigaction sa_flags field on s390
 n-i-bz  Fix KVM_CREATE_IRQCHIP ioctl handling
 n-i-bz  s390x: Fix memory corruption for multithreaded applications
 n-i-bz  vex arm->IR: allow PC as basereg in some LDRD cases
index 902bbf5cff6a88857d121ecf23dc623eeb79df4c..85c449d4e259703f3dd2b93190d60cbc85d1b4bf 100644 (file)
@@ -258,7 +258,13 @@ struct vki_old_sigaction {
 struct vki_sigaction {
         // [[See comment about extra 'k' above]]
         __vki_sighandler_t ksa_handler;
-        unsigned long sa_flags;
+        // Yes, the reserved field is really glibc specific. The kernel
+        // doesn't have it and uses an unsigned long for sa_flags.
+        // The glibc and the kernel agreed this is fine and the
+        // __glibc_reserved0 field can be undefined.
+        // See https://sourceware.org/ml/libc-alpha/2014-09/msg00161.html
+        int __glibc_reserved0;
+        int sa_flags;
         void (*sa_restorer)(void);
         vki_sigset_t sa_mask;               /* mask last for extensibility */
 };