Refine definitions for wchar_t/wint_t on VxWorks
diff mbox series

Message ID
State New
Headers show
  • Refine definitions for wchar_t/wint_t on VxWorks
Related show

Commit Message

Olivier Hainque Dec. 13, 2019, 4:04 p.m. UTC
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.

The patch posted here is a minor variation on a change initially
devised by Alexandre, just moved to an even more common place where
other type related definitions are.

Tested in accordance with the description in

Committing to mainline.


2019-12-13  Alexandre Oliva  <>
            Olivier Hainque  <>

	* 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.
gcc/config/vx-common.h | 27 +++++++++++++++++++++------
 1 file changed, 21 insertions(+), 6 deletions(-)

diff mbox series

diff --git a/gcc/config/vx-common.h b/gcc/config/vx-common.h
index ed3e4254e77..594db5122ac 100644
--- a/gcc/config/vx-common.h
+++ b/gcc/config/vx-common.h
@@ -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.  */
+#define WCHAR_TYPE_SIZE 32
 #undef WCHAR_TYPE
-#define WCHAR_TYPE "short unsigned int"
+#define WCHAR_TYPE (TARGET_VXWORKS64 ? "int" : "long int")
 #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"
+/* 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.  */
-#define WINT_TYPE_SIZE 16
+#undef WINT_TYPE
 /* ---------------------- Debug and unwind info formats ------------------  */