diff options
Diffstat (limited to 'gcc/config/vx-common.h')
-rw-r--r-- | gcc/config/vx-common.h | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/gcc/config/vx-common.h b/gcc/config/vx-common.h new file mode 100644 index 00000000000..baa37f0e80e --- /dev/null +++ b/gcc/config/vx-common.h @@ -0,0 +1,99 @@ +/* Target-independent configuration for VxWorks and VxWorks AE. + Copyright (C) 2005 Free Software Foundation, Inc. + Contributed by by CodeSourcery, LLC. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to the Free +Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301, USA. */ + +/* VxWorks headers are C++-aware. */ +#undef NO_IMPLICIT_EXTERN_C +#define NO_IMPLICIT_EXTERN_C + +/* 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 +#undef ENDFILE_SPEC + +/* Most of these macros are overridden in "config/vxworks.h" or + "config/vxworksae.h" and are here merely for documentation + purposes. */ +#define VXWORKS_ADDITIONAL_CPP_SPEC "" +#define VXWORKS_LIB_SPEC "" +#define VXWORKS_LINK_SPEC "" +#define VXWORKS_LIBGCC_SPEC "" +#define VXWORKS_STARTFILE_SPEC "" +#define VXWORKS_ENDFILE_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 + +/* VxWorks uses wchar_t == unsigned short (UCS2) on all architectures. */ +#undef WCHAR_TYPE +#define WCHAR_TYPE "short unsigned int" +#undef WCHAR_TYPE_SIZE +#define WCHAR_TYPE_SIZE 16 + +/* Dwarf2 unwind info is not supported. */ +#define DWARF2_UNWIND_INFO 0 + +/* VxWorks uses DWARF2. */ +#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 + +/* Kernel mode doesn't have ctors/dtors, but RTP mode does. */ +#define TARGET_HAVE_CTORS_DTORS false +#define VXWORKS_OVERRIDE_OPTIONS /* empty */ + +/* No math library needed. */ +#define MATH_LIBRARY "" + +/* No profiling. */ +#define VXWORKS_FUNCTION_PROFILER(FILE, LABELNO) do \ +{ \ + sorry ("profiler support for VxWorks"); \ +} while (0) + +/* This section either contains dynamic relocations, or contains + PC-rel indirections to stubs in the data section which contain dynamic + relocations. General dynamic relocations are not processed + for shared libraries' text segments, and PC-relative displacements + from the text segment to the data segment don't work. So force + it to .gcc_except_section, which the linker will place in .data. */ + +void vxworks_exception_section (void); +#undef TARGET_ASM_EXCEPTION_SECTION +#define TARGET_ASM_EXCEPTION_SECTION default_exception_section + +/* We occasionally need to distinguish between the VxWorks variants. */ +#define VXWORKS_KIND_NORMAL 1 +#define VXWORKS_KIND_AE 2 |