diff options
author | Rich Felker <dalias@aerifal.cx> | 2011-09-19 17:39:51 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2011-09-19 17:39:51 -0400 |
commit | 224c7a376acbc2feda12169b806e9845c828595e (patch) | |
tree | 69a72217cdf67552ffd69f5fbbfb4a5cf4db91c8 /arch/arm/bits | |
parent | 089aeb08a083d798b59fc84cbff9383f304b1b8f (diff) | |
download | musl-224c7a376acbc2feda12169b806e9845c828595e.tar.gz musl-224c7a376acbc2feda12169b806e9845c828595e.tar.bz2 musl-224c7a376acbc2feda12169b806e9845c828595e.tar.xz musl-224c7a376acbc2feda12169b806e9845c828595e.zip |
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.
Diffstat (limited to 'arch/arm/bits')
-rwxr-xr-x | arch/arm/bits/alltypes.h.sh | 8 | ||||
-rw-r--r-- | arch/arm/bits/wchar.h | 4 |
2 files changed, 6 insertions, 6 deletions
diff --git a/arch/arm/bits/alltypes.h.sh b/arch/arm/bits/alltypes.h.sh index 6409a96e..11f1d93f 100755 --- a/arch/arm/bits/alltypes.h.sh +++ b/arch/arm/bits/alltypes.h.sh @@ -22,12 +22,8 @@ TYPEDEF long ptrdiff_t; TYPEDEF __builtin_va_list va_list; -#ifdef __WCHAR_TYPE__ -TYPEDEF __WCHAR_TYPE__ wchar_t; -#else -TYPEDEF long wchar_t; -#endif -TYPEDEF long wint_t; +TYPEDEF unsigned wchar_t; +TYPEDEF int wint_t; TYPEDEF long wctrans_t; TYPEDEF long wctype_t; diff --git a/arch/arm/bits/wchar.h b/arch/arm/bits/wchar.h new file mode 100644 index 00000000..ffb26917 --- /dev/null +++ b/arch/arm/bits/wchar.h @@ -0,0 +1,4 @@ +#ifndef WCHAR_MIN +#define WCHAR_MIN 0U +#define WCHAR_MAX 0xffffffffU +#endif |