aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Oliva <oliva@adacore.com>2025-07-05 00:58:02 -0300
committerAlexandre Oliva <oliva@gnu.org>2025-07-05 00:58:02 -0300
commit6c472b330ac4fc0dfbc9cf985e08923abc5bd530 (patch)
tree027b247b3de57772b2db3bf33fee5d240077c881
parenta90b869d386d51eee743598dfb08469db619ef57 (diff)
downloadgcc-trunk.zip
gcc-trunk.tar.gz
gcc-trunk.tar.bz2
[vxworks] [ppc] match TARGET_VXWORKS64 to TARGET_64BITHEADtrunkmaster
Configuring gcc for --target=powerpc-wrs-vxworks7r2 sets things up for a 64-bit compiler, just like powerpc64-wrs-vxworks7r2, except that TARGET_VXWORKS64 is only defined as 1 for targets that match *64-*-vxworks*. With !TARGET_VXWORKS64, we get a 64-bit toolchain that defines SIZE_TYPE, PTRDIFF_TYPE, and WCHAR_TYPE as 32-bit types, and that breaks GCC passes that expect SIZE_TYPE and PTRDIFF_TYPE to be as wide as pointers. Arrange for TARGET_VXWORKS64 on ppc to match TARGET_64BIT, after using it to select the default word size with driver self specs. for gcc/ChangeLog * config/rs6000/vxworks.h (SUBTARGET_DRIVER_SELF_SPECS): Redefine to select word size matching TARGET_VXWORKS64. (TARGET_VXWORKS64): Redefine in terms of TARGET_64BIT.
-rw-r--r--gcc/config/rs6000/vxworks.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/gcc/config/rs6000/vxworks.h b/gcc/config/rs6000/vxworks.h
index fa2c837b..e77247b 100644
--- a/gcc/config/rs6000/vxworks.h
+++ b/gcc/config/rs6000/vxworks.h
@@ -34,6 +34,21 @@ along with GCC; see the file COPYING3. If not see
/* Common definitions first. */
/*-------------------------------------------------------------*/
+/* Default to 64 bits when the target is powerpc64*-wrs-vxworks*,
+ and to 32 bits otherwise. */
+#undef SUBTARGET_DRIVER_SELF_SPECS
+#if TARGET_VXWORKS64
+#define SUBTARGET_DRIVER_SELF_SPECS "%{!m64:%{!m32:-m64}}"
+#else
+#define SUBTARGET_DRIVER_SELF_SPECS "%{!m32:%{!m64:-m32}}"
+#endif
+
+/* Having used the build-time TARGET_VXWORKS64 to choose the default ABI above,
+ redefine it so that it matches whichever ABI is selected for each
+ compilation. */
+#undef TARGET_VXWORKS64
+#define TARGET_VXWORKS64 TARGET_64BIT
+
/* CPP predefined macros. */
#undef TARGET_OS_CPP_BUILTINS