[PATCH] S/390:
Stefan Liebler
stli@linux.vnet.ibm.com
Tue Mar 18 12:48:00 GMT 2014
On 03/14/2014 03:18 PM, Joseph S. Myers wrote:
> 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.)
>
I fixed the header as mentioned. The tests pass on s390/s390x.
Unifying s390/s390-32/bits/wordsize.h and s390/s390-64/wordsize.h to
s390/bits/wordsize.h leads to a build error:
gcc -shared -static-libgcc -Wl,-O1 -Wl,-z,defs
-Wl,-dynamic-linker=/lib/ld.so.1 -Bglibc-build/csu/
-Wl,--version-script=glibc-build/libm.map -Wl,-soname=libm.so.6
-Wl,-z,combreloc -Wl,-z,relro -Wl,--hash-style=both -Lglibc-build
-Lglibc-build/math -Lglibc-build/elf -Lglibc-build/dlfcn
-Lglibc-build/nss -Lglibc-build/nis -Lglibc-build/rt
-Lglibc-build/resolv -Lglibc-build/crypt -Lglibc-build/nptl
-Wl,-rpath-link=glibc-build:glibc-build/math:glibc-build/elf:glibc-build/dlfcn:glibc-build/nss:glibc-build/nis:glibc-build/rt:glibc-build/resolv:glibc-build/crypt:glibc-build/nptl
-o glibc-build/math/libm.so -T glibc-build/shlib.lds
glibc-build/csu/abi-note.o -Wl,--whole-archive
glibc-build/math/libm_pic.a -Wl,--no-whole-archive
glibc-build/elf/interp.os -Wl,--start-group glibc-build/libc.so
glibc-build/libc_nonshared.a -Wl,--as-needed glibc-build/elf/ld.so
-Wl,--no-as-needed -Wl,--end-group
glibc-build/math/libm_pic.a(s_nanl.os): In function `nanl@@GLIBC_2.4':
s_nanl.c:(.text+0xb4): undefined reference to `strtold'
collect2: error: ld returned 1 exit status
make[2]: *** [glibc-build/math/libm.so] Error 1
Bye.
---
2014-03-18 Stefan Liebler <stli@linux.vnet.ibm.com>
[BZ #16712]
* sysdeps/s390/s390-32/bits/wordsize.h
(__WORDSIZE32_SIZE_ULONG): New define.
* sysdeps/s390/s390-64/bits/wordsize.h
(__WORDSIZE32_SIZE_ULONG): Likewise.
* sysdeps/generic/stdint.h (SIZE_MAX):
Define as UL if __WORDSIZE32_SIZE_ULONG.
---
-------------- next part --------------
diff --git a/sysdeps/generic/stdint.h b/sysdeps/generic/stdint.h
index 4660748..f5d9556 100644
--- a/sysdeps/generic/stdint.h
+++ b/sysdeps/generic/stdint.h
@@ -260,7 +260,11 @@ typedef unsigned long long int uintmax_t;
# if __WORDSIZE == 64
# define SIZE_MAX (18446744073709551615UL)
# else
-# define SIZE_MAX (4294967295U)
+# ifdef __WORDSIZE32_SIZE_ULONG
+# define SIZE_MAX (4294967295UL)
+# else
+# define SIZE_MAX (4294967295U)
+# endif
# endif
/* Limits of `wchar_t'. */
diff --git a/sysdeps/s390/s390-32/bits/wordsize.h b/sysdeps/s390/s390-32/bits/wordsize.h
index b416612..da791fa 100644
--- a/sysdeps/s390/s390-32/bits/wordsize.h
+++ b/sysdeps/s390/s390-32/bits/wordsize.h
@@ -4,6 +4,7 @@
# define __WORDSIZE 64
#else
# define __WORDSIZE 32
+# define __WORDSIZE32_SIZE_ULONG 1
#endif
#if !defined __NO_LONG_DOUBLE_MATH && !defined __LONG_DOUBLE_MATH_OPTIONAL
diff --git a/sysdeps/s390/s390-64/bits/wordsize.h b/sysdeps/s390/s390-64/bits/wordsize.h
index b416612..da791fa 100644
--- a/sysdeps/s390/s390-64/bits/wordsize.h
+++ b/sysdeps/s390/s390-64/bits/wordsize.h
@@ -4,6 +4,7 @@
# define __WORDSIZE 64
#else
# define __WORDSIZE 32
+# define __WORDSIZE32_SIZE_ULONG 1
#endif
#if !defined __NO_LONG_DOUBLE_MATH && !defined __LONG_DOUBLE_MATH_OPTIONAL
More information about the Libc-alpha
mailing list