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 7c5e34d7f1)
This commit is contained in:
Florian Weimer 2018-10-26 09:19:40 +02:00
parent 69d1e73d99
commit aff9b37712
6 changed files with 29 additions and 3 deletions

View File

@ -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> 2018-10-19 Ilya Yu. Malakhov <malakhov@mcst.ru>
[BZ #23562] [BZ #23562]

1
NEWS
View File

@ -19,6 +19,7 @@ The following bugs are resolved with this release:
[23606] Missing ENDBR32 in sysdeps/i386/start.S [23606] Missing ENDBR32 in sysdeps/i386/start.S
[23679] gethostid: Missing NULL check for gethostbyname_r result [23679] gethostid: Missing NULL check for gethostbyname_r result
[23717] Fix stack overflow in stdlib/tst-setcontext9 [23717] Fix stack overflow in stdlib/tst-setcontext9
[23821] si_band in siginfo_t has wrong type long int on sparc64
Version 2.28 Version 2.28

View File

@ -172,7 +172,8 @@ element siginfo_t pid_t si_pid
element siginfo_t uid_t si_uid element siginfo_t uid_t si_uid
element siginfo_t {void*} si_addr element siginfo_t {void*} si_addr
element siginfo_t int si_status 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 # endif
# ifndef XPG42 # ifndef XPG42
element siginfo_t {union sigval} si_value element siginfo_t {union sigval} si_value

View File

@ -46,7 +46,8 @@ element siginfo_t pid_t si_pid
element siginfo_t uid_t si_uid element siginfo_t uid_t si_uid
element siginfo_t {void*} si_addr element siginfo_t {void*} si_addr
element siginfo_t int si_status 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 # ifndef XPG42
element siginfo_t {union sigval} si_value element siginfo_t {union sigval} si_value
# endif # endif

View File

@ -2,7 +2,12 @@
#ifndef _BITS_SIGINFO_ARCH_H #ifndef _BITS_SIGINFO_ARCH_H
#define _BITS_SIGINFO_ARCH_H 1 #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 \ #define __SI_SIGFAULT_ADDL \
int _si_trapno; int _si_trapno;

View File

@ -7,3 +7,8 @@ LD += -melf64_sparc
ifeq ($(subdir),stdlib) ifeq ($(subdir),stdlib)
sysdep_routines += __start_context sysdep_routines += __start_context
endif endif
ifeq ($(subdir),conform)
# For bug 23821 (incorrect type of si_band).
conformtest-xfail-conds += sparc64-linux
endif