Commit Message
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.
---
Comments
On Tue, 18 Mar 2014, Stefan Liebler wrote:
> 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:
I suppose there must be some non-obvious sysdeps directory ordering issue,
so another bits/wordsize.h gets found if you unify those headers?
> 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.
OK.
I believe there's a previous approval of mine for (part of) a patch of
yours <https://sourceware.org/ml/libc-alpha/2014-02/msg00819.html> that
hasn't been committed.
On 03/18/2014 03:11 PM, Joseph S. Myers wrote:
> On Tue, 18 Mar 2014, Stefan Liebler wrote:
>
>> 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:
>
> I suppose there must be some non-obvious sysdeps directory ordering issue,
> so another bits/wordsize.h gets found if you unify those headers?
yes that´s right. The used one is sysdeps/wordsize-32/bits/wordsize.h
(on s390), which is the next include-dir specified by gcc invocation:
-Isysdeps/s390/s390-32 -Isysdeps/wordsize-32 -Inptl/sysdeps/s390
-Isysdeps/s390
The other header-files in sysdeps/s390/bits/ are not available in
-Isysdeps/wordsize-32 -Inptl/sysdeps/s390, so there it´s no problem.
Is it possible to change the directory ordering?
>
>> 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.
>
> OK.
>
> I believe there's a previous approval of mine for (part of) a patch of
> yours <https://sourceware.org/ml/libc-alpha/2014-02/msg00819.html> that
> hasn't been committed.
>
Thanks for the hint. I´ll forward the part of the patch
(posix/Makefile: before-compile += testcases.h ptestcases.h) to Andreas
Krebbel, so he can commit it.
Bye
The commit of these patches appears to have omitted to add the numbers of
the fixed bugs to NEWS. In general, when checking in a patch that fixes a
bug in Bugzilla, you need to add the bug number to NEWS first, then close
the bug in Bugzilla afterwards; please complete both steps.
@@ -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'. */
@@ -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
@@ -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