]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
conform: XFAIL siginfo_t si_band test on sparc64
authorFlorian Weimer <fweimer@redhat.com>
Fri, 26 Oct 2018 07:25:48 +0000 (09:25 +0200)
committerFlorian Weimer <fweimer@redhat.com>
Fri, 26 Oct 2018 07:25:48 +0000 (09:25 +0200)
We can use long int on sparcv9, but on sparc64, we must match the int
type used by the kernel (and not long int, as in POSIX).

(cherry picked from commit 7c5e34d7f1b8f8f5acd94c2b885ae13b85414dcd)

ChangeLog
NEWS
conform/data/signal.h-data
conform/data/sys/wait.h-data
sysdeps/unix/sysv/linux/sparc/bits/siginfo-arch.h
sysdeps/unix/sysv/linux/sparc/sparc64/Makefile

index 40ddae489f78d7e05e88a510f2b6601a47be5886..8bf37f0a7e36e343ff5fc23510dba714183cfcc0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2018-10-25  Florian Weimer  <fweimer@redhat.com>
+
+       [BZ #23562]
+       [BZ #23821]
+       XFAIL siginfo_t si_band conform test on sparc64.
+       * sysdeps/unix/sysv/linux/sparc/bits/siginfo-arch.h
+       (__SI_BAND_TYPE): Only override long int default type on sparc64.
+       * sysdeps/unix/sysv/linux/sparc/sparc64/Makefile
+       (conformtest-xfail-conds): Add sparc64-linux.
+       * conform/data/signal.h-data (siginfo_t): XFAIL si_band test on
+       sparc64.
+       * conform/data/sys/wait.h-data (siginfo_t): Likewise.
+
 2018-10-19  Ilya Yu. Malakhov  <malakhov@mcst.ru>
 
        [BZ #23562]
diff --git a/NEWS b/NEWS
index afb956149c42cfd1abb82c100558cb98696de3ac..012e6656012a74055849265ac3b04e883866622f 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -93,6 +93,7 @@ The following bugs are resolved with this release:
   [23538] pthread_cond_broadcast: Fix waiters-after-spinning case
   [23562] signal: Use correct type for si_band in siginfo_t
   [23579] libc: Errors misreported in preadv2
+  [23821] si_band in siginfo_t has wrong type long int on sparc64
 
 \f
 Version 2.27
index fa841cfdbecde1bc8b8588370c3050ca103a62ce..88c1f5eba2eb9ee9509952183f8346553df7f383 100644 (file)
@@ -170,7 +170,8 @@ element siginfo_t pid_t si_pid
 element siginfo_t uid_t si_uid
 element siginfo_t {void*} si_addr
 element siginfo_t int si_status
-element siginfo_t long si_band
+// Bug 23821: si_band has type int on sparc64.
+xfail[sparc64-linux]-element siginfo_t long si_band
 #  endif
 #  ifndef XPG42
 element siginfo_t {union sigval} si_value
index 559ebdf6772c7169eae0b0ca4590c7c3181facd8..a6713461eaa4923505f71d4f8dd3569b8a3a05a5 100644 (file)
@@ -44,7 +44,8 @@ element siginfo_t pid_t si_pid
 element siginfo_t uid_t si_uid
 element siginfo_t {void*} si_addr
 element siginfo_t int si_status
-element siginfo_t long si_band
+// Bug 23821: si_band has type int on sparc64.
+xfail[sparc64-linux]-element siginfo_t long si_band
 # ifndef XPG42
 element siginfo_t {union sigval} si_value
 # endif
index 9f79715ebe6c94828bb383be5edee5f2a1ea2007..4dd35237f67a63c555becffdf038e489558564e6 100644 (file)
@@ -2,7 +2,12 @@
 #ifndef _BITS_SIGINFO_ARCH_H
 #define _BITS_SIGINFO_ARCH_H 1
 
-#define __SI_BAND_TYPE int
+/* The kernel uses int instead of long int (as in POSIX).  In 32-bit
+   mode, we can still use long int, but in 64-bit mode, we need to
+   deviate from POSIX.  */
+#if __WORDSIZE == 64
+# define __SI_BAND_TYPE int
+#endif
 
 #define __SI_SIGFAULT_ADDL \
   int _si_trapno;
index 715af3df7b14857f760f02a46a27d59a1d4f0c2e..218c246f161256d8a7eb8a75bc0faa3e8bca8597 100644 (file)
@@ -7,3 +7,8 @@ LD += -melf64_sparc
 ifeq ($(subdir),stdlib)
 sysdep_routines += __start_context
 endif
+
+ifeq ($(subdir),conform)
+# For bug 23821 (incorrect type of si_band).
+conformtest-xfail-conds += sparc64-linux
+endif