glibc/wcsmbs
Joseph Myers 15081be993 Define char16_t, char32_t consistently with uint_least16_t, uint_least32_t (bug 17979).
As noted in bug 17979 (and as I noted earlier in
<https://sourceware.org/ml/libc-alpha/2012-02/msg00647.html>), uchar.h
has gratuitously complicated code to determine the types for char16_t
and char32_t, and to reject including that header for pre-C11
compilers not defining __CHAR16_TYPE__ and __CHAR32_TYPE__.  Since
those types are always required to match uint_least16_t and
uint_least32_t, which glibc knows how to define without reference to
such predefined macros, it's safe just to define those types the same
as the *least* types are defined in stdint.h, so allowing the header
to work with (for example) GCC 4.3.

This patch implements that.  bits/types.h is made to define
__int_leastN_t and __uint_leastN_t so the logic for those types can
stay in a single place, and stdint.h is made to use those __*_t to
define the public *_t types.  uchar.h is then made to use
__uint_least16_t and __uint_least32_t to define char16_t and char32_t,
so simplifying the logic there.  A new test is added that verifies the
types chosen for char16_t and char32_t do indeed match the types the
compiler uses for u"" and U"" string literals.

Tested for x86_64.  (I have not tested with any of the older compilers
for which this would actually make a difference to whether you can
include uchar.h.)

	[BZ #17979]
	* posix/bits/types.h (__int_least8_t): New typedef.
	(__uint_least8_t): Likewise.
	(__int_least16_t): Likewise.
	(__uint_least16_t): Likewise.
	(__int_least32_t): Likewise.
	(__uint_least32_t): Likewise.
	(__int_least64_t): Likewise.
	(__uint_least64_t): Likewise.
	* sysdeps/generic/stdint.h (int_least8_t): Define using
	__int_least8_t.
	(int_least16_t): Define using __int_least16_t.
	(int_least32_t): Define using __int_least32_t.
	(int_least64_t): Define using __int_least64_t.
	(uint_least8_t): Define using __uint_least8_t.
	(uint_least16_t): Define using __uint_least16_t.
	(uint_least32_t): Define using __uint_least32_t.
	(uint_least64_t): Define using __uint_least64_t.
	* wcsmbs/uchar.h: Include <bits/types.h>.
	(char16_t): Define using __uint_least16_t conditional only on
	[!__USE_ISOCXX11].
	(char32_t): Define using __uint_least32_t conditional only on
	[!__USE_ISOCXX11].
	* wcsmbs/test-char-types.c: New file.
	* wcsmbs/Makefile (tests): Add test-char-types.
2018-02-07 20:33:55 +00:00
..
bits Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
btowc.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
c16rtomb.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
Depend Update. 2000-09-06 22:15:07 +00:00
isoc99_fwscanf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
isoc99_swscanf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
isoc99_vfwscanf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
isoc99_vswscanf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
isoc99_vwscanf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
isoc99_wscanf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
Makefile Define char16_t, char32_t consistently with uint_least16_t, uint_least32_t (bug 17979). 2018-02-07 20:33:55 +00:00
mbrlen.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mbrtoc16.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mbrtowc.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mbsinit.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mbsnrtowcs.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mbsrtowcs_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mbsrtowcs.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-char-types.c Define char16_t, char32_t consistently with uint_least16_t, uint_least32_t (bug 17979). 2018-02-07 20:33:55 +00:00
test-wcpcpy.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-wcpncpy.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-wcscat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-wcschr.c Add wcschr test cases 2011-10-23 14:14:26 -04:00
test-wcschrnul.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-wcscmp.c Move wide char tests to wcsmbs directory 2011-09-08 18:01:07 -04:00
test-wcscpy.c Add tests for wcsrchr and wcscpy 2011-12-17 14:14:58 -05:00
test-wcscspn.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-wcslen.c Add wcslen test cases 2011-10-23 14:11:50 -04:00
test-wcsncat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-wcsncmp.c Use correct signedness in wcsncmp 2015-04-13 21:25:04 +02:00
test-wcsncpy.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-wcsnlen.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-wcspbrk.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-wcsrchr.c Add tests for wcsrchr and wcscpy 2011-12-17 14:14:58 -05:00
test-wcsspn.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-wmemchr.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-wmemcmp.c Move wide char tests to wcsmbs directory 2011-09-08 18:01:07 -04:00
test-wmemset.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-btowc.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-c16c32-1.c Add #include <stdint.h> for uint[32|64]_t usage (except installed headers). 2013-05-16 11:32:54 -05:00
tst-mbrtowc2.c Prefer https for Sourceware links 2017-11-16 11:49:26 +05:30
tst-mbrtowc.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-mbsrtowcs.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-wchar-h.c Update wcsmbs tests to use the support test driver 2017-04-04 18:05:20 -03:00
tst-wcpncpy.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-wcrtomb.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-wcsnlen.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-wcstod-nan-locale.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-wcstod-round.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-wcstof.c Update wcsmbs tests to use the support test driver 2017-04-04 18:05:20 -03:00
tst-wcstol-locale.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
uchar.h Define char16_t, char32_t consistently with uint_least16_t, uint_least32_t (bug 17979). 2018-02-07 20:33:55 +00:00
Versions Add _Float32 function aliases. 2017-12-07 00:48:31 +00:00
wchar.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcpcpy.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcpncpy.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcrtomb.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsatcliff.c Fix handling of tail bytes of buffer in SSE2/SSSE3 x86-64 version strn{,case}cmp 2010-10-03 22:10:30 -04:00
wcscasecmp_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcscasecmp.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcscat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcschr.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcschrnul.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcscmp.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcscoll_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcscoll.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcscpy.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcscspn.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsdup.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcslen.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsmbs-tst1.c Add dependencies on needed locales in each subdir tests (bug 18969) 2015-10-12 15:18:08 +02:00
wcsmbsload.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsmbsload.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsncase_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsncase.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsncat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsncmp.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsncpy.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsnlen.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsnrtombs.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcspbrk.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsrchr.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsrtombs.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsspn.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsstr.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstod_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstod_nan.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstod.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstof_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstof_nan.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstof.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstok.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstol_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstol.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstold_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstold_nan.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstold.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstoll_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstoll.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstoul_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstoul.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstoull_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstoull.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcswidth.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsxfrm_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsxfrm.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wctob.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcwidth.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcwidth.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wmemchr.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wmemcmp.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wmemcpy.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wmemmove.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wmempcpy.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wmemset.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00