1  /* Configuration for an OpenBSD i386 target.
       2     
       3     Copyright (C) 2005-2023 Free Software Foundation, Inc.
       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  #define TARGET_OS_CPP_BUILTINS()		\
      22    do						\
      23      {						\
      24      	OPENBSD_OS_CPP_BUILTINS();		\
      25      }						\
      26    while (0)
      27  
      28  #undef DEBUGGER_REGNO
      29  #define DEBUGGER_REGNO(n) \
      30    (TARGET_64BIT ? debugger64_register_map[n] : svr4_debugger_register_map[n])
      31  
      32  /* This must agree with <machine/_types.h>.  */
      33  #undef SIZE_TYPE
      34  #define SIZE_TYPE "long unsigned int"
      35  
      36  #undef PTRDIFF_TYPE
      37  #define PTRDIFF_TYPE "long int"
      38  
      39  #undef WCHAR_TYPE
      40  #define WCHAR_TYPE "int"
      41  
      42  #undef WCHAR_TYPE_SIZE
      43  #define WCHAR_TYPE_SIZE 32
      44  
      45  #undef WINT_TYPE
      46  #define WINT_TYPE "int"
      47  
      48  /* Don't default to pcc-struct-return, because gcc is the only compiler, and
      49     we want to retain compatibility with older gcc versions.  */
      50  
      51  #undef DEFAULT_PCC_STRUCT_RETURN
      52  #define DEFAULT_PCC_STRUCT_RETURN 0
      53  
      54  /* Override the default comment-starter of "/".  */
      55  #undef ASM_COMMENT_START
      56  #define ASM_COMMENT_START "#"
      57  
      58  #undef ASM_APP_ON
      59  #define ASM_APP_ON "#APP\n"
      60  
      61  #undef ASM_APP_OFF
      62  #define ASM_APP_OFF "#NO_APP\n"
      63  
      64  #define SUBALIGN_LOG 3
      65  
      66  /* OpenBSD's profiler recovers all information from the stack pointer.
      67     The icky part is not here, but in <machine/profile.h>.  */
      68  #undef FUNCTION_PROFILER
      69  #define FUNCTION_PROFILER(FILE, LABELNO)  \
      70    fputs (flag_pic ? "\tcall __mcount@PLT\n": "\tcall __mcount\n", FILE);
      71  
      72  #undef LINK_SPEC
      73  #define LINK_SPEC \
      74    "%{!shared:%{!nostdlib:%{!r:%{!e*:-e __start}}}} \
      75     %{shared:-shared} %{R*} \
      76     %{static:-Bstatic} \
      77     %{!static:-Bdynamic} \
      78     %{assert*} \
      79     -dynamic-linker /usr/libexec/ld.so"
      80  
      81  #undef STARTFILE_SPEC
      82  #define STARTFILE_SPEC "\
      83  	%{!shared: %{pg:gcrt0%O%s} %{!pg:%{p:gcrt0%O%s} %{!p:crt0%O%s}} \
      84  	crtbegin%O%s} %{shared:crtbeginS%O%s}"
      85  
      86  #undef ENDFILE_SPEC
      87  #define ENDFILE_SPEC "%{!shared:crtend%O%s} %{shared:crtendS%O%s}"
      88  
      89  #define OBSD_HAS_CORRECT_SPECS
      90  
      91  #define HAVE_ENABLE_EXECUTE_STACK