123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- /* Definitions for GCC. Part of the machine description for CRIS.
- Copyright (C) 2001-2015 Free Software Foundation, Inc.
- Contributed by Axis Communications. Written by Hans-Peter Nilsson.
- 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 3, 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 COPYING3. If not see
- <http://www.gnu.org/licenses/>. */
- /* After the first "Node:" comment comes all preprocessor directives and
- attached declarations described in the info files, the "Using and
- Porting GCC" manual (uapgcc), in the same order as found in the "Target
- macros" section in the gcc-2.9x CVS edition of 2000-03-17. FIXME: Not
- really, but needs an update anyway.
- There is no generic copy-of-uapgcc comment, you'll have to see uapgcc
- for that. If applicable, there is a CRIS-specific comment. The order
- of macro definitions follow the order in the manual. Every section in
- the manual (node in the info pages) has an introductory `Node:
- <subchapter>' comment. If no macros are defined for a section, only
- the section-comment is present. */
- /* This file defines the macros for cris-axis-linux-gnu that are not
- covered by cris.h, elfos.h and (config/)linux.h. */
- /* Make sure we have a valid TARGET_CPU_DEFAULT, so we can assume it
- and take shortcuts below. */
- #ifndef TARGET_CPU_DEFAULT
- #error "TARGET_CPU_DEFAULT not defined"
- #elif (TARGET_CPU_DEFAULT+0) != 10 && (TARGET_CPU_DEFAULT+0) != 32
- #error "TARGET_CPU_DEFAULT must be 10 or 32, or this file be updated"
- #endif
- /* Node: Instruction Output */
- #undef USER_LABEL_PREFIX
- #define USER_LABEL_PREFIX ""
- /* Node: Driver */
- /* These macros are CRIS-specific, but used in target driver macros. */
- #undef CRIS_CPP_SUBTARGET_SPEC
- #if TARGET_CPU_DEFAULT == 32
- # define CRIS_CPP_SUBTARGET_SPEC \
- "%{pthread:-D_REENTRANT}\
- %{!march=*:%{!mcpu=*:-D__arch_v32 -D__CRIS_arch_version=32}}"
- #else
- # define CRIS_CPP_SUBTARGET_SPEC \
- "%{pthread:-D_REENTRANT}\
- %{!march=*:%{!mcpu=*:-D__arch_v10 -D__CRIS_arch_version=10}}"
- #endif
- #undef CRIS_CC1_SUBTARGET_SPEC
- #if TARGET_CPU_DEFAULT == 32
- # define CRIS_CC1_SUBTARGET_SPEC \
- "%{!march=*:%{!mcpu=*:-march=v32}}"
- #define CRIS_SUBTARGET_DEFAULT_ARCH MASK_AVOID_GOTPLT
- #else
- # define CRIS_CC1_SUBTARGET_SPEC \
- "%{!march=*:%{!mcpu=*:-march=v10}}"
- #define CRIS_SUBTARGET_DEFAULT_ARCH 0
- #endif
- #undef CRIS_ASM_SUBTARGET_SPEC
- #if TARGET_CPU_DEFAULT == 32
- # define CRIS_ASM_SUBTARGET_SPEC \
- "--em=criself \
- %{!march=*:%{!mcpu=*:--march=v32}} \
- %{!fleading-underscore:--no-underscore}\
- %{fPIC|fpic|fPIE|fpie: --pic}"
- #else
- # define CRIS_ASM_SUBTARGET_SPEC \
- "--em=criself \
- %{!march=*:%{!mcpu=*:--march=v10}} \
- %{!fleading-underscore:--no-underscore}\
- %{fPIC|fpic|fPIE|fpie: --pic}"
- #endif
- /* Previously controlled by target_flags. */
- #undef TARGET_LINUX
- #define TARGET_LINUX 1
- #undef CRIS_SUBTARGET_DEFAULT
- #define CRIS_SUBTARGET_DEFAULT \
- (MASK_SVINTO \
- + MASK_ETRAX4_ADD \
- + MASK_ALIGN_BY_32 \
- + CRIS_SUBTARGET_DEFAULT_ARCH)
- #undef CRIS_DEFAULT_CPU_VERSION
- #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG
- #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
- #undef CRIS_LINK_SUBTARGET_SPEC
- #define CRIS_LINK_SUBTARGET_SPEC \
- "-mcrislinux\
- %{shared} %{static}\
- %{symbolic:-Bdynamic} %{static:-Bstatic}\
- %{!shared:%{!static:\
- %{rdynamic:-export-dynamic}\
- -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}\
- %{!r:%{O2|O3: --gc-sections}}"
- /* Node: Run-time Target */
- /* For the cris-*-linux* subtarget. */
- #undef TARGET_OS_CPP_BUILTINS
- #define TARGET_OS_CPP_BUILTINS() \
- do \
- { \
- GNU_USER_TARGET_OS_CPP_BUILTINS(); \
- if (flag_leading_underscore <= 0) \
- builtin_define ("__NO_UNDERSCORES__"); \
- } \
- while (0)
- /* Node: Type Layout */
-
- #undef SIZE_TYPE
- #define SIZE_TYPE "unsigned int"
- #undef PTRDIFF_TYPE
- #define PTRDIFF_TYPE "int"
- /* Node: Sections */
- /* GNU/Linux has crti and crtn and does not need the
- CRT_CALL_STATIC_FUNCTION trick in cris.h. */
- #undef CRT_CALL_STATIC_FUNCTION
- /*
- * Local variables:
- * eval: (c-set-style "gnu")
- * indent-tabs-mode: t
- * End:
- */
|