]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/config/i386/dgux.h
system.h (SELECT_RTX_SECTION): Poison.
[thirdparty/gcc.git] / gcc / config / i386 / dgux.h
1 /* Target definitions for GNU compiler for Intel 80x86 running DG/ux
2 Copyright (C) 1993, 1995, 1996, 1997, 1998, 2000, 2001, 2002
3 Free Software Foundation, Inc.
4 Currently maintained by gcc@dg-rtp.dg.com.
5
6 This file is part of GNU CC.
7
8 GNU CC is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2, or (at your option)
11 any later version.
12
13 GNU CC is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with GNU CC; see the file COPYING. If not, write to
20 the Free Software Foundation, 59 Temple Place - Suite 330,
21 Boston, MA 02111-1307, USA. */
22
23 /* for now, we are just like the sysv4 version with a
24 few hacks
25 */
26
27 #ifndef VERSION_INFO2
28 #define VERSION_INFO2 "$Revision: 1.18 $"
29 #endif
30
31 #ifndef VERSION_STRING
32 #define VERSION_STRING version_string
33 #endif
34
35 /* Identify the compiler. */
36 /* TARGET_VERSION used by toplev.c VERSION_STRING used by -midentify-revision */
37
38 #undef TARGET_VERSION
39 #define TARGET_VERSION fprintf (stderr, " (%s%s, %s)", \
40 VERSION_INFO1, VERSION_INFO2, __DATE__)
41 #undef VERSION_INFO1
42 #define VERSION_INFO1 "ix86 DG/ux, "
43
44 /* Augment TARGET_SWITCHES with the MXDB options. */
45 #define MASK_STANDARD 0x40000000 /* Retain standard information */
46 #define MASK_NOLEGEND 0x20000000 /* Discard legend information */
47 #define MASK_EXTERNAL_LEGEND 0x10000000 /* Make external legends */
48 #define MASK_IDENTIFY_REVISION 0x08000000 /* Emit 'ident' to .s */
49 #define MASK_WARN_PASS_STRUCT 0x04000000 /* Warn when structures are passed */
50
51 #define TARGET_STANDARD (target_flags & MASK_STANDARD)
52 #define TARGET_NOLEGEND (target_flags & MASK_NOLEGEND)
53 #define TARGET_EXTERNAL_LEGEND (target_flags & MASK_EXTERNAL_LEGEND)
54 #define TARGET_IDENTIFY_REVISION (target_flags & MASK_IDENTIFY_REVISION)
55 #define TARGET_WARN_PASS_STRUCT (target_flags & MASK_WARN_PASS_STRUCT)
56
57 #undef SUBTARGET_SWITCHES
58 #define SUBTARGET_SWITCHES \
59 { "standard", MASK_STANDARD, \
60 N_("Retain standard MXDB information") }, \
61 { "legend", -MASK_NOLEGEND, \
62 N_("Retain legend information") }, \
63 { "no-legend", MASK_NOLEGEND, "" }, \
64 { "external-legend", MASK_EXTERNAL_LEGEND, \
65 N_("Generate external legend information") }, \
66 { "identify-revision", MASK_IDENTIFY_REVISION, \
67 N_("Emit identifying info in .s file") }, \
68 { "warn-passed-structs", MASK_WARN_PASS_STRUCT, \
69 N_("Warn when a function arg is a structure") },
70
71 #undef DWARF_DEBUGGING_INFO
72 #define DWARF_DEBUGGING_INFO
73
74 /*
75 allow -gstabs so that those who have gnu-as installed
76 can debug c++ programs.
77 */
78 #undef DBX_DEBUGGING_INFO
79 #define DBX_DEBUGGING_INFO
80
81 #undef PREFERRED_DEBUGGING_TYPE
82 #define PREFERRED_DEBUGGING_TYPE DWARF_DEBUG
83
84 /* Override svr[34].h. Switch to the data section so that the coffsem
85 symbol isn't in the text section. */
86 #undef ASM_FILE_START
87 #define ASM_FILE_START(FILE) \
88 do { \
89 output_file_directive (FILE, main_input_filename); \
90 fprintf (FILE, "\t.version\t\"01.01\"\n"); \
91 data_section (); \
92 } while (0)
93
94 /* ix86 abi specified type for wchar_t */
95
96 #undef WCHAR_TYPE
97 #define WCHAR_TYPE "long int"
98
99 #undef WCHAR_TYPE_SIZE
100 #define WCHAR_TYPE_SIZE BITS_PER_WORD
101
102
103 /* Some machines may desire to change what optimizations are performed for
104 various optimization levels. This macro, if defined, is executed once
105 just after the optimization level is determined and before the remainder
106 of the command options have been parsed. Values set in this macro are
107 used as the default values for the other command line options.
108
109 LEVEL is the optimization level specified; 2 if -O2 is specified,
110 1 if -O is specified, and 0 if neither is specified. */
111
112 /* This macro used to store 0 in flag_signed_bitfields.
113 Not only is that misuse of this macro; the whole idea is wrong.
114
115 The GNU C dialect makes bitfields signed by default,
116 regardless of machine type. Making any machine inconsistent in this
117 regard is bad for portability.
118
119 I chose to make bitfields signed by default because this is consistent
120 with the way ordinary variables are handled: `int' equals `signed int'.
121 If there is a good reason to prefer making bitfields unsigned by default,
122 it cannot have anything to do with the choice of machine.
123 If the reason is good enough, we should change the convention for all machines.
124
125 -- rms, 20 July 1991. */
126
127 /*
128 this really should go into dgux-local.h
129 */
130
131 #undef OPTIMIZATION_OPTIONS
132 #define OPTIMIZATION_OPTIONS(LEVEL,SIZE) \
133 do { \
134 extern int flag_signed_bitfields; \
135 flag_signed_bitfields = 0; \
136 optimization_options (LEVEL,SIZE); \
137 } while (0)
138
139
140 /* The normal location of the `ld' and `as' programs */
141
142 #undef MD_EXEC_PREFIX
143 #define MD_EXEC_PREFIX "/usr/bin/"
144
145 /* The normal location of the various *crt*.o files is the */
146
147 #undef MD_STARTFILE_PREFIX
148 #define MD_STARTFILE_PREFIX "/usr/lib/"
149
150 /* Macros to be automatically defined.
151 __CLASSIFY_TYPE__ is used in the <varargs.h> and <stdarg.h> header
152 files with DG/UX revision 5.40 and later. This allows GNU CC to
153 operate without installing the header files. */
154
155 #undef CPP_PREDEFINES
156 #define CPP_PREDEFINES "-D__ix86 -Dunix -DDGUX -D__CLASSIFY_TYPE__=2\
157 -Asystem=unix -Asystem=svr4"
158
159 /*
160 If not -ansi, or restricting include files to one
161 specific source target, specify full DG/UX features.
162 */
163 #undef CPP_SPEC
164 #define CPP_SPEC "%(cpp_cpu) %{!ansi:-D__OPEN_NAMESPACE__}"
165
166 /* Assembler support (legends for mxdb). */
167 #undef ASM_SPEC
168 #define ASM_SPEC "\
169 %{mno-legend:%{mstandard:-Wc,off}}\
170 %{g:%{!mno-legend:-Wc,-fix-bb,-s\"%i\",-lansi-c\
171 %{mstandard:,-keep-std}\
172 %{mexternal-legend:,-external}}}"
173
174 /* Override svr4.h. */
175
176 /* hassey 3/12/94 keep svr4 ASM_FINAL_SPEC allows -pipe to work */
177
178 /* Linker and library spec's.
179 -static, -shared, -symbolic, -h* and -z* access AT&T V.4 link options.
180 -svr4 instructs gcc to place /usr/lib/values-X[cat].o on link the line.
181 The absence of -msvr4 indicates linking done in a COFF environment and
182 adds the link script to the link line. In all environments, the first
183 and last objects are crtbegin.o and crtend.o.
184 When the -G link option is used (-shared and -symbolic) a final link is
185 not being done. */
186
187 #undef LIB_SPEC
188 #define LIB_SPEC \
189 "%{!shared:%{!symbolic:-lc}}"
190
191 #undef LINK_SPEC
192 #define LINK_SPEC "%{z*} %{h*} %{v:-V} \
193 %{static:-dn -Bstatic} \
194 %{shared:-G -dy} \
195 %{symbolic:-Bsymbolic -G -dy} \
196 %{pg:-L/usr/lib/libp}%{p:-L/usr/lib/libp}"
197
198 #ifdef CROSS_COMPILE
199
200 #undef STARTFILE_SPEC
201 #define STARTFILE_SPEC "%{!shared:%{!symbolic:%{pg:gcrt1.o%s} \
202 %{!pg:%{p:mcrt1.o%s} \
203 %{!p:crt1.o%s}}}} \
204 %{pg:gcrti.o%s}%{!pg:crti.o%s} \
205 crtbegin.o%s \
206 %{ansi:values-Xc.o%s} \
207 %{!ansi:values-Xa.o%s}"
208
209 #undef ENDFILE_SPEC
210 #define ENDFILE_SPEC "crtend.o%s %{pg:gcrtn.o}%{!pg:crtn.o%s}"
211
212 #else
213
214 #undef STARTFILE_SPEC
215 #define STARTFILE_SPEC "%{!shared:%{!symbolic:%{pg:gcrt1.o%s} \
216 %{!pg:%{p:/lib/mcrt1.o%s} \
217 %{!p:/lib/crt1.o%s}}}} \
218 %{pg:gcrti.o%s}%{!pg:/lib/crti.o%s} \
219 crtbegin.o%s \
220 %{ansi:/lib/values-Xc.o%s} \
221 %{!ansi:/lib/values-Xa.o%s}"
222
223 #undef ENDFILE_SPEC
224 #define ENDFILE_SPEC "crtend.o%s %{pg:gcrtn.o}%{!pg:/lib/crtn.o}"
225
226 #endif /* CROSS_COMPILE */
227
228 /* The maximum alignment which the object file format can support.
229 page alignment would seem to be enough */
230 #undef MAX_OFILE_ALIGNMENT
231 #define MAX_OFILE_ALIGNMENT 0x1000
232
233 /* This supplements FUNCTION_ARG's definition in i386.h to check
234 TARGET_WARN_PASS_STRUCT */
235
236 #undef FUNCTION_ARG
237 #define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \
238 ((((MODE) == BLKmode && TARGET_WARN_PASS_STRUCT) ? \
239 warning ("argument is a structure"),0 : 0), \
240 (function_arg (&CUM, MODE, TYPE, NAMED)))
241
242 /* Add .align 1 to avoid .backalign bug in assembler */
243 #undef READONLY_DATA_SECTION_ASM_OP
244 #define READONLY_DATA_SECTION_ASM_OP "\t.section\t.rodata\n\t.align 1"