Refine definitions for wchar_t/wint_t on VxWorks

This change refines the VxWorks macro definitions configuring
wchar_t to accommodate the VxWorks7 environment, where wchar_t
is now typically a 32bit type.

We also ensure that the definitions for wint_t are always based
on those for wchar_t, so the two remain in sync in environments
where WCHAR_TYPE is redefined for a specific CPU architecture.

2019-12-30  Alexandre Oliva  <oliva@adacore.com>
           Olivier Hainque  <hainque@adacore.com>

	* config/vx-common.h (WCHAR_TYPE_SIZE): 32 on VxWorks 7.
	(WCHAR_TYPE): Pick accordingly.
	(WINT_TYPE_SIZE): Define in terms of WCHAR_TYPE_SIZE.
	(WINT_TYPE): Define in terms of WCHAR_TYPE.

Co-Authored-By: Olivier Hainque <hainque@adacore.com>

From-SVN: r279780
This commit is contained in:
Alexandre Oliva
2019-12-30 21:34:35 +00:00
committed by Olivier Hainque
parent 4e6bcaa662
commit 1361ae0e76
2 changed files with 29 additions and 6 deletions

View File

@@ -1,3 +1,11 @@
2019-12-30 Alexandre Oliva <oliva@adacore.com>
Olivier Hainque <hainque@adacore.com>
* config/vx-common.h (WCHAR_TYPE_SIZE): 32 on VxWorks 7.
(WCHAR_TYPE): Pick accordingly.
(WINT_TYPE_SIZE): Define in terms of WCHAR_TYPE_SIZE.
(WINT_TYPE): Define in terms of WCHAR_TYPE.
2019-12-30 Olivier Hainque <hainque@adacore.com>
* config/vx-common.h: Minor reorganization and add

View File

@@ -43,17 +43,32 @@ along with GCC; see the file COPYING3. If not see
/* ----------------------- Common type descriptions ----------------------- */
/* VxWorks uses wchar_t == unsigned short (UCS2) on all architectures. */
/* Regardless of the target architecture, VxWorks uses a signed 32bit
integer for wchar_t starting with vx7 SR06xx. An unsigned short
otherwise. */
#if TARGET_VXWORKS7
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE 32
#undef WCHAR_TYPE
#define WCHAR_TYPE "short unsigned int"
#define WCHAR_TYPE (TARGET_VXWORKS64 ? "int" : "long int")
#else
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE 16
#undef WCHAR_TYPE
#define WCHAR_TYPE "short unsigned int"
/* Likewise wint_t. */
#undef WINT_TYPE
#define WINT_TYPE "short unsigned int"
#endif
/* The VxWorks headers base wint_t on the definitions used for wchar_t.
Do the same here to make sure they remain in sync, in case WCHAR_TYPE
gets redefined for a specific CPU architecture. */
#undef WINT_TYPE_SIZE
#define WINT_TYPE_SIZE 16
#define WINT_TYPE_SIZE WCHAR_TYPE_SIZE
#undef WINT_TYPE
#define WINT_TYPE WCHAR_TYPE
/* ---------------------- Debug and unwind info formats ------------------ */