S/390:

Message ID lfuu4e$uam$3@ger.gmane.org
State Superseded
Headers

Commit Message

Stefan Liebler March 14, 2014, 12:53 p.m. UTC
  Hi,

The conformance tests for ISO99, ISO11, XOPEN2K, POSIX2008 and XOPEN2K8
are failing on S390 for the inttypes.h and stdint.h headers.
The problem is that on S390 size_t / __SIZE_TYPE__
are defined as long unsigned int,
which has the same size as unsigned int (on S390).
SIZE_MAX is defined in sysdeps/generic/stdint.h as 4294967295U.
The conformance-test checks the type of SIZE_MAX,
which should be promoted to __SIZE_TYPE__, but it is unsigned int.

Bye

---
2014-03-14  Stefan Liebler  <stli@linux.vnet.ibm.com>

	* sysdeps/s390/s390-32/Makefile
	(test-xfail-ISO99/inttypes.h/conform): New Variable.
	(test-xfail-ISO99/stdint.h/conform): Likewise.
	(test-xfail-ISO11/inttypes.h/conform): Likewise.
	(test-xfail-ISO11/stdint.h/conform): Likewise.
	(test-xfail-XOPEN2K/inttypes.h/conform): Likewise.
	(test-xfail-XOPEN2K/stdint.h/conform): Likewise.
	(test-xfail-POSIX2008/inttypes.h/conform): Likewise.
	(test-xfail-POSIX2008/stdint.h/conform): Likewise.
	(test-xfail-XOPEN2K8/inttypes.h/conform): Likewise.
	(test-xfail-XOPEN2K8/stdint.h/conform): Likewise.
---
\ No newline at end of file
  

Comments

Joseph Myers March 14, 2014, 2:18 p.m. UTC | #1
On Fri, 14 Mar 2014, Stefan Liebler wrote:

> Hi,
> 
> The conformance tests for ISO99, ISO11, XOPEN2K, POSIX2008 and XOPEN2K8
> are failing on S390 for the inttypes.h and stdint.h headers.
> The problem is that on S390 size_t / __SIZE_TYPE__
> are defined as long unsigned int,
> which has the same size as unsigned int (on S390).
> SIZE_MAX is defined in sysdeps/generic/stdint.h as 4294967295U.
> The conformance-test checks the type of SIZE_MAX,
> which should be promoted to __SIZE_TYPE__, but it is unsigned int.

You should fix the header rather than marking these tests as expected to 
fail.  (Of course, file a bug in Bugzilla before fixing it, as usual.)  To 
avoid duplicating the whole header, maybe add a macro <bits/wordsize.h> 
can define such as __WORDSIZE32_SIZE_ULONG, and then test that macro in 
<stdint.h>.

(You have two identical bits/wordsize.h files for S/390.  Just one should 
suffice.)
  

Patch

diff --git a/sysdeps/s390/s390-32/Makefile b/sysdeps/s390/s390-32/Makefile
index 057862d..e7f3934 100644
--- a/sysdeps/s390/s390-32/Makefile
+++ b/sysdeps/s390/s390-32/Makefile
@@ -9,3 +9,16 @@  CFLAGS-rtld.c += -Wno-uninitialized -Wno-unused
 CFLAGS-dl-load.c += -Wno-unused
 CFLAGS-dl-reloc.c += -Wno-unused
 endif
+
+ifeq ($(subdir),conform)
+test-xfail-ISO99/inttypes.h/conform = yes
+test-xfail-ISO99/stdint.h/conform = yes
+test-xfail-ISO11/inttypes.h/conform = yes
+test-xfail-ISO11/stdint.h/conform = yes
+test-xfail-XOPEN2K/inttypes.h/conform = yes
+test-xfail-XOPEN2K/stdint.h/conform = yes
+test-xfail-POSIX2008/inttypes.h/conform = yes
+test-xfail-POSIX2008/stdint.h/conform = yes
+test-xfail-XOPEN2K8/inttypes.h/conform = yes
+test-xfail-XOPEN2K8/stdint.h/conform = yes
+endif