Home | History | Annotate | Line # | Download | only in config
      1 /* Target-independent configuration for VxWorks and VxWorks AE.
      2    Copyright (C) 2005-2022 Free Software Foundation, Inc.
      3    Contributed by CodeSourcery, LLC.
      4 
      5 This file is part of GCC.
      6 
      7 GCC is free software; you can redistribute it and/or modify it under
      8 the terms of the GNU General Public License as published by the Free
      9 Software Foundation; either version 3, or (at your option) any later
     10 version.
     11 
     12 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
     13 WARRANTY; without even the implied warranty of MERCHANTABILITY or
     14 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
     15 for more details.
     16 
     17 You should have received a copy of the GNU General Public License
     18 along with GCC; see the file COPYING3.  If not see
     19 <http://www.gnu.org/licenses/>.  */
     20 
     21 /* ------------------------- Common SPEC strings -------------------------  */
     22 
     23 /* Most of these will probably be overridden by subsequent headers.  We
     24    undefine them here just in case, and define VXWORKS_ versions of each,
     25    to be used in port-specific vxworks.h.  */
     26 
     27 /* REAL_LIBGCC_SPEC needs to be used since the non-static option is not
     28    handled in gcc.cc.  */
     29 #undef REAL_LIBGCC_SPEC
     30 #define REAL_LIBGCC_SPEC VXWORKS_LIBGCC_SPEC
     31 #undef STARTFILE_SPEC
     32 #undef ENDFILE_SPEC
     33 
     34 /* Most of these macros are overridden in "config/vxworks.h" or
     35    "config/vxworksae.h" and are here merely for documentation
     36    purposes.  */
     37 #define VXWORKS_ADDITIONAL_CPP_SPEC ""
     38 #define	VXWORKS_LIB_SPEC ""
     39 #define VXWORKS_LINK_SPEC ""
     40 #define VXWORKS_LIBGCC_SPEC ""
     41 #define	VXWORKS_STARTFILE_SPEC ""
     42 #define VXWORKS_ENDFILE_SPEC ""
     43 #define VXWORKS_CC1_SPEC ""
     44 
     45 /* ----------------------- Common type descriptions -----------------------  */
     46 
     47 /* Regardless of the target architecture, VxWorks uses a signed 32bit
     48    integer for wchar_t starting with vx7 SR06xx.  An unsigned short
     49    otherwise.  */
     50 #if TARGET_VXWORKS7
     51 
     52 #undef WCHAR_TYPE_SIZE
     53 #define WCHAR_TYPE_SIZE 32
     54 #undef WCHAR_TYPE
     55 #define WCHAR_TYPE (TARGET_VXWORKS64 ? "int" : "long int")
     56 
     57 #else
     58 
     59 #undef WCHAR_TYPE_SIZE
     60 #define WCHAR_TYPE_SIZE 16
     61 #undef WCHAR_TYPE
     62 #define WCHAR_TYPE "short unsigned int"
     63 
     64 #endif
     65 
     66 /* The VxWorks headers base wint_t on the definitions used for wchar_t.
     67    Do the same here to make sure they remain in sync, in case WCHAR_TYPE
     68    gets redefined for a specific CPU architecture.  */
     69 #undef WINT_TYPE_SIZE
     70 #define WINT_TYPE_SIZE WCHAR_TYPE_SIZE
     71 #undef WINT_TYPE
     72 #define WINT_TYPE WCHAR_TYPE
     73 
     74 /* ---------------------- Debug and unwind info formats ------------------  */
     75 
     76 /* Dwarf2 unwind info is supported, unless overriden by a request for a target
     77    specific format.
     78 
     79    Taking care of this here allows using DWARF2_UNWIND_INFO in #if conditions
     80    from the common config/vxworks.h files, included before the cpu
     81    specializations.  Unlike with conditions used in C expressions, where the
     82    definitions which matter are those at the expression expansion point, use
     83    in #if constructs requires an accurate definition of the operands at the
     84    #if point.  Since <cpu>/vxworks.h. is typically included after
     85    config/vxworks.h, #if expressions in the latter can't rely on possible
     86    redefinitions in the former.  */
     87 #if !ARM_UNWIND_INFO
     88 #undef DWARF2_UNWIND_INFO
     89 #define DWARF2_UNWIND_INFO 1
     90 #endif
     91 
     92 /* VxWorks uses DWARF2 debugging info.  */
     93 #define DWARF2_DEBUGGING_INFO 1
     94 #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
     95 
     96 /* None of these other formats is supported.  */
     97 #undef DBX_DEBUGGING_INFO
     98 #undef XCOFF_DEBUGGING_INFO
     99 #undef VMS_DEBUGGING_INFO
    100 
    101 /* ------------------------ Misc configuration bits ----------------------  */
    102 
    103 #if !TARGET_VXWORKS7
    104 /* VxWorks, prior to version 7, could not have dots in constructor
    105    labels, because it used a mutant variation of collect2 that
    106    generates C code instead of assembly.  Thus each constructor label
    107    had to be a legitimate C symbol.  */
    108 # undef NO_DOLLAR_IN_LABEL
    109 # define NO_DOT_IN_LABEL
    110 #endif
    111 
    112 /* Kernel mode doesn't have ctors/dtors, but RTP mode does.  */
    113 #define TARGET_HAVE_CTORS_DTORS false
    114 #define VXWORKS_OVERRIDE_OPTIONS /* empty */
    115 
    116 /* No math library needed.  */
    117 #define MATH_LIBRARY ""
    118 
    119 /* No profiling.  */
    120 #define VXWORKS_FUNCTION_PROFILER(FILE, LABELNO) do	\
    121 {							\
    122   sorry ("profiler support for VxWorks");		\
    123 } while (0)
    124 
    125 /* We occasionally need to distinguish between the VxWorks variants.  */
    126 #define VXWORKS_KIND_NORMAL  1
    127 #define VXWORKS_KIND_AE      2
    128