112 lines
4.0 KiB
Diff
112 lines
4.0 KiB
Diff
From aff9b377121f9cfabe5d45f3226acf99c73928a7 Mon Sep 17 00:00:00 2001
|
||
From: Florian Weimer <fweimer@redhat.com>
|
||
Date: Fri, 26 Oct 2018 09:19:40 +0200
|
||
Subject: [PATCH 25] conform: XFAIL siginfo_t si_band test on sparc64
|
||
|
||
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 | 13 +++++++++++++
|
||
NEWS | 1 +
|
||
conform/data/signal.h-data | 3 ++-
|
||
conform/data/sys/wait.h-data | 3 ++-
|
||
sysdeps/unix/sysv/linux/sparc/bits/siginfo-arch.h | 7 ++++++-
|
||
sysdeps/unix/sysv/linux/sparc/sparc64/Makefile | 5 +++++
|
||
6 files changed, 29 insertions(+), 3 deletions(-)
|
||
|
||
diff --git a/ChangeLog b/ChangeLog
|
||
index 7726438658..6debca5f83 100644
|
||
--- 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 e95a0ea159..fda6788519 100644
|
||
--- a/NEWS
|
||
+++ b/NEWS
|
||
@@ -19,6 +19,7 @@ The following bugs are resolved with this release:
|
||
[23606] Missing ENDBR32 in sysdeps/i386/start.S
|
||
[23679] gethostid: Missing NULL check for gethostbyname_r result
|
||
[23717] Fix stack overflow in stdlib/tst-setcontext9
|
||
+ [23821] si_band in siginfo_t has wrong type long int on sparc64
|
||
|
||
|
||
Version 2.28
|
||
diff --git a/conform/data/signal.h-data b/conform/data/signal.h-data
|
||
index 11e54adb04..674e5793db 100644
|
||
--- a/conform/data/signal.h-data
|
||
+++ b/conform/data/signal.h-data
|
||
@@ -172,7 +172,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
|
||
diff --git a/conform/data/sys/wait.h-data b/conform/data/sys/wait.h-data
|
||
index ed3869b34f..c0761424da 100644
|
||
--- a/conform/data/sys/wait.h-data
|
||
+++ b/conform/data/sys/wait.h-data
|
||
@@ -46,7 +46,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
|
||
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/siginfo-arch.h b/sysdeps/unix/sysv/linux/sparc/bits/siginfo-arch.h
|
||
index 9f79715ebe..4dd35237f6 100644
|
||
--- a/sysdeps/unix/sysv/linux/sparc/bits/siginfo-arch.h
|
||
+++ b/sysdeps/unix/sysv/linux/sparc/bits/siginfo-arch.h
|
||
@@ -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;
|
||
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile b/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile
|
||
index 715af3df7b..218c246f16 100644
|
||
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile
|
||
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile
|
||
@@ -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
|
||
|