|
Message-ID: <20220111003600.GU7074@brightrain.aerifal.cx> Date: Mon, 10 Jan 2022 19:36:04 -0500 From: Rich Felker <dalias@...c.org> To: Heinrich Schuchardt <heinrich.schuchardt@...onical.com> Cc: musl@...ts.openwall.com, Milan P . Stanić <mps@...anta.net> Subject: Re: [PATCH 1/1] honor __WCHAR_TYPE__ on x86_64, arm, arm64, riscv64 On Tue, Jan 11, 2022 at 01:25:18AM +0100, Heinrich Schuchardt wrote: > Some programs like U-Boot are compiled with GCC option -fshort-wchar. > In this case wchar_t must be a 16 bit type. This is not something you can just change with an option. The wchar_t type is an ABI contract with the library functions that take (or take pointers to) wchar_t. Can you explain how this actually comes up in the applications so we can look into getting them fixed? > Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@...onical.com> > --- > arch/aarch64/bits/alltypes.h.in | 5 +++++ > arch/arm/bits/alltypes.h.in | 4 ++++ > arch/riscv64/bits/alltypes.h.in | 4 ++++ > arch/x86_64/bits/alltypes.h.in | 4 ++++ > 4 files changed, 17 insertions(+) > > diff --git a/arch/aarch64/bits/alltypes.h.in b/arch/aarch64/bits/alltypes.h.in > index c547ca0b..c0263348 100644 > --- a/arch/aarch64/bits/alltypes.h.in > +++ b/arch/aarch64/bits/alltypes.h.in > @@ -11,8 +11,13 @@ > #define __LONG_MAX 0x7fffffffffffffffL > > #ifndef __cplusplus > +#ifdef __WCHAR_TYPE__ > +TYPEDEF __WCHAR_TYPE__ wchar_t; > +#else > TYPEDEF unsigned wchar_t; > #endif > +#endif > + > TYPEDEF unsigned wint_t; > > TYPEDEF int blksize_t; > diff --git a/arch/arm/bits/alltypes.h.in b/arch/arm/bits/alltypes.h.in > index d62bd7bd..9596466b 100644 > --- a/arch/arm/bits/alltypes.h.in > +++ b/arch/arm/bits/alltypes.h.in > @@ -12,8 +12,12 @@ > #define __LONG_MAX 0x7fffffffL > > #ifndef __cplusplus > +#ifdef __WCHAR_TYPE__ > +TYPEDEF __WCHAR_TYPE__ wchar_t; > +#else > TYPEDEF unsigned wchar_t; > #endif > +#endif > > TYPEDEF float float_t; > TYPEDEF double double_t; > diff --git a/arch/riscv64/bits/alltypes.h.in b/arch/riscv64/bits/alltypes.h.in > index 4579d174..f8f8b7e5 100644 > --- a/arch/riscv64/bits/alltypes.h.in > +++ b/arch/riscv64/bits/alltypes.h.in > @@ -6,8 +6,12 @@ > #define __LONG_MAX 0x7fffffffffffffffL > > #ifndef __cplusplus > +#ifdef __WCHAR_TYPE__ > +TYPEDEF __WCHAR_TYPE__ wchar_t; > +#else > TYPEDEF int wchar_t; > #endif > +#endif > > TYPEDEF int blksize_t; > TYPEDEF unsigned int nlink_t; > diff --git a/arch/x86_64/bits/alltypes.h.in b/arch/x86_64/bits/alltypes.h.in > index 5cd8a299..748ff632 100644 > --- a/arch/x86_64/bits/alltypes.h.in > +++ b/arch/x86_64/bits/alltypes.h.in > @@ -6,8 +6,12 @@ > #define __LONG_MAX 0x7fffffffffffffffL > > #ifndef __cplusplus > +#ifdef __WCHAR_TYPE__ > +TYPEDEF __WCHAR_TYPE__ wchar_t; > +#else > TYPEDEF int wchar_t; > #endif > +#endif > > #if defined(__FLT_EVAL_METHOD__) && __FLT_EVAL_METHOD__ == 2 > TYPEDEF long double float_t; > -- > 2.33.1
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.