|
|
1.1 root 1: /* Definitions of target machine for GNU compiler.
2: Encore Multimax (OSF/1 with OSF/rose) version.
3: Copyright (C) 1991 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, 675 Mass Ave, Cambridge, MA 02139, USA. */
20:
21: /* Output a '?' so the encore assembler won't complain about
22: * externals on branches it hasn't seen yet. */
23:
24: #define EXTERNAL_PREFIX '?'
25:
26: #include "encore.h"
27:
28: /* External variables defined in ns32k.c */
29:
30: extern int ns32k_num_files;
31:
32:
33: #define OSF_OS
34: #define NO_J_SWITCH
35:
36: /* MACHINE MACROS controlling the compilation driver, 'gcc' */
37:
38: #ifdef CPP_SPEC
39: #undef CPP_SPEC
40: #endif
41: #define CPP_SPEC "%{.S: -D__LANGUAGE_ASSEMBLY__ \
42: -D_LANGUAGE_ASSEMBLY \
43: %{!ansi:-DLANGUAGE_ASSEMBLY}} \
44: %{!.S: -D__LANGUAGE_C__ \
45: -D_LANGUAGE_C \
46: %{!ansi:-DLANGUAGE_C}}"
47:
48: #ifdef CC1_SPEC
49: #undef CC1_SPEC
50: #endif
51: #define CC1_SPEC ""
52:
53: #ifndef NO_J_SWITCH
54: #ifdef ASM_SPEC
55: #undef ASM_SPEC
56: #endif
57: #define ASM_SPEC "%{!j: -j}"
58: #endif
59:
60: #ifdef NO_J_SWITCH
61: #ifdef ASM_SPEC
62: #undef ASM_SPEC
63: #endif
64: #define ASM_SPEC ""
65: #endif
66:
67: #ifdef LINK_SPEC
68: #undef LINK_SPEC
69: #endif
70: #define LINK_SPEC "%{nostdlib}"
71:
72: #ifdef LIB_SPEC
73: #undef LIB_SPEC
74: #endif
75: #define LIB_SPEC "%{p:-lprof1} -lc"
76:
77: #ifdef LIBG_SPEC
78: #undef LIBG_SPEC
79: #endif
80: #define LIBG_SPEC ""
81:
82: #ifdef STARTFILE_SPEC
83: #undef STARTFILE_SPEC
84: #endif
85: #define STARTFILE_SPEC "%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}}"
86:
87: #ifdef MACHINE_TYPE
88: #undef MACHINE_TYPE
89: #endif
90: #define MACHINE_TYPE "Encore Multimax running OSF/1 with OSF/rose objects"
91:
92: #ifdef ASM_VERSION
93: #undef ASM_VERSION
94: #endif
95: #define ASM_VERSION "Encore syntax using GAS/stabs"
96:
97: #ifdef MD_EXEC_PREFIX
98: #undef MD_EXEC_PREFIX
99: #endif
100: #define MD_EXEC_PREFIX "/usr/ccs/gcc/"
101:
102: #ifdef MD_STARTFILE_PREFIX
103: #undef MD_STARTFILE_PREFIX
104: #endif
105: #define MD_STARTFILE_PREFIX "/usr/ccs/lib/"
106:
107: /* MACHINE MACROS controlling run-time target specification */
108:
109: #ifdef CPP_PREDEFINES
110: #undef CPP_PREDEFINES
111: #endif
112: #define CPP_PREDEFINES "-Dns32000 -Dn16 -Dns16000 -Dns32332 -Dunix -Dmultimax -DMULTIMAX -DOSF -DOSF1"
113:
114: #ifdef TARGET_DEFAULT
115: #undef TARGET_DEFAULT
116: #endif
117: #define TARGET_DEFAULT 33 /* 32081 and no (sb) register */
118:
119: /* MACHINE MACROS controlling the layout of C types */
120:
121: #ifdef SIZE_TYPE
122: #undef SIZE_TYPE
123: #endif
124: #define SIZE_TYPE "long unsigned int"
125:
126: #ifdef PTRDIFF_TYPE
127: #undef PTRDIFF_TYPE
128: #endif
129: #define PTRDIFF_TYPE "int"
130:
131: #ifdef WCHAR_TYPE
132: #undef WCHAR_TYPE
133: #endif
134: #define WCHAR_TYPE "unsigned int"
135:
136: #ifdef WCHAR_TYPE_SIZE
137: #undef WCHAR_TYPE_SIZE
138: #endif
139: #define WCHAR_TYPE_SIZE BITS_PER_WORD
140:
141: #if 0
142: #define WCHAR_TYPE ((TARGET_WC8) \
143: ? "unsigned char" \
144: : ((TARGET_WC16) \
145: ? "short unsigned int" \
146: : "long unsigned int"))
147: #define MULTIBYTE_CHARS 1
148: #endif
149:
150: /* MACHINE MACROS describing stack layout and calling conventions */
151:
152:
153: #ifdef FUNCTION_PROFILER
154: #undef FUNCTION_PROFILER
155: #endif
156: #define FUNCTION_PROFILER(FILE, LABELNO) fprintf (FILE, "\tjsr mcount\n")
157:
158: /* MACHINE MACROS describing the overall framework of an
159: assembly file */
160:
161: #ifdef PRINT_OPERAND
162: #undef PRINT_OPERAND
163: #endif
164:
165: #define PRINT_OPERAND(FILE, X, CODE) print_operand(FILE, X, CODE)
166:
167: #ifdef PRINT_OPERAND_ADDRESS
168: #undef PRINT_OPERAND_ADDRESS
169: #endif
170:
171: #define PRINT_OPERAND_ADDRESS(FILE, ADDR) print_operand_address(FILE, ADDR)
172:
173: #define STABS_DIRECTIVE "\t.stabs" /* align .stabs */
174: #define STABN_DIRECTIVE "\t.stabn" /* align .stabn */
175: #define STABD_DIRECTIVE "\t.stabd" /* align .stabd */
176:
177: /* How to tell the debugger about changes of source files. */
178:
179: #ifdef ASM_OUTPUT_SOURCE_FILENAME
180: #undef ASM_OUTPUT_SOURCE_FILENAME
181: #endif
182:
183: /* Perhaps it is no longer necessary to redefine this, now that dbxout.c
184: uses another macro instead. */
185: #define ASM_OUTPUT_SOURCE_FILENAME(FILE, NAME) \
186: { \
187: if (ns32k_num_files++ == 0) \
188: fprintf (FILE, "\t.file \"%s\"\n", NAME); \
189: else if (write_symbols == DBX_DEBUG) \
190: { \
191: char ltext_label_name[100]; \
192: ASM_GENERATE_INTERNAL_LABEL(ltext_label_name, "Ltext", 0); \
193: fprintf (FILE, "%s \"%s\",%d,0,0,%s\n", STABS_DIRECTIVE, \
194: NAME, 0x84 /* N_SOL */, <ext_label_name[1]); \
195: } \
196: else \
197: fprintf (FILE, "\t#.file \"%s\"\n", NAME); \
198: }
199:
200: /* This is how to output a note the debugger telling it the line number
201: to which the following sequence of instructions corresponds. */
202:
203: #ifdef ASM_OUTPUT_SOURCE_LINE
204: #undef ASM_OUTPUT_SOURCE_LINE
205: #endif
206: #define ASM_OUTPUT_SOURCE_LINE(FILE, LINE) \
207: { \
208: if (write_symbols != DBX_DEBUG) \
209: fprintf (FILE, "\t.ln %d\n", LINE); \
210: else \
211: fprintf (file, "%s %d,0,%d\n", STABD_DIRECTIVE, 0x44 /* N_SLINE */, \
212: LINE); \
213: }
214:
215: #ifdef ASM_OUTPUT_INT
216: #undef ASM_OUTPUT_INT
217: #endif
218: #ifndef COLLECT
219: #define ASM_OUTPUT_INT(FILE,VALUE) \
220: ( fprintf (FILE, "\t.double "), \
221: output_addr_const (FILE, (VALUE)), \
222: fprintf (FILE, "\n"))
223: #else
224: #define ASM_OUTPUT_INT(STREAM,VALUE) \
225: fprintf (STREAM, "\t.double\t%d\n", VALUE)
226: #endif
227:
228: /* MACHINE MACROS describing debugging information */
229:
230: /* We need to have the capability to generate either
231: .stabs or COFF style debug info. The file ns32k.h
232: define DBX_DEBUGGING_INFO. We disambiguate between
233: the two based on a combination of command line or
234: default behavior. */
235:
236: #ifndef SDB_DEBUGGING_INFO
237: #define SDB_DEBUGGING_INFO /* Generate COFF style debug info */
238: #endif
239:
240: #ifndef DBX_DEBUGGING_INFO
241: #define DBX_DEBUGGING_INFO /* Generate .stabs style debug info */
242: #endif
243:
244: /* If the user just types -g, we want to use stabs */
245:
246: #ifdef PREFERRED_DEBUGGING_TYPE
247: #undef PREFERRED_DEBUGGING_TYPE
248: #endif
249:
250: #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
251:
252: /* Define the gdb extensions */
253:
254: #define DEFAULT_GDB_EXTENSIONS 1
255:
256: /* Tell collect that the object format is OSF/rose. */
257: #define OBJECT_FORMAT_ROSE
258:
259: /* Use atexit for static constructors/destructors, instead of defining
260: our own exit function. */
261: #define HAVE_ATEXIT
1.1.1.2 ! root 262:
! 263: /* Generate calls to memcpy, etc., not bcopy, etc. */
! 264: #define TARGET_MEM_FUNCTIONS
! 265:
! 266: /* A C statement to output assembler commands which will identify
! 267: the object file as having been compiled with GNU CC (or another
! 268: GNU compiler).
! 269:
! 270: If you don't define this macro, the string `gcc2_compiled.:' is
! 271: output. This string is calculated to define a symbol which, on
! 272: BSD systems, will never be defined for any other reason. GDB
! 273: checks for the presence of this symbol when reading the symbol
! 274: table of an executable.
! 275:
! 276: On non-BSD systems, you must arrange communication with GDB in
! 277: some other fashion. If GDB is not used on your system, you can
! 278: define this macro with an empty body.
! 279:
! 280: On OSF/1, gcc2_compiled. confuses the kernel debugger, so don't
! 281: put it out. */
! 282:
! 283: #define ASM_IDENTIFY_GCC(STREAM)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.