1 /* Target definitions for GNU compiler for Intel 80x86 running DG/ux
2 Copyright (C) 1993, 1995 Free Software Foundation, Inc.
4 Currently maintained by (gcc@dg-rtp.dg.com)
6 This file is part of GNU CC.
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)
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.
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, 675 Mass Ave, Cambridge, MA 02139, USA. */
22 /* for now, we are just like the sysv4 version with a
26 #include "i386/sysv4.h"
29 #define VERSION_INFO2 "$Revision: 1.2 $"
32 #ifndef VERSION_STRING
33 #define VERSION_STRING version_string
36 /* Identify the compiler. */
37 /* TARGET_VERSION used by toplev.c VERSION_STRING used by -midentify-revision */
40 #define TARGET_VERSION fprintf (stderr, " (%s%s, %s)", \
41 VERSION_INFO1, VERSION_INFO2, __DATE__)
43 #define VERSION_INFO1 "ix86 DG/ux, "
45 /* Augment TARGET_SWITCHES with the MXDB options. */
46 #define MASK_STANDARD 0x40000000 /* Retain standard information */
47 #define MASK_NOLEGEND 0x20000000 /* Discard legend information */
48 #define MASK_EXTERNAL_LEGEND 0x10000000 /* Make external legends */
49 #define MASK_IDENTIFY_REVISION 0x08000000 /* Emit 'ident' to .s */
50 #define MASK_WARN_PASS_STRUCT 0x04000000 /* Emit 'ident' to .s */
52 #define TARGET_STANDARD (target_flags & MASK_STANDARD)
53 #define TARGET_NOLEGEND (target_flags & MASK_NOLEGEND)
54 #define TARGET_EXTERNAL_LEGEND (target_flags & MASK_EXTERNAL_LEGEND)
55 #define TARGET_IDENTIFY_REVISION (target_flags & MASK_IDENTIFY_REVISION)
56 #define TARGET_WARN_PASS_STRUCT (target_flags & MASK_WARN_PASS_STRUCT)
58 #undef SUBTARGET_SWITCHES
59 #define SUBTARGET_SWITCHES \
60 { "standard", MASK_STANDARD }, \
61 { "legend", -MASK_NOLEGEND }, \
62 { "no-legend", MASK_NOLEGEND }, \
63 { "external-legend", MASK_EXTERNAL_LEGEND }, \
64 { "identify-revision", MASK_IDENTIFY_REVISION }, \
65 { "warn-passed-structs", MASK_WARN_PASS_STRUCT },
67 #undef DWARF_DEBUGGING_INFO
68 #define DWARF_DEBUGGING_INFO
71 allow -gstabs so that those who have gnu-as installed
72 can debug c++ programs.
74 #undef DBX_DEBUGGING_INFO
75 #define DBX_DEBUGGING_INFO
77 #define PREFERRED_DEBUGGING_TYPE DWARF_DEBUG
79 /* Override svr[34].h. */
81 #define ASM_FILE_START(FILE) \
82 output_file_start (FILE, f_options, sizeof f_options / sizeof f_options[0], \
83 W_options, sizeof W_options / sizeof W_options[0])
85 /* ix86 abi specified type for wchar_t */
88 #define WCHAR_TYPE "long int"
90 #undef WCHAR_TYPE_SIZE
91 #define WCHAR_TYPE_SIZE BITS_PER_WORD
94 /* Define this to be nonzero if the character `$' should be allowed
95 by default in identifier names. DG/ux does this differently than
98 #undef DOLLARS_IN_IDENTIFIERS
99 #define DOLLARS_IN_IDENTIFIERS 1
101 /* Some machines may desire to change what optimizations are performed for
102 various optimization levels. This macro, if defined, is executed once
103 just after the optimization level is determined and before the remainder
104 of the command options have been parsed. Values set in this macro are
105 used as the default values for the other command line options.
107 LEVEL is the optimization level specified; 2 if -O2 is specified,
108 1 if -O is specified, and 0 if neither is specified. */
110 /* This macro used to store 0 in flag_signed_bitfields.
111 Not only is that misuse of this macro; the whole idea is wrong.
113 The GNU C dialect makes bitfields signed by default,
114 regardless of machine type. Making any machine inconsistent in this
115 regard is bad for portability.
117 I chose to make bitfields signed by default because this is consistent
118 with the way ordinary variables are handled: `int' equals `signed int'.
119 If there is a good reason to prefer making bitfields unsigned by default,
120 it cannot have anything to do with the choice of machine.
121 If the reason is good enough, we should change the convention for all machines.
123 -- rms, 20 July 1991. */
126 this really should go into dgux-local.h
129 #undef OPTIMIZATION_OPTIONS
130 #define OPTIMIZATION_OPTIONS(LEVEL) \
132 extern int flag_signed_bitfields; \
133 flag_signed_bitfields = 0; \
135 optimization_options (LEVEL); \
139 /* The normal location of the `ld' and `as' programs */
141 #undef MD_EXEC_PREFIX
142 #define MD_EXEC_PREFIX "/usr/bin/"
144 /* The normal location of the various *crt*.o files is the */
146 #undef MD_STARTFILE_PREFIX
147 #define MD_STARTFILE_PREFIX "/usr/lib/"
149 /* Macros to be automatically defined.
150 __CLASSIFY_TYPE__ is used in the <varargs.h> and <stdarg.h> header
151 files with DG/UX revision 5.40 and later. This allows GNU CC to
152 operate without installing the header files. */
154 #undef CPP_PREDEFINES
155 #define CPP_PREDEFINES "-Di386 -D__ix86 -Dunix -DDGUX -D__CLASSIFY_TYPE__=2\
156 -Asystem(unix) -Asystem(svr4) -Acpu(i386) -Amachine(i386)"
159 If not -ansi, -traditional, or restricting include files to one
160 specific source target, specify full DG/UX features.
163 #define CPP_SPEC "%{!ansi:%{!traditional:-D__OPEN_NAMESPACE__}}"
165 /* Assembler support (legends for mxdb). */
168 %{mno-legend:%{mstandard:-Wc,off}}\
169 %{g:%{!mno-legend:-Wc,-fix-bb,-s\"%i\"\
170 %{traditional:,-lc}%{!traditional:,-lansi-c}\
171 %{mstandard:,-keep-std}\
172 %{mexternal-legend:,-external}}}"
174 /* Override svr4.h. */
176 /* hassey 3/12/94 keep svr4 ASM_FINAL_SPEC allows -pipe to work */
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 absense 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
189 "%{!shared:%{!symbolic:-lc}}"
192 #define LINK_SPEC "%{z*} %{h*} %{v:-V} \
193 %{static:-dn -Bstatic} \
195 %{symbolic:-Bsymbolic -G -dy} \
196 %{pg:-L/usr/lib/libp}%{p:-L/usr/lib/libp}"
200 #undef STARTFILE_SPEC
201 #define STARTFILE_SPEC "%{!shared:%{!symbolic:%{pg:gcrt1.o%s} \
202 %{!pg:%{p:mcrt1.o%s} \
204 %{pg:gcrti.o%s}%{!pg:crti.o%s} \
206 %{ansi:values-Xc.o%s} \
207 %{!ansi:%{traditional:values-Xt.o%s} \
208 %{!traditional:values-Xa.o%s}}"
211 #define ENDFILE_SPEC "crtend.o%s %{pg:gcrtn.o}%{!pg:crtn.o%s}"
215 #undef STARTFILE_SPEC
216 #define STARTFILE_SPEC "%{!shared:%{!symbolic:%{pg:gcrt1.o%s} \
217 %{!pg:%{p:/lib/mcrt1.o%s} \
218 %{!p:/lib/crt1.o%s}}} \
219 %{pg:gcrti.o%s}%{!pg:/lib/crti.o%s}} \
221 %{ansi:/lib/values-Xc.o%s} \
222 %{!ansi:%{traditional:/lib/values-Xt.o%s} \
223 %{!traditional:/lib/values-Xa.o%s}}"
226 #define ENDFILE_SPEC "crtend.o%s %{pg:gcrtn.o}%{!pg:/lib/crtn.o}"
228 #endif /* CROSS_COMPILE */
230 #if !defined (no_abort) || defined (CRT_BEGIN) || defined (CRT_END)
233 char insn; int insn_; char * file_; int line_;
235 (insn_ = (int) insn, \
239 #define abort_helper() \
241 extern void abort_aux (); \
242 atexit (abort_aux); \
245 #endif /* no abort */
247 /* The maximum alignment which the object file format can support.
248 page alignment would seem to be enough */
249 #undef MAX_OFILE_ALIGNMENT
250 #define MAX_OFILE_ALIGNMENT 0x1000
252 /* Must use data section for relocatable constants when pic. */
253 #undef SELECT_RTX_SECTION
254 #define SELECT_RTX_SECTION(MODE,RTX) \
256 if (flag_pic && symbolic_operand (RTX)) \
262 /* This supplements FUNCTION_ARG's definition in i386.h to check
263 TARGET_WARN_PASS_STRUCT */
266 #define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \
267 ((((MODE) == BLKmode && TARGET_WARN_PASS_STRUCT) ? \
268 warning ("argument is a structure"),0 : 0), \
269 (function_arg (&CUM, MODE, TYPE, NAMED)))