Home | History | Annotate | Line # | Download | only in pa
      1 /* Definitions of target machine for GNU compiler, for HP-UX.
      2    Copyright (C) 1991-2022 Free Software Foundation, Inc.
      3 
      4 This file is part of GCC.
      5 
      6 GCC is free software; you can redistribute it and/or modify
      7 it under the terms of the GNU General Public License as published by
      8 the Free Software Foundation; either version 3, or (at your option)
      9 any later version.
     10 
     11 GCC is distributed in the hope that it will be useful,
     12 but WITHOUT ANY WARRANTY; without even the implied warranty of
     13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     14 GNU General Public License for more details.
     15 
     16 You should have received a copy of the GNU General Public License
     17 along with GCC; see the file COPYING3.  If not see
     18 <http://www.gnu.org/licenses/>.  */
     19 
     20 /* HP-UX UNIX features.  */
     21 #undef TARGET_HPUX
     22 #define TARGET_HPUX 1
     23 
     24 #undef HPUX_LONG_DOUBLE_LIBRARY
     25 #define HPUX_LONG_DOUBLE_LIBRARY 1
     26 
     27 #undef TARGET_DEFAULT
     28 #define TARGET_DEFAULT 0
     29 
     30 /* Make GCC agree with types.h.  */
     31 #undef SIZE_TYPE
     32 #undef PTRDIFF_TYPE
     33 
     34 #define SIZE_TYPE "unsigned int"
     35 #define PTRDIFF_TYPE "int"
     36 
     37 #define LONG_DOUBLE_TYPE_SIZE 128
     38 #define FLOAT_LIB_COMPARE_RETURNS_BOOL(MODE, COMPARISON) ((MODE) == TFmode)
     39 
     40 /* GCC always defines __STDC__.  HP C++ compilers don't define it.  This
     41    causes trouble when sys/stdsyms.h is included.  As a work around,
     42    we define __STDC_EXT__.  A similar situation exists with respect to
     43    the definition of __cplusplus.  We define _INCLUDE_LONGLONG
     44    to prevent nlist.h from defining __STDC_32_MODE__ (no longlong
     45    support).  */
     46 #undef TARGET_OS_CPP_BUILTINS
     47 #define TARGET_OS_CPP_BUILTINS()				\
     48   do								\
     49     {								\
     50 	builtin_assert ("system=hpux");				\
     51 	builtin_assert ("system=unix");				\
     52 	builtin_define ("__hp9000s800");			\
     53 	builtin_define ("__hp9000s800__");			\
     54 	builtin_define ("__hp9k8");				\
     55 	builtin_define ("__hp9k8__");				\
     56 	builtin_define ("__hpux");				\
     57 	builtin_define ("__hpux__");				\
     58 	builtin_define ("__unix");				\
     59 	builtin_define ("__unix__");				\
     60 	builtin_define ("__STDC_EXT__");			\
     61 	if (c_dialect_cxx ())					\
     62 	  {							\
     63 	    builtin_define ("_HPUX_SOURCE");			\
     64 	    builtin_define ("_INCLUDE_LONGLONG");		\
     65 	  }							\
     66 	else if (!flag_iso)					\
     67 	  {							\
     68 	    builtin_define ("_HPUX_SOURCE");			\
     69 	    if (preprocessing_trad_p ())			\
     70 	      {							\
     71 		builtin_define ("hp9000s800");			\
     72 		builtin_define ("hp9k8");			\
     73 		builtin_define ("hppa");			\
     74 		builtin_define ("hpux");			\
     75 		builtin_define ("unix");			\
     76 		builtin_define ("__CLASSIC_C__");		\
     77 		builtin_define ("_PWB");			\
     78 		builtin_define ("PWB");				\
     79 	      }							\
     80 	  }							\
     81 	if (TARGET_SIO)						\
     82 	  builtin_define ("_SIO");				\
     83 	else							\
     84 	  {							\
     85 	    builtin_define ("__hp9000s700");			\
     86 	    builtin_define ("__hp9000s700__");			\
     87 	    builtin_define ("_WSIO");				\
     88 	  }							\
     89     }								\
     90   while (0)
     91 
     92 /* Like the default, except no -lg.  */
     93 #undef LIB_SPEC
     94 #define LIB_SPEC "%{!shared:%{!p:%{!pg:-lc}}%{p: -L/lib/libp/ -lc}%{pg: -L/lib/libp/ -lc}}"
     95 
     96 #undef LINK_SPEC
     97 #if ((TARGET_DEFAULT | TARGET_CPU_DEFAULT) & MASK_PA_11)
     98 #define LINK_SPEC \
     99   "%{!mpa-risc-1-0:%{!march=1.0:%{static:-L/lib/pa1.1 -L/usr/lib/pa1.1 }}}%{mlinker-opt:-O} %{!shared:-u main} %{static:-a archive} %{g*:-a archive} %{shared:-b}"
    100 #else
    101 #define LINK_SPEC \
    102   "%{mlinker-opt:-O} %{!shared:-u main} %{static:-a archive} %{g*:-a archive} %{shared:-b}"
    103 #endif
    104 
    105 /* hpux11 and earlier don't have fputc_unlocked, so we must inhibit the
    106    transformation of fputs_unlocked and fprintf_unlocked to fputc_unlocked.  */
    107 #define DONT_HAVE_FPUTC_UNLOCKED
    108 
    109 /* We want the entry value of SP saved in the frame marker for
    110    compatibility with the HP-UX unwind library.  */
    111 #undef TARGET_HPUX_UNWIND_LIBRARY
    112 #define TARGET_HPUX_UNWIND_LIBRARY 1
    113 
    114 #undef TARGET_LIBC_HAS_FUNCTION
    115 #define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function
    116