Make the wchar_t type machine dependent.
This is required for ARM EABI. Section 7.1.1 of the Procedure Call for the ARM Architecture (AAPCS) defines wchar_t as either an unsigned int or an unsigned short with the former preferred. Because of this requirement we need to move the definition of __wchar_t to a machine dependent header. It also cleans up the macros defining the limits of wchar_t by defining __WCHAR_MIN and __WCHAR_MAX in the same machine dependent header then using them to define WCHAR_MIN and WCHAR_MAX respectively. Discussed with: bde
This commit is contained in:
parent
f745b16359
commit
74dc547e24
@ -88,10 +88,8 @@ typedef __wint_t wint_t;
|
||||
#define _WINT_T_DECLARED
|
||||
#endif
|
||||
|
||||
#ifndef WCHAR_MIN
|
||||
#define WCHAR_MIN __INT_MIN
|
||||
#define WCHAR_MAX __INT_MAX
|
||||
#endif
|
||||
#define WCHAR_MIN __WCHAR_MIN
|
||||
#define WCHAR_MAX __WCHAR_MAX
|
||||
|
||||
#ifndef WEOF
|
||||
#define WEOF ((wint_t)-1)
|
||||
|
@ -149,12 +149,6 @@
|
||||
/* Limit of size_t. */
|
||||
#define SIZE_MAX UINT32_MAX
|
||||
|
||||
#ifndef WCHAR_MIN /* Also possibly defined in <wchar.h> */
|
||||
/* Limits of wchar_t. */
|
||||
#define WCHAR_MIN INT32_MIN
|
||||
#define WCHAR_MAX INT32_MAX
|
||||
#endif
|
||||
|
||||
/* Limits of wint_t. */
|
||||
#define WINT_MIN INT32_MIN
|
||||
#define WINT_MAX INT32_MAX
|
||||
|
@ -105,6 +105,16 @@ typedef __uint32_t __vm_paddr_t;
|
||||
typedef __uint64_t __vm_pindex_t;
|
||||
typedef __uint32_t __vm_size_t;
|
||||
|
||||
#ifdef __ARM_EABI__
|
||||
typedef unsigned int __wchar_t;
|
||||
#define __WCHAR_MIN 0 /* min value for a wchar_t */
|
||||
#define __WCHAR_MAX __UINT_MAX /* max value for a wchar_t */
|
||||
#else
|
||||
typedef int __wchar_t;
|
||||
#define __WCHAR_MIN __INT_MIN /* min value for a wchar_t */
|
||||
#define __WCHAR_MAX __INT_MAX /* max value for a wchar_t */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Unusual type definitions.
|
||||
*/
|
||||
|
@ -149,12 +149,6 @@
|
||||
/* Limit of size_t. */
|
||||
#define SIZE_MAX UINT64_MAX
|
||||
|
||||
#ifndef WCHAR_MIN /* Also possibly defined in <wchar.h> */
|
||||
/* Limits of wchar_t. */
|
||||
#define WCHAR_MIN INT32_MIN
|
||||
#define WCHAR_MAX INT32_MAX
|
||||
#endif
|
||||
|
||||
/* Limits of wint_t. */
|
||||
#define WINT_MIN INT32_MIN
|
||||
#define WINT_MAX INT32_MAX
|
||||
|
@ -96,6 +96,10 @@ typedef __int64_t __vm_ooffset_t;
|
||||
typedef __uint64_t __vm_paddr_t;
|
||||
typedef __uint64_t __vm_pindex_t;
|
||||
typedef __uint64_t __vm_size_t;
|
||||
typedef int __wchar_t;
|
||||
|
||||
#define __WCHAR_MIN __INT_MIN /* min value for a wchar_t */
|
||||
#define __WCHAR_MAX __INT_MAX /* max value for a wchar_t */
|
||||
|
||||
/*
|
||||
* Unusual type definitions.
|
||||
|
@ -186,12 +186,6 @@
|
||||
#define SIG_ATOMIC_MIN INT32_MIN
|
||||
#define SIG_ATOMIC_MAX INT32_MAX
|
||||
|
||||
#ifndef WCHAR_MIN /* Also possibly defined in <wchar.h> */
|
||||
/* Limits of wchar_t. */
|
||||
#define WCHAR_MIN INT32_MIN
|
||||
#define WCHAR_MAX INT32_MAX
|
||||
#endif
|
||||
|
||||
/* Limits of wint_t. */
|
||||
#define WINT_MIN INT32_MIN
|
||||
#define WINT_MAX INT32_MAX
|
||||
|
@ -145,6 +145,10 @@ typedef __uint32_t __vm_paddr_t;
|
||||
|
||||
typedef __int64_t __vm_ooffset_t;
|
||||
typedef __uint64_t __vm_pindex_t;
|
||||
typedef int __wchar_t;
|
||||
|
||||
#define __WCHAR_MIN __INT_MIN /* min value for a wchar_t */
|
||||
#define __WCHAR_MAX __INT_MAX /* max value for a wchar_t */
|
||||
|
||||
/*
|
||||
* Unusual type definitions.
|
||||
|
@ -189,12 +189,6 @@
|
||||
#define SIZE_MAX UINT32_MAX
|
||||
#endif
|
||||
|
||||
#ifndef WCHAR_MIN /* Also possibly defined in <wchar.h> */
|
||||
/* Limits of wchar_t. */
|
||||
#define WCHAR_MIN INT32_MIN
|
||||
#define WCHAR_MAX INT32_MAX
|
||||
#endif
|
||||
|
||||
/* Limits of wint_t. */
|
||||
#define WINT_MIN INT32_MIN
|
||||
#define WINT_MAX INT32_MAX
|
||||
|
@ -133,6 +133,10 @@ typedef __uint32_t __vm_size_t;
|
||||
#endif
|
||||
typedef __int64_t __vm_ooffset_t;
|
||||
typedef __uint64_t __vm_pindex_t;
|
||||
typedef int __wchar_t;
|
||||
|
||||
#define __WCHAR_MIN __INT_MIN /* min value for a wchar_t */
|
||||
#define __WCHAR_MAX __INT_MAX /* max value for a wchar_t */
|
||||
|
||||
/*
|
||||
* Unusual type definitions.
|
||||
|
@ -149,12 +149,6 @@
|
||||
/* Limit of size_t. */
|
||||
#define SIZE_MAX UINT64_MAX
|
||||
|
||||
#ifndef WCHAR_MIN /* Also possibly defined in <wchar.h> */
|
||||
/* Limits of wchar_t. */
|
||||
#define WCHAR_MIN INT32_MIN
|
||||
#define WCHAR_MAX INT32_MAX
|
||||
#endif
|
||||
|
||||
/* Limits of wint_t. */
|
||||
#define WINT_MIN INT32_MIN
|
||||
#define WINT_MAX INT32_MAX
|
||||
|
@ -92,6 +92,10 @@ typedef __int64_t __vm_ooffset_t;
|
||||
typedef __uint64_t __vm_paddr_t;
|
||||
typedef __uint64_t __vm_pindex_t;
|
||||
typedef __uint64_t __vm_size_t;
|
||||
typedef int __wchar_t;
|
||||
|
||||
#define __WCHAR_MIN __INT_MIN /* min value for a wchar_t */
|
||||
#define __WCHAR_MAX __INT_MAX /* max value for a wchar_t */
|
||||
|
||||
/*
|
||||
* Unusual type definitions.
|
||||
|
@ -80,14 +80,13 @@ typedef int __cpusetid_t; /* cpuset identifier. */
|
||||
* ANSI C), but they use __ct_rune_t instead of int.
|
||||
*
|
||||
* NOTE: rune_t is not covered by ANSI nor other standards, and should not
|
||||
* be instantiated outside of lib/libc/locale. Use wchar_t. wchar_t and
|
||||
* rune_t must be the same type. Also, wint_t must be no narrower than
|
||||
* wchar_t, and should be able to hold all members of the largest
|
||||
* character set plus one extra value (WEOF), and must be at least 16 bits.
|
||||
* be instantiated outside of lib/libc/locale. Use wchar_t. wint_t and
|
||||
* rune_t must be the same type. Also, wint_t should be able to hold all
|
||||
* members of the largest character set plus one extra value (WEOF), and
|
||||
* must be at least 16 bits.
|
||||
*/
|
||||
typedef int __ct_rune_t; /* arg type for ctype funcs */
|
||||
typedef __ct_rune_t __rune_t; /* rune_t (see above) */
|
||||
typedef __ct_rune_t __wchar_t; /* wchar_t (see above) */
|
||||
typedef __ct_rune_t __wint_t; /* wint_t (see above) */
|
||||
|
||||
typedef __uint32_t __dev_t; /* device number */
|
||||
|
@ -71,4 +71,8 @@ typedef __uintmax_t uintmax_t;
|
||||
#define __WORDSIZE 32
|
||||
#endif
|
||||
|
||||
/* Limits of wchar_t. */
|
||||
#define WCHAR_MIN __WCHAR_MIN
|
||||
#define WCHAR_MAX __WCHAR_MAX
|
||||
|
||||
#endif /* !_SYS_STDINT_H_ */
|
||||
|
@ -180,12 +180,6 @@
|
||||
#define SIZE_MAX UINT32_MAX
|
||||
#endif
|
||||
|
||||
#ifndef WCHAR_MIN /* Also possibly defined in <wchar.h> */
|
||||
/* Limits of wchar_t. */
|
||||
#define WCHAR_MIN INT32_MIN
|
||||
#define WCHAR_MAX INT32_MAX
|
||||
#endif
|
||||
|
||||
/* Limits of wint_t. */
|
||||
#define WINT_MIN INT32_MIN
|
||||
#define WINT_MAX INT32_MAX
|
||||
|
@ -142,6 +142,10 @@ typedef __uint32_t __vm_size_t;
|
||||
#endif
|
||||
typedef __int64_t __vm_ooffset_t;
|
||||
typedef __uint64_t __vm_pindex_t;
|
||||
typedef int __wchar_t;
|
||||
|
||||
#define __WCHAR_MIN __INT_MIN /* min value for a wchar_t */
|
||||
#define __WCHAR_MAX __INT_MAX /* max value for a wchar_t */
|
||||
|
||||
/*
|
||||
* Unusual type definitions.
|
||||
|
Loading…
Reference in New Issue
Block a user