]>
Commit | Line | Data |
---|---|---|
c8b793cf | 1 | /* Definitions of target machine for GNU compiler, |
2 | for IBM RS/6000 POWER running AIX V5. | |
f1717362 | 3 | Copyright (C) 2001-2016 Free Software Foundation, Inc. |
c8b793cf | 4 | Contributed by David Edelsohn (edelsohn@gnu.org). |
5 | ||
3a5a28e2 | 6 | This file is part of GCC. |
7 | ||
8 | GCC is free software; you can redistribute it and/or modify it | |
9 | under the terms of the GNU General Public License as published | |
038d1e19 | 10 | by the Free Software Foundation; either version 3, or (at your |
3a5a28e2 | 11 | option) any later version. |
12 | ||
13 | GCC is distributed in the hope that it will be useful, but WITHOUT | |
14 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | |
15 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public | |
16 | License for more details. | |
17 | ||
18 | You should have received a copy of the GNU General Public License | |
038d1e19 | 19 | along with GCC; see the file COPYING3. If not see |
20 | <http://www.gnu.org/licenses/>. */ | |
c8b793cf | 21 | |
4c834714 | 22 | /* The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to |
23 | get control in TARGET_OPTION_OVERRIDE. */ | |
c8b793cf | 24 | |
c8b793cf | 25 | #define SUBTARGET_OVERRIDE_OPTIONS \ |
26 | do { \ | |
c8b793cf | 27 | if (TARGET_64BIT && ! TARGET_POWERPC64) \ |
28 | { \ | |
62b54165 | 29 | rs6000_isa_flags |= OPTION_MASK_POWERPC64; \ |
c3ceba8e | 30 | warning (0, "-maix64 requires PowerPC64 architecture remain enabled"); \ |
c8b793cf | 31 | } \ |
32 | if (TARGET_POWERPC64 && ! TARGET_64BIT) \ | |
33 | { \ | |
68435912 | 34 | error ("-maix64 required: 64-bit computation with 32-bit addressing not yet supported"); \ |
c8b793cf | 35 | } \ |
36 | } while (0); | |
37 | ||
38 | #undef ASM_SPEC | |
82a5e7ab | 39 | #define ASM_SPEC "-u %{maix64:-a64 %{!mcpu*:-mppc64}} %(asm_cpu)" |
c8b793cf | 40 | |
ec065129 | 41 | /* Common ASM definitions used by ASM_SPEC amongst the various targets |
c8b793cf | 42 | for handling -mcpu=xxx switches. */ |
43 | #undef ASM_CPU_SPEC | |
44 | #define ASM_CPU_SPEC \ | |
45 | "%{!mcpu*: %{!maix64: \ | |
6869cd07 | 46 | %{!mpowerpc64: %(asm_default)} \ |
34c34d94 | 47 | %{mpowerpc64: -mppc64}}} \ |
82a5e7ab | 48 | %{mcpu=power3: -m620} \ |
49 | %{mcpu=power4: -m620} \ | |
c8b793cf | 50 | %{mcpu=powerpc: -mppc} \ |
c8b793cf | 51 | %{mcpu=rs64a: -mppc} \ |
c8b793cf | 52 | %{mcpu=601: -m601} \ |
53 | %{mcpu=602: -mppc} \ | |
54 | %{mcpu=603: -m603} \ | |
55 | %{mcpu=603e: -m603} \ | |
56 | %{mcpu=604: -m604} \ | |
57 | %{mcpu=604e: -m604} \ | |
82a5e7ab | 58 | %{mcpu=620: -m620} \ |
194e2eb4 | 59 | %{mcpu=630: -m620} \ |
60 | %{mcpu=970: -m620} \ | |
61 | %{mcpu=G5: -m620}" | |
c8b793cf | 62 | |
63 | #undef ASM_DEFAULT_SPEC | |
34c34d94 | 64 | #define ASM_DEFAULT_SPEC "-mppc" |
c8b793cf | 65 | |
5b2c8acb | 66 | #undef TARGET_OS_CPP_BUILTINS |
26efa80d | 67 | #define TARGET_OS_CPP_BUILTINS() \ |
68 | do \ | |
69 | { \ | |
70 | builtin_define ("_AIX43"); \ | |
71 | builtin_define ("_AIX51"); \ | |
72 | TARGET_OS_AIX_CPP_BUILTINS (); \ | |
73 | } \ | |
5b2c8acb | 74 | while (0) |
c8b793cf | 75 | |
76 | #undef CPP_SPEC | |
574006c3 | 77 | #define CPP_SPEC "%{posix: -D_POSIX_SOURCE} \ |
78 | %{ansi: -D_ANSI_C_SOURCE} \ | |
79 | %{maix64: -D__64BIT__} \ | |
5b69e2e1 | 80 | %{mpe: -I%R/usr/lpp/ppe.poe/include} \ |
b2d381e8 | 81 | %{pthread: -D_THREAD_SAFE}" |
c8b793cf | 82 | |
4779f4fe | 83 | /* The GNU C++ standard library requires that these macros be |
84 | defined. */ | |
85 | #undef CPLUSPLUS_CPP_SPEC | |
574006c3 | 86 | #define CPLUSPLUS_CPP_SPEC \ |
2cf1428a | 87 | "-D_ALL_SOURCE \ |
574006c3 | 88 | %{maix64: -D__64BIT__} \ |
5b69e2e1 | 89 | %{mpe: -I%R/usr/lpp/ppe.poe/include} \ |
b2d381e8 | 90 | %{pthread: -D_THREAD_SAFE}" |
c8b793cf | 91 | |
92 | #undef TARGET_DEFAULT | |
4ff70f1c | 93 | #define TARGET_DEFAULT 0 |
c8b793cf | 94 | |
95 | #undef PROCESSOR_DEFAULT | |
72943b59 | 96 | #define PROCESSOR_DEFAULT PROCESSOR_PPC604e |
c8b793cf | 97 | |
d4115f8c | 98 | /* AIX does not support Altivec. */ |
99 | #undef TARGET_ALTIVEC | |
100 | #define TARGET_ALTIVEC 0 | |
101 | #undef TARGET_ALTIVEC_ABI | |
102 | #define TARGET_ALTIVEC_ABI 0 | |
103 | ||
c8b793cf | 104 | /* Define this macro as a C expression for the initializer of an |
105 | array of string to tell the driver program which options are | |
106 | defaults for this target and thus do not need to be handled | |
107 | specially when using `MULTILIB_OPTIONS'. | |
108 | ||
109 | Do not define this macro if `MULTILIB_OPTIONS' is not defined in | |
110 | the target makefile fragment or if none of the options listed in | |
111 | `MULTILIB_OPTIONS' are set by default. *Note Target Fragment::. */ | |
112 | ||
113 | #undef MULTILIB_DEFAULTS | |
114 | #define MULTILIB_DEFAULTS { "mcpu=common" } | |
115 | ||
116 | #undef LIB_SPEC | |
5b69e2e1 | 117 | #define LIB_SPEC "%{pg:-L%R/lib/profiled -L%R/usr/lib/profiled}\ |
118 | %{p:-L%R/lib/profiled -L%R/usr/lib/profiled}\ | |
c8b793cf | 119 | %{!maix64:%{!shared:%{g*:-lg}}}\ |
5b69e2e1 | 120 | %{mpe:-L%R/usr/lpp/ppe.poe/lib -lmpi -lvtd}\ |
c8b793cf | 121 | %{pthread:-lpthreads} -lc" |
122 | ||
123 | #undef LINK_SPEC | |
55ab015f | 124 | #define LINK_SPEC "-bpT:0x10000000 -bpD:0x20000000 %{!r:-btextro}\ |
c8b793cf | 125 | %{static:-bnso %(link_syscalls) } %{shared:-bM:SRE %{!e:-bnoentry}}\ |
17fb2af4 | 126 | %{!maix64:%{!shared:%{g*: %(link_libg) }}} %{maix64:-b64}\ |
127 | %{mpe:-binitfini:poe_remote_main}" | |
c8b793cf | 128 | |
129 | #undef STARTFILE_SPEC | |
130 | #define STARTFILE_SPEC "%{!shared:\ | |
17fb2af4 | 131 | %{maix64:%{pg:gcrt0_64%O%s}%{!pg:%{p:mcrt0_64%O%s}%{!p:crt0_64%O%s}}}\ |
132 | %{!maix64:\ | |
133 | %{pthread:%{pg:gcrt0_r%O%s}%{!pg:%{p:mcrt0_r%O%s}%{!p:crt0_r%O%s}}}\ | |
134 | %{!pthread:%{pg:gcrt0%O%s}%{!pg:%{p:mcrt0%O%s}%{!p:crt0%O%s}}}}}" | |
c8b793cf | 135 | |
136 | /* AIX V5 typedefs ptrdiff_t as "long" while earlier releases used "int". */ | |
137 | ||
138 | #undef PTRDIFF_TYPE | |
139 | #define PTRDIFF_TYPE "long int" | |
140 | ||
c7d62300 | 141 | /* Type used for wchar_t, as a string used in a declaration. */ |
142 | #undef WCHAR_TYPE | |
143 | #define WCHAR_TYPE (!TARGET_64BIT ? "short unsigned int" : "unsigned int") | |
c8b793cf | 144 | |
145 | /* Width of wchar_t in bits. */ | |
c7d62300 | 146 | #undef WCHAR_TYPE_SIZE |
c8b793cf | 147 | #define WCHAR_TYPE_SIZE (!TARGET_64BIT ? 16 : 32) |
c8b793cf | 148 | |
c8b793cf | 149 | /* AIX 4.2 and above provides initialization and finalization function |
150 | support from linker command line. */ | |
151 | #undef HAS_INIT_SECTION | |
152 | #define HAS_INIT_SECTION | |
153 | ||
154 | #undef LD_INIT_SWITCH | |
155 | #define LD_INIT_SWITCH "-binitfini" | |
dc1b4094 | 156 | |
16ac04e7 | 157 | /* This target uses the aix64.opt file. */ |
158 | #define TARGET_USES_AIX64_OPT 1 | |
0d87fcd2 | 159 | |
160 | /* This target defines SUPPORTS_WEAK and TARGET_ASM_NAMED_SECTION, | |
161 | but does not have crtbegin/end. */ | |
162 | ||
163 | #define TARGET_USE_JCR_SECTION 0 | |
cabc7147 | 164 | |
165 | #define TARGET_AIX_VERSION 51 | |
30f690e0 | 166 | |
167 | #undef TARGET_LIBC_HAS_FUNCTION | |
168 | #define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function |