]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/config/vx-common.h
Update copyright years.
[thirdparty/gcc.git] / gcc / config / vx-common.h
index 68fbcbd3befdc2de672e24fd2c6a464e4af185b6..7dd4dee536eca2908a93986389c8db802d52c1ad 100644 (file)
@@ -1,5 +1,5 @@
 /* Target-independent configuration for VxWorks and VxWorks AE.   
-   Copyright (C) 2005-2017 Free Software Foundation, Inc.
+   Copyright (C) 2005-2021 Free Software Foundation, Inc.
    Contributed by CodeSourcery, LLC.
 
 This file is part of GCC.
@@ -18,15 +18,11 @@ You should have received a copy of the GNU General Public License
 along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
-/* VxWorks headers are C++-aware.  */
-#undef  NO_IMPLICIT_EXTERN_C
-#define NO_IMPLICIT_EXTERN_C
+/* ------------------------- Common SPEC strings -------------------------  */
 
 /* Most of these will probably be overridden by subsequent headers.  We
    undefine them here just in case, and define VXWORKS_ versions of each,
    to be used in port-specific vxworks.h.  */
-#undef LIB_SPEC
-#undef LINK_SPEC
 #undef LIBGCC_SPEC
 #define LIBGCC_SPEC VXWORKS_LIBGCC_SPEC
 #undef STARTFILE_SPEC
@@ -41,41 +37,75 @@ along with GCC; see the file COPYING3.  If not see
 #define VXWORKS_LIBGCC_SPEC ""
 #define        VXWORKS_STARTFILE_SPEC ""
 #define VXWORKS_ENDFILE_SPEC ""
+#define VXWORKS_CC1_SPEC ""
 
-/* VxWorks cannot have dots in constructor labels, because it uses a
-   mutant variation of collect2 that generates C code instead of
-   assembly.  Thus each constructor label must be a legitimate C
-   symbol.  FIXME: Have VxWorks use real collect2 instead.  */
-#undef NO_DOLLAR_IN_LABEL
-#define NO_DOT_IN_LABEL
+/* ----------------------- 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"
-#undef WINT_TYPE_SIZE
-#define WINT_TYPE_SIZE 16
+#endif
 
-/* Dwarf2 unwind info is not supported.  */
+/* 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 WCHAR_TYPE_SIZE
+#undef WINT_TYPE
+#define WINT_TYPE WCHAR_TYPE
+
+/* ---------------------- Debug and unwind info formats ------------------  */
+
+/* Dwarf2 unwind info is supported, unless overriden by a request for a target
+   specific format.
+
+   Taking care of this here allows using DWARF2_UNWIND_INFO in #if conditions
+   from the common config/vxworks.h files, included before the cpu
+   specializations.  Unlike with conditions used in C expressions, where the
+   definitions which matter are those at the expression expansion point, use
+   in #if constructs requires an accurate definition of the operands at the
+   #if point.  Since <cpu>/vxworks.h. is typically included after
+   config/vxworks.h, #if expressions in the latter can't rely on possible
+   redefinitions in the former.  */
+#if !ARM_UNWIND_INFO
 #undef DWARF2_UNWIND_INFO
-#define DWARF2_UNWIND_INFO 0
+#define DWARF2_UNWIND_INFO 1
+#endif
 
-/* VxWorks uses DWARF2.  */
+/* VxWorks uses DWARF2 debugging info.  */
 #define DWARF2_DEBUGGING_INFO 1
 #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
 
 /* None of these other formats is supported.  */
-#undef DWARF_DEBUGGING_INFO
 #undef DBX_DEBUGGING_INFO
-#undef SDB_DEBUGGING_INFO
 #undef XCOFF_DEBUGGING_INFO
 #undef VMS_DEBUGGING_INFO
 
+/* ------------------------ Misc configuration bits ----------------------  */
+
+#ifndef TARGET_VXWORKS7
+/* VxWorks, prior to version 7, could not have dots in constructor
+   labels, because it used a mutant variation of collect2 that
+   generates C code instead of assembly.  Thus each constructor label
+   had to be a legitimate C symbol.  */
+# undef NO_DOLLAR_IN_LABEL
+# define NO_DOT_IN_LABEL
+#endif
+
 /* Kernel mode doesn't have ctors/dtors, but RTP mode does.  */
 #define TARGET_HAVE_CTORS_DTORS false
 #define VXWORKS_OVERRIDE_OPTIONS /* empty */