xref: /openbsd-src/gnu/usr.bin/gcc/gcc/defaults.h (revision c87b03e512fc05ed6e0222f6fb0ae86264b1d05b)
1*c87b03e5Sespie /* Definitions of various defaults for tm.h macros.
2*c87b03e5Sespie    Copyright (C) 1992, 1996, 1997, 1998, 1999, 2000, 2001, 2002
3*c87b03e5Sespie    Free Software Foundation, Inc.
4*c87b03e5Sespie    Contributed by Ron Guilmette (rfg@monkeys.com)
5*c87b03e5Sespie 
6*c87b03e5Sespie This file is part of GCC.
7*c87b03e5Sespie 
8*c87b03e5Sespie GCC is free software; you can redistribute it and/or modify it under
9*c87b03e5Sespie the terms of the GNU General Public License as published by the Free
10*c87b03e5Sespie Software Foundation; either version 2, or (at your option) any later
11*c87b03e5Sespie version.
12*c87b03e5Sespie 
13*c87b03e5Sespie GCC is distributed in the hope that it will be useful, but WITHOUT ANY
14*c87b03e5Sespie WARRANTY; without even the implied warranty of MERCHANTABILITY or
15*c87b03e5Sespie FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
16*c87b03e5Sespie for more details.
17*c87b03e5Sespie 
18*c87b03e5Sespie You should have received a copy of the GNU General Public License
19*c87b03e5Sespie along with GCC; see the file COPYING.  If not, write to the Free
20*c87b03e5Sespie Software Foundation, 59 Temple Place - Suite 330, Boston, MA
21*c87b03e5Sespie 02111-1307, USA.  */
22*c87b03e5Sespie 
23*c87b03e5Sespie #ifndef GCC_DEFAULTS_H
24*c87b03e5Sespie #define GCC_DEFAULTS_H
25*c87b03e5Sespie 
26*c87b03e5Sespie #ifndef GET_ENVIRONMENT
27*c87b03e5Sespie #define GET_ENVIRONMENT(VALUE, NAME) do { (VALUE) = getenv (NAME); } while (0)
28*c87b03e5Sespie #endif
29*c87b03e5Sespie 
30*c87b03e5Sespie #define obstack_chunk_alloc xmalloc
31*c87b03e5Sespie #define obstack_chunk_free free
32*c87b03e5Sespie 
33*c87b03e5Sespie /* Define default standard character escape sequences.  */
34*c87b03e5Sespie #ifndef TARGET_BELL
35*c87b03e5Sespie #  define TARGET_BELL 007
36*c87b03e5Sespie #  define TARGET_BS 010
37*c87b03e5Sespie #  define TARGET_TAB 011
38*c87b03e5Sespie #  define TARGET_NEWLINE 012
39*c87b03e5Sespie #  define TARGET_VT 013
40*c87b03e5Sespie #  define TARGET_FF 014
41*c87b03e5Sespie #  define TARGET_CR 015
42*c87b03e5Sespie #  define TARGET_ESC 033
43*c87b03e5Sespie #endif
44*c87b03e5Sespie 
45*c87b03e5Sespie /* When removal of CPP_PREDEFINES is complete, TARGET_CPU_CPP_BULITINS
46*c87b03e5Sespie    can also be removed from here.  */
47*c87b03e5Sespie #ifndef TARGET_OS_CPP_BUILTINS
48*c87b03e5Sespie # define TARGET_OS_CPP_BUILTINS()
49*c87b03e5Sespie #endif
50*c87b03e5Sespie #ifndef TARGET_CPU_CPP_BUILTINS
51*c87b03e5Sespie # define TARGET_CPU_CPP_BUILTINS()
52*c87b03e5Sespie #endif
53*c87b03e5Sespie #ifndef CPP_PREDEFINES
54*c87b03e5Sespie # define CPP_PREDEFINES ""
55*c87b03e5Sespie #endif
56*c87b03e5Sespie 
57*c87b03e5Sespie /* Store in OUTPUT a string (made with alloca) containing
58*c87b03e5Sespie    an assembler-name for a local static variable or function named NAME.
59*c87b03e5Sespie    LABELNO is an integer which is different for each call.  */
60*c87b03e5Sespie 
61*c87b03e5Sespie #ifndef ASM_FORMAT_PRIVATE_NAME
62*c87b03e5Sespie #define ASM_FORMAT_PRIVATE_NAME(OUTPUT, NAME, LABELNO)			\
63*c87b03e5Sespie   do {									\
64*c87b03e5Sespie     int len = strlen (NAME);						\
65*c87b03e5Sespie     char *temp = (char *) alloca (len + 3);				\
66*c87b03e5Sespie     temp[0] = 'L';							\
67*c87b03e5Sespie     strcpy (&temp[1], (NAME));						\
68*c87b03e5Sespie     temp[len + 1] = '.';						\
69*c87b03e5Sespie     temp[len + 2] = 0;							\
70*c87b03e5Sespie     (OUTPUT) = (char *) alloca (strlen (NAME) + 11);			\
71*c87b03e5Sespie     ASM_GENERATE_INTERNAL_LABEL (OUTPUT, temp, LABELNO);		\
72*c87b03e5Sespie   } while (0)
73*c87b03e5Sespie #endif
74*c87b03e5Sespie 
75*c87b03e5Sespie #ifndef ASM_STABD_OP
76*c87b03e5Sespie #define ASM_STABD_OP "\t.stabd\t"
77*c87b03e5Sespie #endif
78*c87b03e5Sespie 
79*c87b03e5Sespie /* This is how to output an element of a case-vector that is absolute.
80*c87b03e5Sespie    Some targets don't use this, but we have to define it anyway.  */
81*c87b03e5Sespie 
82*c87b03e5Sespie #ifndef ASM_OUTPUT_ADDR_VEC_ELT
83*c87b03e5Sespie #define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE)  \
84*c87b03e5Sespie do { fputs (integer_asm_op (POINTER_SIZE / UNITS_PER_WORD, TRUE), FILE); \
85*c87b03e5Sespie      ASM_OUTPUT_INTERNAL_LABEL (FILE, "L", (VALUE));			\
86*c87b03e5Sespie      fputc ('\n', FILE);						\
87*c87b03e5Sespie    } while (0)
88*c87b03e5Sespie #endif
89*c87b03e5Sespie 
90*c87b03e5Sespie /* choose a reasonable default for ASM_OUTPUT_ASCII.  */
91*c87b03e5Sespie 
92*c87b03e5Sespie #ifndef ASM_OUTPUT_ASCII
93*c87b03e5Sespie #define ASM_OUTPUT_ASCII(MYFILE, MYSTRING, MYLENGTH) \
94*c87b03e5Sespie   do {									      \
95*c87b03e5Sespie     FILE *_hide_asm_out_file = (MYFILE);				      \
96*c87b03e5Sespie     const unsigned char *_hide_p = (const unsigned char *) (MYSTRING);	      \
97*c87b03e5Sespie     int _hide_thissize = (MYLENGTH);					      \
98*c87b03e5Sespie     {									      \
99*c87b03e5Sespie       FILE *asm_out_file = _hide_asm_out_file;				      \
100*c87b03e5Sespie       const unsigned char *p = _hide_p;					      \
101*c87b03e5Sespie       int thissize = _hide_thissize;					      \
102*c87b03e5Sespie       int i;								      \
103*c87b03e5Sespie       fprintf (asm_out_file, "\t.ascii \"");				      \
104*c87b03e5Sespie 									      \
105*c87b03e5Sespie       for (i = 0; i < thissize; i++)					      \
106*c87b03e5Sespie 	{								      \
107*c87b03e5Sespie 	  int c = p[i];			   				      \
108*c87b03e5Sespie 	  if (c == '\"' || c == '\\')					      \
109*c87b03e5Sespie 	    putc ('\\', asm_out_file);					      \
110*c87b03e5Sespie 	  if (ISPRINT(c))						      \
111*c87b03e5Sespie 	    putc (c, asm_out_file);					      \
112*c87b03e5Sespie 	  else								      \
113*c87b03e5Sespie 	    {								      \
114*c87b03e5Sespie 	      fprintf (asm_out_file, "\\%o", c);			      \
115*c87b03e5Sespie 	      /* After an octal-escape, if a digit follows,		      \
116*c87b03e5Sespie 		 terminate one string constant and start another.	      \
117*c87b03e5Sespie 		 The VAX assembler fails to stop reading the escape	      \
118*c87b03e5Sespie 		 after three digits, so this is the only way we		      \
119*c87b03e5Sespie 		 can get it to parse the data properly.  */		      \
120*c87b03e5Sespie 	      if (i < thissize - 1 && ISDIGIT(p[i + 1]))		      \
121*c87b03e5Sespie 		fprintf (asm_out_file, "\"\n\t.ascii \"");		      \
122*c87b03e5Sespie 	  }								      \
123*c87b03e5Sespie 	}								      \
124*c87b03e5Sespie       fprintf (asm_out_file, "\"\n");					      \
125*c87b03e5Sespie     }									      \
126*c87b03e5Sespie   }									      \
127*c87b03e5Sespie   while (0)
128*c87b03e5Sespie #endif
129*c87b03e5Sespie 
130*c87b03e5Sespie /* This is how we tell the assembler to equate two values.  */
131*c87b03e5Sespie #ifdef SET_ASM_OP
132*c87b03e5Sespie #ifndef ASM_OUTPUT_DEF
133*c87b03e5Sespie #define ASM_OUTPUT_DEF(FILE,LABEL1,LABEL2)				\
134*c87b03e5Sespie  do {	fprintf ((FILE), "%s", SET_ASM_OP);				\
135*c87b03e5Sespie 	assemble_name (FILE, LABEL1);					\
136*c87b03e5Sespie 	fprintf (FILE, ",");						\
137*c87b03e5Sespie 	assemble_name (FILE, LABEL2);					\
138*c87b03e5Sespie 	fprintf (FILE, "\n");						\
139*c87b03e5Sespie   } while (0)
140*c87b03e5Sespie #endif
141*c87b03e5Sespie #endif
142*c87b03e5Sespie 
143*c87b03e5Sespie /* This is how to output the definition of a user-level label named
144*c87b03e5Sespie    NAME, such as the label on a static function or variable NAME.  */
145*c87b03e5Sespie 
146*c87b03e5Sespie #ifndef ASM_OUTPUT_LABEL
147*c87b03e5Sespie #define ASM_OUTPUT_LABEL(FILE,NAME) \
148*c87b03e5Sespie   do { assemble_name ((FILE), (NAME)); fputs (":\n", (FILE)); } while (0)
149*c87b03e5Sespie #endif
150*c87b03e5Sespie 
151*c87b03e5Sespie /* This is how to output a reference to a user-level label named NAME.  */
152*c87b03e5Sespie 
153*c87b03e5Sespie #ifndef ASM_OUTPUT_LABELREF
154*c87b03e5Sespie #define ASM_OUTPUT_LABELREF(FILE,NAME)  asm_fprintf ((FILE), "%U%s", (NAME))
155*c87b03e5Sespie #endif
156*c87b03e5Sespie 
157*c87b03e5Sespie /* Allow target to print debug info labels specially.  This is useful for
158*c87b03e5Sespie    VLIW targets, since debug info labels should go into the middle of
159*c87b03e5Sespie    instruction bundles instead of breaking them.  */
160*c87b03e5Sespie 
161*c87b03e5Sespie #ifndef ASM_OUTPUT_DEBUG_LABEL
162*c87b03e5Sespie #define ASM_OUTPUT_DEBUG_LABEL(FILE, PREFIX, NUM) \
163*c87b03e5Sespie   ASM_OUTPUT_INTERNAL_LABEL (FILE, PREFIX, NUM)
164*c87b03e5Sespie #endif
165*c87b03e5Sespie 
166*c87b03e5Sespie /* This is how we tell the assembler that a symbol is weak.  */
167*c87b03e5Sespie #ifndef ASM_OUTPUT_WEAK_ALIAS
168*c87b03e5Sespie #if defined (ASM_WEAKEN_LABEL) && defined (ASM_OUTPUT_DEF)
169*c87b03e5Sespie #define ASM_OUTPUT_WEAK_ALIAS(STREAM, NAME, VALUE)	\
170*c87b03e5Sespie   do							\
171*c87b03e5Sespie     {							\
172*c87b03e5Sespie       ASM_WEAKEN_LABEL (STREAM, NAME);			\
173*c87b03e5Sespie       if (VALUE)					\
174*c87b03e5Sespie         ASM_OUTPUT_DEF (STREAM, NAME, VALUE);		\
175*c87b03e5Sespie     }							\
176*c87b03e5Sespie   while (0)
177*c87b03e5Sespie #endif
178*c87b03e5Sespie #endif
179*c87b03e5Sespie 
180*c87b03e5Sespie /* How to emit a .type directive.  */
181*c87b03e5Sespie #ifndef ASM_OUTPUT_TYPE_DIRECTIVE
182*c87b03e5Sespie #if defined TYPE_ASM_OP && defined TYPE_OPERAND_FMT
183*c87b03e5Sespie #define ASM_OUTPUT_TYPE_DIRECTIVE(STREAM, NAME, TYPE)	\
184*c87b03e5Sespie   do							\
185*c87b03e5Sespie     {							\
186*c87b03e5Sespie       fputs (TYPE_ASM_OP, STREAM);			\
187*c87b03e5Sespie       assemble_name (STREAM, NAME);			\
188*c87b03e5Sespie       fputs (", ", STREAM);				\
189*c87b03e5Sespie       fprintf (STREAM, TYPE_OPERAND_FMT, TYPE);		\
190*c87b03e5Sespie       putc ('\n', STREAM);				\
191*c87b03e5Sespie     }							\
192*c87b03e5Sespie   while (0)
193*c87b03e5Sespie #endif
194*c87b03e5Sespie #endif
195*c87b03e5Sespie 
196*c87b03e5Sespie /* How to emit a .size directive.  */
197*c87b03e5Sespie #ifndef ASM_OUTPUT_SIZE_DIRECTIVE
198*c87b03e5Sespie #ifdef SIZE_ASM_OP
199*c87b03e5Sespie #define ASM_OUTPUT_SIZE_DIRECTIVE(STREAM, NAME, SIZE)	\
200*c87b03e5Sespie   do							\
201*c87b03e5Sespie     {							\
202*c87b03e5Sespie       HOST_WIDE_INT size_ = (SIZE);			\
203*c87b03e5Sespie       fputs (SIZE_ASM_OP, STREAM);			\
204*c87b03e5Sespie       assemble_name (STREAM, NAME);			\
205*c87b03e5Sespie       fputs (", ", STREAM);				\
206*c87b03e5Sespie       fprintf (STREAM, HOST_WIDE_INT_PRINT_DEC, size_);	\
207*c87b03e5Sespie       putc ('\n', STREAM);				\
208*c87b03e5Sespie     }							\
209*c87b03e5Sespie   while (0)
210*c87b03e5Sespie 
211*c87b03e5Sespie #define ASM_OUTPUT_MEASURED_SIZE(STREAM, NAME)		\
212*c87b03e5Sespie   do							\
213*c87b03e5Sespie     {							\
214*c87b03e5Sespie       fputs (SIZE_ASM_OP, STREAM);			\
215*c87b03e5Sespie       assemble_name (STREAM, NAME);			\
216*c87b03e5Sespie       fputs (", .-", STREAM);				\
217*c87b03e5Sespie       assemble_name (STREAM, NAME);			\
218*c87b03e5Sespie       putc ('\n', STREAM);				\
219*c87b03e5Sespie     }							\
220*c87b03e5Sespie   while (0)
221*c87b03e5Sespie 
222*c87b03e5Sespie #endif
223*c87b03e5Sespie #endif
224*c87b03e5Sespie 
225*c87b03e5Sespie /* This determines whether or not we support weak symbols.  */
226*c87b03e5Sespie #ifndef SUPPORTS_WEAK
227*c87b03e5Sespie #if defined (ASM_WEAKEN_LABEL) || defined (ASM_WEAKEN_DECL)
228*c87b03e5Sespie #define SUPPORTS_WEAK 1
229*c87b03e5Sespie #else
230*c87b03e5Sespie #define SUPPORTS_WEAK 0
231*c87b03e5Sespie #endif
232*c87b03e5Sespie #endif
233*c87b03e5Sespie 
234*c87b03e5Sespie /* This determines whether or not we support link-once semantics.  */
235*c87b03e5Sespie #ifndef SUPPORTS_ONE_ONLY
236*c87b03e5Sespie #ifdef MAKE_DECL_ONE_ONLY
237*c87b03e5Sespie #define SUPPORTS_ONE_ONLY 1
238*c87b03e5Sespie #else
239*c87b03e5Sespie #define SUPPORTS_ONE_ONLY 0
240*c87b03e5Sespie #endif
241*c87b03e5Sespie #endif
242*c87b03e5Sespie 
243*c87b03e5Sespie /* By default, there is no prefix on user-defined symbols.  */
244*c87b03e5Sespie #ifndef USER_LABEL_PREFIX
245*c87b03e5Sespie #define USER_LABEL_PREFIX ""
246*c87b03e5Sespie #endif
247*c87b03e5Sespie 
248*c87b03e5Sespie /* If the target supports weak symbols, define TARGET_ATTRIBUTE_WEAK to
249*c87b03e5Sespie    provide a weak attribute.  Else define it to nothing.
250*c87b03e5Sespie 
251*c87b03e5Sespie    This would normally belong in ansidecl.h, but SUPPORTS_WEAK is
252*c87b03e5Sespie    not available at that time.
253*c87b03e5Sespie 
254*c87b03e5Sespie    Note, this is only for use by target files which we know are to be
255*c87b03e5Sespie    compiled by GCC.  */
256*c87b03e5Sespie #ifndef TARGET_ATTRIBUTE_WEAK
257*c87b03e5Sespie # if SUPPORTS_WEAK
258*c87b03e5Sespie #  define TARGET_ATTRIBUTE_WEAK __attribute__ ((weak))
259*c87b03e5Sespie # else
260*c87b03e5Sespie #  define TARGET_ATTRIBUTE_WEAK
261*c87b03e5Sespie # endif
262*c87b03e5Sespie #endif
263*c87b03e5Sespie 
264*c87b03e5Sespie /* If the target supports init_priority C++ attribute, give
265*c87b03e5Sespie    SUPPORTS_INIT_PRIORITY a nonzero value.  */
266*c87b03e5Sespie #ifndef SUPPORTS_INIT_PRIORITY
267*c87b03e5Sespie #define SUPPORTS_INIT_PRIORITY 1
268*c87b03e5Sespie #endif /* SUPPORTS_INIT_PRIORITY */
269*c87b03e5Sespie 
270*c87b03e5Sespie /* If duplicate library search directories can be removed from a
271*c87b03e5Sespie    linker command without changing the linker's semantics, give this
272*c87b03e5Sespie    symbol a nonzero.  */
273*c87b03e5Sespie #ifndef LINK_ELIMINATE_DUPLICATE_LDIRECTORIES
274*c87b03e5Sespie #define LINK_ELIMINATE_DUPLICATE_LDIRECTORIES 0
275*c87b03e5Sespie #endif /* LINK_ELIMINATE_DUPLICATE_LDIRECTORIES */
276*c87b03e5Sespie 
277*c87b03e5Sespie /* If we have a definition of INCOMING_RETURN_ADDR_RTX, assume that
278*c87b03e5Sespie    the rest of the DWARF 2 frame unwind support is also provided.  */
279*c87b03e5Sespie #if !defined (DWARF2_UNWIND_INFO) && defined (INCOMING_RETURN_ADDR_RTX)
280*c87b03e5Sespie #define DWARF2_UNWIND_INFO 1
281*c87b03e5Sespie #endif
282*c87b03e5Sespie 
283*c87b03e5Sespie /* If we have named sections, and we're using crtstuff to run ctors,
284*c87b03e5Sespie    use them for registering eh frame information.  */
285*c87b03e5Sespie #if defined (TARGET_ASM_NAMED_SECTION) && DWARF2_UNWIND_INFO \
286*c87b03e5Sespie     && !defined(EH_FRAME_IN_DATA_SECTION)
287*c87b03e5Sespie #ifndef EH_FRAME_SECTION_NAME
288*c87b03e5Sespie #define EH_FRAME_SECTION_NAME ".eh_frame"
289*c87b03e5Sespie #endif
290*c87b03e5Sespie #endif
291*c87b03e5Sespie 
292*c87b03e5Sespie /* If we have named section and we support weak symbols, then use the
293*c87b03e5Sespie    .jcr section for recording java classes which need to be registered
294*c87b03e5Sespie    at program start-up time.  */
295*c87b03e5Sespie #if defined (TARGET_ASM_NAMED_SECTION) && SUPPORTS_WEAK
296*c87b03e5Sespie #ifndef JCR_SECTION_NAME
297*c87b03e5Sespie #define JCR_SECTION_NAME ".jcr"
298*c87b03e5Sespie #endif
299*c87b03e5Sespie #endif
300*c87b03e5Sespie 
301*c87b03e5Sespie /* By default, we generate a label at the beginning and end of the
302*c87b03e5Sespie    text section, and compute the size of the text section by
303*c87b03e5Sespie    subtracting the two.  However, on some platforms that doesn't
304*c87b03e5Sespie    work, and we use the section itself, rather than a label at the
305*c87b03e5Sespie    beginning of it, to indicate the start of the section.  On such
306*c87b03e5Sespie    platforms, define this to zero.  */
307*c87b03e5Sespie #ifndef DWARF2_GENERATE_TEXT_SECTION_LABEL
308*c87b03e5Sespie #define DWARF2_GENERATE_TEXT_SECTION_LABEL 1
309*c87b03e5Sespie #endif
310*c87b03e5Sespie 
311*c87b03e5Sespie /* Supply a default definition for PROMOTE_PROTOTYPES.  */
312*c87b03e5Sespie #ifndef PROMOTE_PROTOTYPES
313*c87b03e5Sespie #define PROMOTE_PROTOTYPES	0
314*c87b03e5Sespie #endif
315*c87b03e5Sespie 
316*c87b03e5Sespie /* Number of hardware registers that go into the DWARF-2 unwind info.
317*c87b03e5Sespie    If not defined, equals FIRST_PSEUDO_REGISTER  */
318*c87b03e5Sespie 
319*c87b03e5Sespie #ifndef DWARF_FRAME_REGISTERS
320*c87b03e5Sespie #define DWARF_FRAME_REGISTERS FIRST_PSEUDO_REGISTER
321*c87b03e5Sespie #endif
322*c87b03e5Sespie 
323*c87b03e5Sespie /* How to renumber registers for dbx and gdb.  If not defined, assume
324*c87b03e5Sespie    no renumbering is necessary.  */
325*c87b03e5Sespie 
326*c87b03e5Sespie #ifndef DBX_REGISTER_NUMBER
327*c87b03e5Sespie #define DBX_REGISTER_NUMBER(REGNO) (REGNO)
328*c87b03e5Sespie #endif
329*c87b03e5Sespie 
330*c87b03e5Sespie /* Default sizes for base C types.  If the sizes are different for
331*c87b03e5Sespie    your target, you should override these values by defining the
332*c87b03e5Sespie    appropriate symbols in your tm.h file.  */
333*c87b03e5Sespie 
334*c87b03e5Sespie #ifndef BITS_PER_UNIT
335*c87b03e5Sespie #define BITS_PER_UNIT 8
336*c87b03e5Sespie #endif
337*c87b03e5Sespie 
338*c87b03e5Sespie #ifndef BITS_PER_WORD
339*c87b03e5Sespie #define BITS_PER_WORD (BITS_PER_UNIT * UNITS_PER_WORD)
340*c87b03e5Sespie #endif
341*c87b03e5Sespie 
342*c87b03e5Sespie #ifndef CHAR_TYPE_SIZE
343*c87b03e5Sespie #define CHAR_TYPE_SIZE BITS_PER_UNIT
344*c87b03e5Sespie #endif
345*c87b03e5Sespie 
346*c87b03e5Sespie #ifndef BOOL_TYPE_SIZE
347*c87b03e5Sespie /* `bool' has size and alignment `1', on almost all platforms.  */
348*c87b03e5Sespie #define BOOL_TYPE_SIZE CHAR_TYPE_SIZE
349*c87b03e5Sespie #endif
350*c87b03e5Sespie 
351*c87b03e5Sespie #ifndef SHORT_TYPE_SIZE
352*c87b03e5Sespie #define SHORT_TYPE_SIZE (BITS_PER_UNIT * MIN ((UNITS_PER_WORD + 1) / 2, 2))
353*c87b03e5Sespie #endif
354*c87b03e5Sespie 
355*c87b03e5Sespie #ifndef INT_TYPE_SIZE
356*c87b03e5Sespie #define INT_TYPE_SIZE BITS_PER_WORD
357*c87b03e5Sespie #endif
358*c87b03e5Sespie 
359*c87b03e5Sespie #ifndef LONG_TYPE_SIZE
360*c87b03e5Sespie #define LONG_TYPE_SIZE BITS_PER_WORD
361*c87b03e5Sespie #endif
362*c87b03e5Sespie 
363*c87b03e5Sespie #ifndef LONG_LONG_TYPE_SIZE
364*c87b03e5Sespie #define LONG_LONG_TYPE_SIZE (BITS_PER_WORD * 2)
365*c87b03e5Sespie #endif
366*c87b03e5Sespie 
367*c87b03e5Sespie #ifndef WCHAR_TYPE_SIZE
368*c87b03e5Sespie #define WCHAR_TYPE_SIZE INT_TYPE_SIZE
369*c87b03e5Sespie #endif
370*c87b03e5Sespie 
371*c87b03e5Sespie #ifndef FLOAT_TYPE_SIZE
372*c87b03e5Sespie #define FLOAT_TYPE_SIZE BITS_PER_WORD
373*c87b03e5Sespie #endif
374*c87b03e5Sespie 
375*c87b03e5Sespie #ifndef DOUBLE_TYPE_SIZE
376*c87b03e5Sespie #define DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
377*c87b03e5Sespie #endif
378*c87b03e5Sespie 
379*c87b03e5Sespie #ifndef LONG_DOUBLE_TYPE_SIZE
380*c87b03e5Sespie #define LONG_DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
381*c87b03e5Sespie #endif
382*c87b03e5Sespie 
383*c87b03e5Sespie /* Width in bits of a pointer.  Mind the value of the macro `Pmode'.  */
384*c87b03e5Sespie #ifndef POINTER_SIZE
385*c87b03e5Sespie #define POINTER_SIZE BITS_PER_WORD
386*c87b03e5Sespie #endif
387*c87b03e5Sespie 
388*c87b03e5Sespie #ifndef BUILD_VA_LIST_TYPE
389*c87b03e5Sespie #define BUILD_VA_LIST_TYPE(X) ((X) = ptr_type_node)
390*c87b03e5Sespie #endif
391*c87b03e5Sespie 
392*c87b03e5Sespie #ifndef PIC_OFFSET_TABLE_REGNUM
393*c87b03e5Sespie #define PIC_OFFSET_TABLE_REGNUM INVALID_REGNUM
394*c87b03e5Sespie #endif
395*c87b03e5Sespie 
396*c87b03e5Sespie /* Type used by GCOV counters.  Use 64bit data type if target supports
397*c87b03e5Sespie    it.  */
398*c87b03e5Sespie #if LONG_TYPE_SIZE >= 64
399*c87b03e5Sespie #define GCOV_TYPE_SIZE LONG_TYPE_SIZE
400*c87b03e5Sespie #else
401*c87b03e5Sespie #define GCOV_TYPE_SIZE LONG_LONG_TYPE_SIZE
402*c87b03e5Sespie #endif
403*c87b03e5Sespie 
404*c87b03e5Sespie 
405*c87b03e5Sespie /* By default, the preprocessor should be invoked the same way in C++
406*c87b03e5Sespie    as in C.  */
407*c87b03e5Sespie #ifndef CPLUSPLUS_CPP_SPEC
408*c87b03e5Sespie #ifdef CPP_SPEC
409*c87b03e5Sespie #define CPLUSPLUS_CPP_SPEC CPP_SPEC
410*c87b03e5Sespie #endif
411*c87b03e5Sespie #endif
412*c87b03e5Sespie 
413*c87b03e5Sespie #ifndef ACCUMULATE_OUTGOING_ARGS
414*c87b03e5Sespie #define ACCUMULATE_OUTGOING_ARGS 0
415*c87b03e5Sespie #endif
416*c87b03e5Sespie 
417*c87b03e5Sespie /* Supply a default definition for PUSH_ARGS.  */
418*c87b03e5Sespie #ifndef PUSH_ARGS
419*c87b03e5Sespie #ifdef PUSH_ROUNDING
420*c87b03e5Sespie #define PUSH_ARGS	!ACCUMULATE_OUTGOING_ARGS
421*c87b03e5Sespie #else
422*c87b03e5Sespie #define PUSH_ARGS	0
423*c87b03e5Sespie #endif
424*c87b03e5Sespie #endif
425*c87b03e5Sespie 
426*c87b03e5Sespie /* If PREFERRED_STACK_BOUNDARY is not defined, set it to STACK_BOUNDARY.
427*c87b03e5Sespie    STACK_BOUNDARY is required.  */
428*c87b03e5Sespie #ifndef PREFERRED_STACK_BOUNDARY
429*c87b03e5Sespie #define PREFERRED_STACK_BOUNDARY STACK_BOUNDARY
430*c87b03e5Sespie #endif
431*c87b03e5Sespie 
432*c87b03e5Sespie /* By default, the C++ compiler will use function addresses in the
433*c87b03e5Sespie    vtable entries.  Setting this nonzero tells the compiler to use
434*c87b03e5Sespie    function descriptors instead.  The value of this macro says how
435*c87b03e5Sespie    many words wide the descriptor is (normally 2).  It is assumed
436*c87b03e5Sespie    that the address of a function descriptor may be treated as a
437*c87b03e5Sespie    pointer to a function.  */
438*c87b03e5Sespie #ifndef TARGET_VTABLE_USES_DESCRIPTORS
439*c87b03e5Sespie #define TARGET_VTABLE_USES_DESCRIPTORS 0
440*c87b03e5Sespie #endif
441*c87b03e5Sespie 
442*c87b03e5Sespie /* By default, the vtable entries are void pointers, the so the alignment
443*c87b03e5Sespie    is the same as pointer alignment.  The value of this macro specifies
444*c87b03e5Sespie    the alignment of the vtable entry in bits.  It should be defined only
445*c87b03e5Sespie    when special alignment is necessary.  */
446*c87b03e5Sespie #ifndef TARGET_VTABLE_ENTRY_ALIGN
447*c87b03e5Sespie #define TARGET_VTABLE_ENTRY_ALIGN POINTER_SIZE
448*c87b03e5Sespie #endif
449*c87b03e5Sespie 
450*c87b03e5Sespie /* There are a few non-descriptor entries in the vtable at offsets below
451*c87b03e5Sespie    zero.  If these entries must be padded (say, to preserve the alignment
452*c87b03e5Sespie    specified by TARGET_VTABLE_ENTRY_ALIGN), set this to the number of
453*c87b03e5Sespie    words in each data entry.  */
454*c87b03e5Sespie #ifndef TARGET_VTABLE_DATA_ENTRY_DISTANCE
455*c87b03e5Sespie #define TARGET_VTABLE_DATA_ENTRY_DISTANCE 1
456*c87b03e5Sespie #endif
457*c87b03e5Sespie 
458*c87b03e5Sespie /* Select a format to encode pointers in exception handling data.  We
459*c87b03e5Sespie    prefer those that result in fewer dynamic relocations.  Assume no
460*c87b03e5Sespie    special support here and encode direct references.  */
461*c87b03e5Sespie #ifndef ASM_PREFERRED_EH_DATA_FORMAT
462*c87b03e5Sespie #define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL)  DW_EH_PE_absptr
463*c87b03e5Sespie #endif
464*c87b03e5Sespie 
465*c87b03e5Sespie /* By default, the C++ compiler will use the lowest bit of the pointer
466*c87b03e5Sespie    to function to indicate a pointer-to-member-function points to a
467*c87b03e5Sespie    virtual member function.  However, if FUNCTION_BOUNDARY indicates
468*c87b03e5Sespie    function addresses aren't always even, the lowest bit of the delta
469*c87b03e5Sespie    field will be used.  */
470*c87b03e5Sespie #ifndef TARGET_PTRMEMFUNC_VBIT_LOCATION
471*c87b03e5Sespie #define TARGET_PTRMEMFUNC_VBIT_LOCATION \
472*c87b03e5Sespie   (FUNCTION_BOUNDARY >= 2 * BITS_PER_UNIT \
473*c87b03e5Sespie    ? ptrmemfunc_vbit_in_pfn : ptrmemfunc_vbit_in_delta)
474*c87b03e5Sespie #endif
475*c87b03e5Sespie 
476*c87b03e5Sespie #ifndef DEFAULT_GDB_EXTENSIONS
477*c87b03e5Sespie #define DEFAULT_GDB_EXTENSIONS 1
478*c87b03e5Sespie #endif
479*c87b03e5Sespie 
480*c87b03e5Sespie /* If more than one debugging type is supported, you must define
481*c87b03e5Sespie    PREFERRED_DEBUGGING_TYPE to choose a format in a system-dependent way.
482*c87b03e5Sespie 
483*c87b03e5Sespie    This is one long line cause VAXC can't handle a \-newline.  */
484*c87b03e5Sespie #if 1 < (defined (DBX_DEBUGGING_INFO) + defined (SDB_DEBUGGING_INFO) + defined (DWARF_DEBUGGING_INFO) + defined (DWARF2_DEBUGGING_INFO) + defined (XCOFF_DEBUGGING_INFO) + defined (VMS_DEBUGGING_INFO))
485*c87b03e5Sespie #ifndef PREFERRED_DEBUGGING_TYPE
486*c87b03e5Sespie You Lose!  You must define PREFERRED_DEBUGGING_TYPE!
487*c87b03e5Sespie #endif /* no PREFERRED_DEBUGGING_TYPE */
488*c87b03e5Sespie #else /* Only one debugging format supported.  Define PREFERRED_DEBUGGING_TYPE
489*c87b03e5Sespie 	 so other code needn't care.  */
490*c87b03e5Sespie #ifdef DBX_DEBUGGING_INFO
491*c87b03e5Sespie #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
492*c87b03e5Sespie #endif
493*c87b03e5Sespie #ifdef SDB_DEBUGGING_INFO
494*c87b03e5Sespie #define PREFERRED_DEBUGGING_TYPE SDB_DEBUG
495*c87b03e5Sespie #endif
496*c87b03e5Sespie #ifdef DWARF_DEBUGGING_INFO
497*c87b03e5Sespie #define PREFERRED_DEBUGGING_TYPE DWARF_DEBUG
498*c87b03e5Sespie #endif
499*c87b03e5Sespie #ifdef DWARF2_DEBUGGING_INFO
500*c87b03e5Sespie #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
501*c87b03e5Sespie #endif
502*c87b03e5Sespie #ifdef VMS_DEBUGGING_INFO
503*c87b03e5Sespie #define PREFERRED_DEBUGGING_TYPE VMS_AND_DWARF2_DEBUG
504*c87b03e5Sespie #endif
505*c87b03e5Sespie #ifdef XCOFF_DEBUGGING_INFO
506*c87b03e5Sespie #define PREFERRED_DEBUGGING_TYPE XCOFF_DEBUG
507*c87b03e5Sespie #endif
508*c87b03e5Sespie #endif /* More than one debugger format enabled.  */
509*c87b03e5Sespie 
510*c87b03e5Sespie /* If still not defined, must have been because no debugging formats
511*c87b03e5Sespie    are supported.  */
512*c87b03e5Sespie #ifndef PREFERRED_DEBUGGING_TYPE
513*c87b03e5Sespie #define PREFERRED_DEBUGGING_TYPE NO_DEBUG
514*c87b03e5Sespie #endif
515*c87b03e5Sespie 
516*c87b03e5Sespie /* Define codes for all the float formats that we know of.  */
517*c87b03e5Sespie #define UNKNOWN_FLOAT_FORMAT 0
518*c87b03e5Sespie #define IEEE_FLOAT_FORMAT 1
519*c87b03e5Sespie #define VAX_FLOAT_FORMAT 2
520*c87b03e5Sespie #define IBM_FLOAT_FORMAT 3
521*c87b03e5Sespie #define C4X_FLOAT_FORMAT 4
522*c87b03e5Sespie 
523*c87b03e5Sespie /* Default to IEEE float if not specified.  Nearly all machines use it.  */
524*c87b03e5Sespie #ifndef TARGET_FLOAT_FORMAT
525*c87b03e5Sespie #define	TARGET_FLOAT_FORMAT	IEEE_FLOAT_FORMAT
526*c87b03e5Sespie #endif
527*c87b03e5Sespie 
528*c87b03e5Sespie /* Determine the register class for registers suitable to be the base
529*c87b03e5Sespie    address register in a MEM.  Allow the choice to be dependent upon
530*c87b03e5Sespie    the mode of the memory access.  */
531*c87b03e5Sespie #ifndef MODE_BASE_REG_CLASS
532*c87b03e5Sespie #define MODE_BASE_REG_CLASS(MODE) BASE_REG_CLASS
533*c87b03e5Sespie #endif
534*c87b03e5Sespie 
535*c87b03e5Sespie #ifndef LARGEST_EXPONENT_IS_NORMAL
536*c87b03e5Sespie #define LARGEST_EXPONENT_IS_NORMAL(SIZE) 0
537*c87b03e5Sespie #endif
538*c87b03e5Sespie 
539*c87b03e5Sespie #ifndef ROUND_TOWARDS_ZERO
540*c87b03e5Sespie #define ROUND_TOWARDS_ZERO 0
541*c87b03e5Sespie #endif
542*c87b03e5Sespie 
543*c87b03e5Sespie #ifndef MODE_HAS_NANS
544*c87b03e5Sespie #define MODE_HAS_NANS(MODE)					\
545*c87b03e5Sespie   (FLOAT_MODE_P (MODE)						\
546*c87b03e5Sespie    && TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT			\
547*c87b03e5Sespie    && !LARGEST_EXPONENT_IS_NORMAL (GET_MODE_BITSIZE (MODE)))
548*c87b03e5Sespie #endif
549*c87b03e5Sespie 
550*c87b03e5Sespie #ifndef MODE_HAS_INFINITIES
551*c87b03e5Sespie #define MODE_HAS_INFINITIES(MODE)				\
552*c87b03e5Sespie   (FLOAT_MODE_P (MODE)						\
553*c87b03e5Sespie    && TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT			\
554*c87b03e5Sespie    && !LARGEST_EXPONENT_IS_NORMAL (GET_MODE_BITSIZE (MODE)))
555*c87b03e5Sespie #endif
556*c87b03e5Sespie 
557*c87b03e5Sespie #ifndef MODE_HAS_SIGNED_ZEROS
558*c87b03e5Sespie #define MODE_HAS_SIGNED_ZEROS(MODE) \
559*c87b03e5Sespie   (FLOAT_MODE_P (MODE) && TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT)
560*c87b03e5Sespie #endif
561*c87b03e5Sespie 
562*c87b03e5Sespie #ifndef MODE_HAS_SIGN_DEPENDENT_ROUNDING
563*c87b03e5Sespie #define MODE_HAS_SIGN_DEPENDENT_ROUNDING(MODE)			\
564*c87b03e5Sespie   (FLOAT_MODE_P (MODE)						\
565*c87b03e5Sespie    && TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT			\
566*c87b03e5Sespie    && !ROUND_TOWARDS_ZERO)
567*c87b03e5Sespie #endif
568*c87b03e5Sespie 
569*c87b03e5Sespie /* If FLOAT_WORDS_BIG_ENDIAN and HOST_FLOAT_WORDS_BIG_ENDIAN are not defined
570*c87b03e5Sespie    in the header files, then this implies the word-endianness is the same as
571*c87b03e5Sespie    for integers.  */
572*c87b03e5Sespie #ifndef FLOAT_WORDS_BIG_ENDIAN
573*c87b03e5Sespie #define FLOAT_WORDS_BIG_ENDIAN WORDS_BIG_ENDIAN
574*c87b03e5Sespie #endif
575*c87b03e5Sespie 
576*c87b03e5Sespie #ifndef TARGET_FLT_EVAL_METHOD
577*c87b03e5Sespie #define TARGET_FLT_EVAL_METHOD 0
578*c87b03e5Sespie #endif
579*c87b03e5Sespie 
580*c87b03e5Sespie #ifndef HOT_TEXT_SECTION_NAME
581*c87b03e5Sespie #define HOT_TEXT_SECTION_NAME "text.hot"
582*c87b03e5Sespie #endif
583*c87b03e5Sespie 
584*c87b03e5Sespie #ifndef UNLIKELY_EXECUTED_TEXT_SECTION_NAME
585*c87b03e5Sespie #define UNLIKELY_EXECUTED_TEXT_SECTION_NAME "text.unlikely"
586*c87b03e5Sespie #endif
587*c87b03e5Sespie 
588*c87b03e5Sespie #ifndef VECTOR_MODE_SUPPORTED_P
589*c87b03e5Sespie #define VECTOR_MODE_SUPPORTED_P(MODE) 0
590*c87b03e5Sespie #endif
591*c87b03e5Sespie 
592*c87b03e5Sespie /* Determine whether __cxa_atexit, rather than atexit, is used to
593*c87b03e5Sespie    register C++ destructors for local statics and global objects.  */
594*c87b03e5Sespie #ifndef DEFAULT_USE_CXA_ATEXIT
595*c87b03e5Sespie #define DEFAULT_USE_CXA_ATEXIT 0
596*c87b03e5Sespie #endif
597*c87b03e5Sespie 
598*c87b03e5Sespie /* Determine whether extra constraint letter should be handled
599*c87b03e5Sespie    via address reload (like 'o').  */
600*c87b03e5Sespie #ifndef EXTRA_MEMORY_CONSTRAINT
601*c87b03e5Sespie #define EXTRA_MEMORY_CONSTRAINT(C) 0
602*c87b03e5Sespie #endif
603*c87b03e5Sespie 
604*c87b03e5Sespie /* Determine whether extra constraint letter should be handled
605*c87b03e5Sespie    as an address (like 'p').  */
606*c87b03e5Sespie #ifndef EXTRA_ADDRESS_CONSTRAINT
607*c87b03e5Sespie #define EXTRA_ADDRESS_CONSTRAINT(C) 0
608*c87b03e5Sespie #endif
609*c87b03e5Sespie 
610*c87b03e5Sespie #endif  /* ! GCC_DEFAULTS_H */
611