1 | /* Definitions of target machine for GNU compiler. |
---|
2 | DECstation (OSF/1 reference port with OSF/rose) version. |
---|
3 | Copyright (C) 1991, 1992, 1995 Free Software Foundation, Inc. |
---|
4 | |
---|
5 | This file is part of GNU CC. |
---|
6 | |
---|
7 | GNU CC is free software; you can redistribute it and/or modify |
---|
8 | it under the terms of the GNU General Public License as published by |
---|
9 | the Free Software Foundation; either version 2, or (at your option) |
---|
10 | any later version. |
---|
11 | |
---|
12 | GNU CC is distributed in the hope that it will be useful, |
---|
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
15 | GNU General Public License for more details. |
---|
16 | |
---|
17 | You should have received a copy of the GNU General Public License |
---|
18 | along with GNU CC; see the file COPYING. If not, write to |
---|
19 | the Free Software Foundation, 59 Temple Place - Suite 330, |
---|
20 | Boston, MA 02111-1307, USA. */ |
---|
21 | |
---|
22 | #define DECSTATION |
---|
23 | #define OSF_OS |
---|
24 | |
---|
25 | #define HALF_PIC_DEBUG TARGET_DEBUG_B_MODE |
---|
26 | #define HALF_PIC_PREFIX "$Lp." |
---|
27 | |
---|
28 | #include "halfpic.h" |
---|
29 | |
---|
30 | #define WORD_SWITCH_TAKES_ARG(STR) \ |
---|
31 | (DEFAULT_WORD_SWITCH_TAKES_ARG (STR) || !strcmp (STR, "pic-names")) |
---|
32 | |
---|
33 | #define CPP_PREDEFINES "\ |
---|
34 | -DOSF -DOSF1 -Dbsd4_2 -DMIPSEL -Dhost_mips -Dmips -Dunix -DR3000 -DSYSTYPE_BSD \ |
---|
35 | -Asystem(unix) -Asystem(xpg4) -Acpu(mips) -Amachine(mips)" |
---|
36 | |
---|
37 | #define ASM_SPEC "\ |
---|
38 | %{mmips-as: \ |
---|
39 | %{!.s:-nocpp} %{.s: %{cpp} %{nocpp}} \ |
---|
40 | %{pipe: %e-pipe is not supported.} \ |
---|
41 | %{K}} \ |
---|
42 | %{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} %{v} \ |
---|
43 | %{noasmopt:-O0} \ |
---|
44 | %{!noasmopt:%{O:-O2} %{O1:-O2} %{O2:-O2} %{O3:-O3}} \ |
---|
45 | %{g} %{g0} %{g1} %{g2} %{g3} \ |
---|
46 | %{ggdb:-g} %{ggdb0:-g0} %{ggdb1:-g1} %{ggdb2:-g2} %{ggdb3:-g3} \ |
---|
47 | %{gstabs:-g} %{gstabs0:-g0} %{gstabs1:-g1} %{gstabs2:-g2} %{gstabs3:-g3} \ |
---|
48 | %{gstabs+:-g} %{gstabs+0:-g0} %{gstabs+1:-g1} %{gstabs+2:-g2} %{gstabs+3:-g3} \ |
---|
49 | %{gcoff:-g} %{gcoff0:-g0} %{gcoff1:-g1} %{gcoff2:-g2} %{gcoff3:-g3}" |
---|
50 | |
---|
51 | #ifndef CROSS_COMPILE |
---|
52 | #define ASM_FINAL_SPEC "\ |
---|
53 | %{mmips-as: %{!mno-mips-tfile: \ |
---|
54 | \n mips-tfile %{v*: -v} %{d*} \ |
---|
55 | %{K: -I %b.o~} \ |
---|
56 | %{!K: %{save-temps: -I %b.o~}} \ |
---|
57 | %{c:%W{o*}%{!o*:-o %b.o}}%{!c:-o %U.o} \ |
---|
58 | %{.s:%i} %{!.s:%g.s}}}" |
---|
59 | |
---|
60 | #else /* CROSS_COMPILE */ |
---|
61 | #define ASM_FINAL_SPEC "\ |
---|
62 | %{mmips-as: %{mmips-tfile: \ |
---|
63 | \n mips-tfile %{v*: -v} %{d*} \ |
---|
64 | %{K: -I %b.o~} \ |
---|
65 | %{!K: %{save-temps: -I %b.o~}} \ |
---|
66 | %{c:%W{o*}%{!o*:-o %b.o}}%{!c:-o %U.o} \ |
---|
67 | %{.s:%i} %{!.s:%g.s}}}" |
---|
68 | #endif |
---|
69 | |
---|
70 | #define CPP_SPEC "\ |
---|
71 | %{.S: %{!ansi:%{!traditional:%{!traditional-cpp:%{!ftraditional: -traditional}}}}} \ |
---|
72 | %{.S: -D__LANGUAGE_ASSEMBLY__ -D__LANGUAGE_ASSEMBLY %{!ansi:-DLANGUAGE_ASSEMBLY} \ |
---|
73 | -ULANGUAGE_C -U__LANGUAGE_C__} \ |
---|
74 | %{.s: %{!ansi:%{!traditional:%{!traditional-cpp:%{!ftraditional: -traditional}}}}} \ |
---|
75 | %{.s: -D__LANGUAGE_ASSEMBLY__ -D__LANGUAGE_ASSEMBLY %{!ansi:-DLANGUAGE_ASSEMBLY} \ |
---|
76 | -ULANGUAGE_C -U__LANGUAGE_C__} \ |
---|
77 | %{.cc: -D__LANGUAGE_C_PLUS_PLUS__ -D__LANGUAGE_C_PLUS_PLUS} \ |
---|
78 | %{.cxx: -D__LANGUAGE_C_PLUS_PLUS__ -D__LANGUAGE_C_PLUS_PLUS} \ |
---|
79 | %{.C: -D__LANGUAGE_C_PLUS_PLUS__ -D__LANGUAGE_C_PLUS_PLUS} \ |
---|
80 | %{.m: -D__LANGUAGE_OBJECTIVE_C__ -D__LANGUAGE_OBJECTIVE_C} \ |
---|
81 | %{!.S:%{!.s: -D__LANGUAGE_C__ -D__LANGUAGE_C %{!ansi:-DLANGUAGE_C}}} \ |
---|
82 | %{mlong64:-D__PTRDIFF_TYPE__=long\\ int} \ |
---|
83 | %{!mlong64:-D__PTRDIFF_TYPE__=int} \ |
---|
84 | %{mips3:-U__mips -D__mips=3 -D__mips64} \ |
---|
85 | %{mgp32:-U__mips64} %{mgp64:-D__mips64} \ |
---|
86 | %{EB:-UMIPSEL -U_MIPSEL -U__MIPSEL -U__MIPSEL__ -D_MIPSEB -D__MIPSEB -D__MIPSEB__ %{!ansi:-DMIPSEB}} \ |
---|
87 | %{EL:-UMIPSEB -U_MIPSEB -U__MIPSEB -U__MIPSEB__ -D_MIPSEL -D__MIPSEL -D__MIPSEL__ %{!ansi:-DMIPSEL}}" |
---|
88 | |
---|
89 | /* ??? This assumes that GNU as is always used with GNU ld, and MIPS as is |
---|
90 | always used with MIPS ld. */ |
---|
91 | #define LINK_SPEC "\ |
---|
92 | %{G*} %{EL} %{EB} %{mips1} %{mips2} %{mips3} \ |
---|
93 | %{bestGnum} \ |
---|
94 | %{!mmips-as: \ |
---|
95 | %{v*: -v} \ |
---|
96 | %{!noshrlib: %{pic-none: -noshrlib} %{!pic-none: -warn_nopic}} \ |
---|
97 | %{nostdlib} %{noshrlib} %{glue}}" |
---|
98 | |
---|
99 | #define LIB_SPEC "-lc" |
---|
100 | |
---|
101 | /* Define this macro meaning that `gcc' should find the library |
---|
102 | `libgcc.a' by hand, rather than passing the argument `-lgcc' to |
---|
103 | tell the linker to do the search. */ |
---|
104 | |
---|
105 | #define LINK_LIBGCC_SPECIAL 1 |
---|
106 | |
---|
107 | #define STARTFILE_SPEC "%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}}" |
---|
108 | |
---|
109 | #define MACHINE_TYPE "DECstation with OSF/rose objects" |
---|
110 | |
---|
111 | #ifndef MD_EXEC_PREFIX |
---|
112 | #define MD_EXEC_PREFIX "/usr/ccs/gcc/" |
---|
113 | #endif |
---|
114 | |
---|
115 | #ifndef MD_STARTFILE_PREFIX |
---|
116 | #define MD_STARTFILE_PREFIX "/usr/ccs/lib/" |
---|
117 | #endif |
---|
118 | |
---|
119 | /* Turn on -mpic-extern by default. */ |
---|
120 | #define CC1_SPEC "\ |
---|
121 | %{gline:%{!g:%{!g0:%{!g1:%{!g2: -g1}}}}} \ |
---|
122 | %{mips1:-mfp32 -mgp32}%{mips2:-mfp32 -mgp32}%{mips3:-mfp64 -mgp64} \ |
---|
123 | %{G*} \ |
---|
124 | %{pic-none: -mno-half-pic} \ |
---|
125 | %{pic-lib: -mhalf-pic} \ |
---|
126 | %{pic-extern: -mhalf-pic} \ |
---|
127 | %{pic-calls: -mhalf-pic} \ |
---|
128 | %{pic-names*: -mhalf-pic} \ |
---|
129 | %{!pic-*: -mhalf-pic}" |
---|
130 | |
---|
131 | /* Specify size_t and wchar_t types. */ |
---|
132 | #define SIZE_TYPE "long unsigned int" |
---|
133 | #define WCHAR_TYPE "unsigned int" |
---|
134 | #define WCHAR_TYPE_SIZE BITS_PER_WORD |
---|
135 | #define MAX_WCHAR_TYPE_SIZE MAX_LONG_TYPE_SIZE |
---|
136 | |
---|
137 | /* OSF/1 uses gas, not the mips assembler. */ |
---|
138 | #define TARGET_DEFAULT MASK_GAS |
---|
139 | |
---|
140 | /* OSF/rose uses stabs, not ECOFF. */ |
---|
141 | #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG |
---|
142 | |
---|
143 | /* enable dwarf debugging for testing */ |
---|
144 | #define DWARF_DEBUGGING_INFO |
---|
145 | /* This is needed by dwarfout.c. */ |
---|
146 | #define SET_ASM_OP ".set" |
---|
147 | |
---|
148 | /* Tell collect that the object format is OSF/rose. */ |
---|
149 | #define OBJECT_FORMAT_ROSE |
---|
150 | |
---|
151 | /* Tell collect where the appropriate binaries are. */ |
---|
152 | #define REAL_LD_FILE_NAME "/usr/ccs/gcc/gld" |
---|
153 | #define REAL_NM_FILE_NAME "/usr/ccs/bin/nm" |
---|
154 | #define REAL_STRIP_FILE_NAME "/usr/ccs/bin/strip" |
---|
155 | |
---|
156 | /* Default to -G 0 unless doing ecoff work. */ |
---|
157 | #define MIPS_DEFAULT_GVALUE ((TARGET_MIPS_AS) ? 8 : 0) |
---|
158 | |
---|
159 | /* Use atexit for static constructors/destructors, instead of defining |
---|
160 | our own exit function. */ |
---|
161 | #define HAVE_ATEXIT |
---|
162 | |
---|
163 | /* Generate calls to memcpy, etc., not bcopy, etc. */ |
---|
164 | #define TARGET_MEM_FUNCTIONS |
---|
165 | |
---|
166 | /* A C statement to output assembler commands which will identify |
---|
167 | the object file as having been compiled with GNU CC (or another |
---|
168 | GNU compiler). |
---|
169 | |
---|
170 | If you don't define this macro, the string `gcc2_compiled.:' is |
---|
171 | output. This string is calculated to define a symbol which, on |
---|
172 | BSD systems, will never be defined for any other reason. GDB |
---|
173 | checks for the presence of this symbol when reading the symbol |
---|
174 | table of an executable. |
---|
175 | |
---|
176 | On non-BSD systems, you must arrange communication with GDB in |
---|
177 | some other fashion. If GDB is not used on your system, you can |
---|
178 | define this macro with an empty body. |
---|
179 | |
---|
180 | On OSF/1, gcc2_compiled. confuses the kernel debugger, so don't |
---|
181 | put it out. */ |
---|
182 | |
---|
183 | #define ASM_IDENTIFY_GCC(STREAM) |
---|
184 | |
---|
185 | /* Identify the front-end which produced this file. To keep symbol |
---|
186 | space down, and not confuse kdb, only do this if the language is |
---|
187 | not C. */ |
---|
188 | |
---|
189 | #define ASM_IDENTIFY_LANGUAGE(STREAM) \ |
---|
190 | { \ |
---|
191 | if (strcmp (lang_identify (), "c") != 0) \ |
---|
192 | output_lang_identify (STREAM); \ |
---|
193 | } |
---|
194 | |
---|
195 | #include "mips/mips.h" |
---|