xref: /netbsd-src/external/gpl3/gcc.old/dist/gcc/config/pa/pa-hpux.h (revision 8feb0f0b7eaff0608f8350bbfa3098827b4bb91b)
1 /* Definitions of target machine for GNU compiler, for HP-UX.
2    Copyright (C) 1991-2020 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