fix the type of wchar_t on arm; support wchar_t varying with arch
authorRich Felker <dalias@aerifal.cx>
Mon, 19 Sep 2011 21:39:51 +0000 (17:39 -0400)
committerRich Felker <dalias@aerifal.cx>
Mon, 19 Sep 2011 21:39:51 +0000 (17:39 -0400)
commit224c7a376acbc2feda12169b806e9845c828595e
tree69a72217cdf67552ffd69f5fbbfb4a5cf4db91c8
parent089aeb08a083d798b59fc84cbff9383f304b1b8f
fix the type of wchar_t on arm; support wchar_t varying with arch

really wchar_t should never vary, but the ARM EABI defines it as an
unsigned 32-bit int instead of a signed one, and gcc follows this
nonsense. thus, to give a conformant environment, we have to follow
(otherwise L""[0] and L'\0' would be 0U rather than 0, but the
application would be unaware due to a mismatched definition for
WCHAR_MIN and WCHAR_MAX, and Bad Things could happen with respect to
signed/unsigned comparisons, promotions, etc.).

fortunately no rules are imposed by the C standard on the relationship
between wchar_t and wint_t, and WEOF has type wint_t, so we can still
make wint_t always-signed and use -1 for WEOF.
arch/arm/bits/alltypes.h.sh
arch/arm/bits/wchar.h [new file with mode: 0644]
arch/i386/bits/wchar.h [new file with mode: 0644]
arch/x86_64/bits/wchar.h [new file with mode: 0644]
include/stdint.h
include/wchar.h