Home | History | Annotate | Line # | Download | only in i386
      1 /* Common definitions for Intel 386 and AMD x86-64 systems using
      2    GNU userspace.  Copyright (C) 2012-2022 Free Software Foundation, Inc.
      3    Contributed by Ilya Enkovich.
      4 
      5 This file is part of GCC.
      6 
      7 GCC is free software; you can redistribute it and/or modify
      8 it under the terms of the GNU General Public License as published by
      9 the Free Software Foundation; either version 3, or (at your option)
     10 any later version.
     11 
     12 GCC is distributed in the hope that it will be useful,
     13 but WITHOUT ANY WARRANTY; without even the implied warranty of
     14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15 GNU General Public License 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 /* The svr4 ABI for the i386 says that records and unions are returned
     22    in memory.  In the 64bit compilation we will turn this flag off in
     23    ix86_option_override_internal, as we never do pcc_struct_return
     24    scheme on this target.  */
     25 #undef DEFAULT_PCC_STRUCT_RETURN
     26 #define DEFAULT_PCC_STRUCT_RETURN 1
     27 
     28 /* We arrange for the whole %fs segment to map the tls area.  */
     29 #undef TARGET_TLS_DIRECT_SEG_REFS_DEFAULT
     30 #define TARGET_TLS_DIRECT_SEG_REFS_DEFAULT MASK_TLS_DIRECT_SEG_REFS
     31 
     32 #define TARGET_OS_CPP_BUILTINS()				\
     33   do								\
     34     {								\
     35 	GNU_USER_TARGET_OS_CPP_BUILTINS();			\
     36     }								\
     37   while (0)
     38 
     39 #undef CPP_SPEC
     40 #define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
     41 
     42 #undef GNU_USER_TARGET_CC1_SPEC
     43 #define GNU_USER_TARGET_CC1_SPEC "%(cc1_cpu) %{profile:-p}"
     44 
     45 #undef CC1_SPEC
     46 #define CC1_SPEC GNU_USER_TARGET_CC1_SPEC
     47 
     48 /* Similar to standard GNU userspace, but adding -ffast-math support.  */
     49 #define GNU_USER_TARGET_MATHFILE_SPEC \
     50   "%{mdaz-ftz:crtfastmath.o%s;Ofast|ffast-math|funsafe-math-optimizations:%{!mno-daz-ftz:crtfastmath.o%s}} \
     51    %{mpc32:crtprec32.o%s} \
     52    %{mpc64:crtprec64.o%s} \
     53    %{mpc80:crtprec80.o%s}"
     54 
     55 #undef  ENDFILE_SPEC
     56 #define ENDFILE_SPEC \
     57   GNU_USER_TARGET_MATHFILE_SPEC " " \
     58   GNU_USER_TARGET_ENDFILE_SPEC
     59 
     60 #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
     61 
     62 /* The stack pointer needs to be moved while checking the stack.  */
     63 #define STACK_CHECK_MOVING_SP 1
     64 
     65 /* Static stack checking is supported by means of probes.  */
     66 #define STACK_CHECK_STATIC_BUILTIN 1
     67 
     68 /* We only build the -fsplit-stack support in libgcc if the
     69    assembler has full support for the CFI directives.  */
     70 #if HAVE_GAS_CFI_PERSONALITY_DIRECTIVE
     71 #define TARGET_CAN_SPLIT_STACK
     72 #endif
     73