defaults.h revision 96263
190075Sobrien/* Definitions of various defaults for tm.h macros.
296263Sobrien   Copyright (C) 1992, 1996, 1997, 1998, 1999, 2000, 2001, 2002
390075Sobrien   Free Software Foundation, Inc.
451885Sobrien   Contributed by Ron Guilmette (rfg@monkeys.com)
518334Speter
690075SobrienThis file is part of GCC.
718334Speter
890075SobrienGCC is free software; you can redistribute it and/or modify it under
990075Sobrienthe terms of the GNU General Public License as published by the Free
1090075SobrienSoftware Foundation; either version 2, or (at your option) any later
1190075Sobrienversion.
1218334Speter
1390075SobrienGCC is distributed in the hope that it will be useful, but WITHOUT ANY
1490075SobrienWARRANTY; without even the implied warranty of MERCHANTABILITY or
1590075SobrienFITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
1690075Sobrienfor more details.
1718334Speter
1818334SpeterYou should have received a copy of the GNU General Public License
1990075Sobrienalong with GCC; see the file COPYING.  If not, write to the Free
2090075SobrienSoftware Foundation, 59 Temple Place - Suite 330, Boston, MA
2190075Sobrien02111-1307, USA.  */
2218334Speter
2390075Sobrien#ifndef GCC_DEFAULTS_H
2490075Sobrien#define GCC_DEFAULTS_H
2590075Sobrien
2690075Sobrien/* Define default standard character escape sequences.  */
2790075Sobrien#ifndef TARGET_BELL
2890075Sobrien#  define TARGET_BELL 007
2990075Sobrien#  define TARGET_BS 010
3090075Sobrien#  define TARGET_TAB 011
3190075Sobrien#  define TARGET_NEWLINE 012
3290075Sobrien#  define TARGET_VT 013
3390075Sobrien#  define TARGET_FF 014
3490075Sobrien#  define TARGET_CR 015
3590075Sobrien#  define TARGET_ESC 033
3690075Sobrien#endif
3790075Sobrien
3818334Speter/* Store in OUTPUT a string (made with alloca) containing
3918334Speter   an assembler-name for a local static variable or function named NAME.
4018334Speter   LABELNO is an integer which is different for each call.  */
4118334Speter
4218334Speter#ifndef ASM_FORMAT_PRIVATE_NAME
4318334Speter#define ASM_FORMAT_PRIVATE_NAME(OUTPUT, NAME, LABELNO)			\
4418334Speter  do {									\
4518334Speter    int len = strlen (NAME);						\
4618334Speter    char *temp = (char *) alloca (len + 3);				\
4718334Speter    temp[0] = 'L';							\
4818334Speter    strcpy (&temp[1], (NAME));						\
4918334Speter    temp[len + 1] = '.';						\
5018334Speter    temp[len + 2] = 0;							\
5118334Speter    (OUTPUT) = (char *) alloca (strlen (NAME) + 11);			\
5218334Speter    ASM_GENERATE_INTERNAL_LABEL (OUTPUT, temp, LABELNO);		\
5318334Speter  } while (0)
5418334Speter#endif
5518334Speter
5618334Speter#ifndef ASM_STABD_OP
5790075Sobrien#define ASM_STABD_OP "\t.stabd\t"
5818334Speter#endif
5918334Speter
6018334Speter/* This is how to output an element of a case-vector that is absolute.
6118334Speter   Some targets don't use this, but we have to define it anyway.  */
6218334Speter
6318334Speter#ifndef ASM_OUTPUT_ADDR_VEC_ELT
6418334Speter#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE)  \
6590075Sobriendo { fputs (integer_asm_op (POINTER_SIZE / UNITS_PER_WORD, TRUE), FILE); \
6618334Speter     ASM_OUTPUT_INTERNAL_LABEL (FILE, "L", (VALUE));			\
6718334Speter     fputc ('\n', FILE);						\
6818334Speter   } while (0)
6918334Speter#endif
7018334Speter
7190075Sobrien/* Provide default for ASM_OUTPUT_ALTERNATE_LABEL_NAME.  */
7290075Sobrien#ifndef ASM_OUTPUT_ALTERNATE_LABEL_NAME
7390075Sobrien#define ASM_OUTPUT_ALTERNATE_LABEL_NAME(FILE,INSN) \
7490075Sobriendo { ASM_OUTPUT_LABEL(FILE,LABEL_ALTERNATE_NAME (INSN)); } while (0)
7590075Sobrien#endif
7690075Sobrien
7718334Speter/* choose a reasonable default for ASM_OUTPUT_ASCII.  */
7818334Speter
7918334Speter#ifndef ASM_OUTPUT_ASCII
8018334Speter#define ASM_OUTPUT_ASCII(MYFILE, MYSTRING, MYLENGTH) \
8118334Speter  do {									      \
8218334Speter    FILE *_hide_asm_out_file = (MYFILE);				      \
8390075Sobrien    const unsigned char *_hide_p = (const unsigned char *) (MYSTRING);	      \
8418334Speter    int _hide_thissize = (MYLENGTH);					      \
8518334Speter    {									      \
8618334Speter      FILE *asm_out_file = _hide_asm_out_file;				      \
8790075Sobrien      const unsigned char *p = _hide_p;					      \
8818334Speter      int thissize = _hide_thissize;					      \
8918334Speter      int i;								      \
9018334Speter      fprintf (asm_out_file, "\t.ascii \"");				      \
9118334Speter									      \
9218334Speter      for (i = 0; i < thissize; i++)					      \
9318334Speter	{								      \
9490075Sobrien	  int c = p[i];			   				      \
9518334Speter	  if (c == '\"' || c == '\\')					      \
9618334Speter	    putc ('\\', asm_out_file);					      \
9790075Sobrien	  if (ISPRINT(c))						      \
9818334Speter	    putc (c, asm_out_file);					      \
9918334Speter	  else								      \
10018334Speter	    {								      \
10118334Speter	      fprintf (asm_out_file, "\\%o", c);			      \
10218334Speter	      /* After an octal-escape, if a digit follows,		      \
10318334Speter		 terminate one string constant and start another.	      \
10490075Sobrien		 The VAX assembler fails to stop reading the escape	      \
10518334Speter		 after three digits, so this is the only way we		      \
10618334Speter		 can get it to parse the data properly.  */		      \
10790075Sobrien	      if (i < thissize - 1 && ISDIGIT(p[i + 1]))		      \
10818334Speter		fprintf (asm_out_file, "\"\n\t.ascii \"");		      \
10918334Speter	  }								      \
11018334Speter	}								      \
11118334Speter      fprintf (asm_out_file, "\"\n");					      \
11218334Speter    }									      \
11318334Speter  }									      \
11418334Speter  while (0)
11518334Speter#endif
11618334Speter
11718334Speter/* This is how we tell the assembler to equate two values.  */
11818334Speter#ifdef SET_ASM_OP
11918334Speter#ifndef ASM_OUTPUT_DEF
12018334Speter#define ASM_OUTPUT_DEF(FILE,LABEL1,LABEL2)				\
12190075Sobrien do {	fprintf ((FILE), "%s", SET_ASM_OP);				\
12218334Speter	assemble_name (FILE, LABEL1);					\
12318334Speter	fprintf (FILE, ",");						\
12418334Speter	assemble_name (FILE, LABEL2);					\
12518334Speter	fprintf (FILE, "\n");						\
12618334Speter  } while (0)
12718334Speter#endif
12818334Speter#endif
12918334Speter
13051885Sobrien/* This is how to output a reference to a user-level label named NAME.  */
13151885Sobrien
13251885Sobrien#ifndef ASM_OUTPUT_LABELREF
13356173Sobrien#define ASM_OUTPUT_LABELREF(FILE,NAME)  asm_fprintf ((FILE), "%U%s", (NAME))
13451885Sobrien#endif
13551885Sobrien
13690075Sobrien/* Allow target to print debug info labels specially.  This is useful for
13790075Sobrien   VLIW targets, since debug info labels should go into the middle of
13890075Sobrien   instruction bundles instead of breaking them.  */
13990075Sobrien
14090075Sobrien#ifndef ASM_OUTPUT_DEBUG_LABEL
14190075Sobrien#define ASM_OUTPUT_DEBUG_LABEL(FILE, PREFIX, NUM) \
14290075Sobrien  ASM_OUTPUT_INTERNAL_LABEL (FILE, PREFIX, NUM)
14390075Sobrien#endif
14490075Sobrien
14590075Sobrien/* This is how we tell the assembler that a symbol is weak.  */
14690075Sobrien#ifndef ASM_OUTPUT_WEAK_ALIAS
14790075Sobrien#if defined (ASM_WEAKEN_LABEL) && defined (ASM_OUTPUT_DEF)
14890075Sobrien#define ASM_OUTPUT_WEAK_ALIAS(STREAM, NAME, VALUE)	\
14990075Sobrien  do							\
15090075Sobrien    {							\
15190075Sobrien      ASM_WEAKEN_LABEL (STREAM, NAME);			\
15290075Sobrien      if (VALUE)					\
15390075Sobrien        ASM_OUTPUT_DEF (STREAM, NAME, VALUE);		\
15490075Sobrien    }							\
15590075Sobrien  while (0)
15690075Sobrien#endif
15790075Sobrien#endif
15890075Sobrien
15918334Speter/* This determines whether or not we support weak symbols.  */
16018334Speter#ifndef SUPPORTS_WEAK
16196263Sobrien#if defined (ASM_WEAKEN_LABEL) || defined (ASM_WEAKEN_DECL)
16218334Speter#define SUPPORTS_WEAK 1
16318334Speter#else
16418334Speter#define SUPPORTS_WEAK 0
16518334Speter#endif
16618334Speter#endif
16751885Sobrien
16890075Sobrien/* This determines whether or not we support link-once semantics.  */
16990075Sobrien#ifndef SUPPORTS_ONE_ONLY
17090075Sobrien#ifdef MAKE_DECL_ONE_ONLY
17190075Sobrien#define SUPPORTS_ONE_ONLY 1
17290075Sobrien#else
17390075Sobrien#define SUPPORTS_ONE_ONLY 0
17490075Sobrien#endif
17590075Sobrien#endif
17690075Sobrien
17756173Sobrien/* If the target supports weak symbols, define TARGET_ATTRIBUTE_WEAK to
17856173Sobrien   provide a weak attribute.  Else define it to nothing.
17956173Sobrien
18090075Sobrien   This would normally belong in ansidecl.h, but SUPPORTS_WEAK is
18156173Sobrien   not available at that time.
18256173Sobrien
18356173Sobrien   Note, this is only for use by target files which we know are to be
18456173Sobrien   compiled by GCC.  */
18556173Sobrien#ifndef TARGET_ATTRIBUTE_WEAK
18656173Sobrien# if SUPPORTS_WEAK
18756173Sobrien#  define TARGET_ATTRIBUTE_WEAK __attribute__ ((weak))
18856173Sobrien# else
18956173Sobrien#  define TARGET_ATTRIBUTE_WEAK
19056173Sobrien# endif
19156173Sobrien#endif
19256173Sobrien
19390075Sobrien/* If the target supports init_priority C++ attribute, give
19490075Sobrien   SUPPORTS_INIT_PRIORITY a nonzero value.  */
19590075Sobrien#ifndef SUPPORTS_INIT_PRIORITY
19690075Sobrien#define SUPPORTS_INIT_PRIORITY 1
19790075Sobrien#endif /* SUPPORTS_INIT_PRIORITY */
19890075Sobrien
19990075Sobrien/* If duplicate library search directories can be removed from a
20090075Sobrien   linker command without changing the linker's semantics, give this
20190075Sobrien   symbol a nonzero.  */
20290075Sobrien#ifndef LINK_ELIMINATE_DUPLICATE_LDIRECTORIES
20390075Sobrien#define LINK_ELIMINATE_DUPLICATE_LDIRECTORIES 0
20490075Sobrien#endif /* LINK_ELIMINATE_DUPLICATE_LDIRECTORIES */
20590075Sobrien
20651885Sobrien/* If we have a definition of INCOMING_RETURN_ADDR_RTX, assume that
20751885Sobrien   the rest of the DWARF 2 frame unwind support is also provided.  */
20851885Sobrien#if !defined (DWARF2_UNWIND_INFO) && defined (INCOMING_RETURN_ADDR_RTX)
20951885Sobrien#define DWARF2_UNWIND_INFO 1
21051885Sobrien#endif
21190075Sobrien
21290075Sobrien/* If we have named sections, and we're using crtstuff to run ctors,
21390075Sobrien   use them for registering eh frame information.  */
21490075Sobrien#if defined (TARGET_ASM_NAMED_SECTION) && !defined(EH_FRAME_IN_DATA_SECTION)
21590075Sobrien#ifndef EH_FRAME_SECTION_NAME
21690075Sobrien#define EH_FRAME_SECTION_NAME ".eh_frame"
21790075Sobrien#endif
21890075Sobrien#endif
21990075Sobrien
22090075Sobrien/* If we have named section and we support weak symbols, then use the
22190075Sobrien   .jcr section for recording java classes which need to be registered
22290075Sobrien   at program start-up time.  */
22390075Sobrien#if defined (TARGET_ASM_NAMED_SECTION) && SUPPORTS_WEAK
22490075Sobrien#ifndef JCR_SECTION_NAME
22590075Sobrien#define JCR_SECTION_NAME ".jcr"
22690075Sobrien#endif
22790075Sobrien#endif
22890075Sobrien
22990075Sobrien/* If we have no definition for UNIQUE_SECTION, but do have the
23090075Sobrien   ability to generate arbitrary sections, construct something
23190075Sobrien   reasonable.  */
23290075Sobrien#ifndef UNIQUE_SECTION
23390075Sobrien#define UNIQUE_SECTION(DECL,RELOC)				\
23490075Sobriendo {								\
23590075Sobrien  int len;							\
23690075Sobrien  const char *name;						\
23790075Sobrien  char *string;							\
23890075Sobrien								\
23990075Sobrien  name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (DECL));	\
24090075Sobrien  /* Strip off any encoding in name.  */			\
24190075Sobrien  STRIP_NAME_ENCODING (name, name);				\
24290075Sobrien								\
24390075Sobrien  len = strlen (name) + 1;					\
24490075Sobrien  string = alloca (len + 1);					\
24590075Sobrien  sprintf (string, ".%s", name);				\
24690075Sobrien								\
24790075Sobrien  DECL_SECTION_NAME (DECL) = build_string (len, string);	\
24890075Sobrien} while (0)
24990075Sobrien#endif
25090075Sobrien
25190075Sobrien/* By default, we generate a label at the beginning and end of the
25290075Sobrien   text section, and compute the size of the text section by
25390075Sobrien   subtracting the two.  However, on some platforms that doesn't
25490075Sobrien   work, and we use the section itself, rather than a label at the
25590075Sobrien   beginning of it, to indicate the start of the section.  On such
25690075Sobrien   platforms, define this to zero.  */
25790075Sobrien#ifndef DWARF2_GENERATE_TEXT_SECTION_LABEL
25890075Sobrien#define DWARF2_GENERATE_TEXT_SECTION_LABEL 1
25990075Sobrien#endif
26090075Sobrien
26190075Sobrien/* Supply a default definition for PROMOTE_PROTOTYPES.  */
26290075Sobrien#ifndef PROMOTE_PROTOTYPES
26390075Sobrien#define PROMOTE_PROTOTYPES	0
26490075Sobrien#endif
26590075Sobrien
26690075Sobrien/* Number of hardware registers that go into the DWARF-2 unwind info.
26790075Sobrien   If not defined, equals FIRST_PSEUDO_REGISTER  */
26890075Sobrien
26990075Sobrien#ifndef DWARF_FRAME_REGISTERS
27090075Sobrien#define DWARF_FRAME_REGISTERS FIRST_PSEUDO_REGISTER
27190075Sobrien#endif
27290075Sobrien
27390075Sobrien/* How to renumber registers for dbx and gdb.  If not defined, assume
27490075Sobrien   no renumbering is necessary.  */
27590075Sobrien
27690075Sobrien#ifndef DBX_REGISTER_NUMBER
27790075Sobrien#define DBX_REGISTER_NUMBER(REGNO) (REGNO)
27890075Sobrien#endif
27990075Sobrien
28090075Sobrien/* Default sizes for base C types.  If the sizes are different for
28190075Sobrien   your target, you should override these values by defining the
28290075Sobrien   appropriate symbols in your tm.h file.  */
28390075Sobrien
28490075Sobrien#ifndef CHAR_TYPE_SIZE
28590075Sobrien#define CHAR_TYPE_SIZE BITS_PER_UNIT
28690075Sobrien#endif
28790075Sobrien
28896263Sobrien#ifndef BOOL_TYPE_SIZE
28996263Sobrien/* `bool' has size and alignment `1', on almost all platforms.  */
29096263Sobrien#define BOOL_TYPE_SIZE CHAR_TYPE_SIZE
29196263Sobrien#endif
29296263Sobrien
29390075Sobrien#ifndef SHORT_TYPE_SIZE
29490075Sobrien#define SHORT_TYPE_SIZE (BITS_PER_UNIT * MIN ((UNITS_PER_WORD + 1) / 2, 2))
29590075Sobrien#endif
29690075Sobrien
29790075Sobrien#ifndef INT_TYPE_SIZE
29890075Sobrien#define INT_TYPE_SIZE BITS_PER_WORD
29990075Sobrien#endif
30090075Sobrien
30190075Sobrien#ifndef LONG_TYPE_SIZE
30290075Sobrien#define LONG_TYPE_SIZE BITS_PER_WORD
30390075Sobrien#endif
30490075Sobrien
30590075Sobrien#ifndef LONG_LONG_TYPE_SIZE
30690075Sobrien#define LONG_LONG_TYPE_SIZE (BITS_PER_WORD * 2)
30790075Sobrien#endif
30890075Sobrien
30990075Sobrien#ifndef WCHAR_TYPE_SIZE
31090075Sobrien#define WCHAR_TYPE_SIZE INT_TYPE_SIZE
31190075Sobrien#endif
31290075Sobrien
31390075Sobrien#ifndef WCHAR_UNSIGNED
31490075Sobrien#define WCHAR_UNSIGNED 0
31590075Sobrien#endif
31690075Sobrien
31790075Sobrien#ifndef FLOAT_TYPE_SIZE
31890075Sobrien#define FLOAT_TYPE_SIZE BITS_PER_WORD
31990075Sobrien#endif
32090075Sobrien
32190075Sobrien#ifndef DOUBLE_TYPE_SIZE
32290075Sobrien#define DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
32390075Sobrien#endif
32490075Sobrien
32590075Sobrien#ifndef LONG_DOUBLE_TYPE_SIZE
32690075Sobrien#define LONG_DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
32790075Sobrien#endif
32890075Sobrien
32990075Sobrien#ifndef BUILD_VA_LIST_TYPE
33090075Sobrien#define BUILD_VA_LIST_TYPE(X) ((X) = ptr_type_node)
33190075Sobrien#endif
33290075Sobrien
33390075Sobrien#ifndef PIC_OFFSET_TABLE_REGNUM
33490075Sobrien#define PIC_OFFSET_TABLE_REGNUM INVALID_REGNUM
33590075Sobrien#endif
33690075Sobrien
33790075Sobrien/* Type used by GCOV counters.  Use 64bit data type if target supports
33890075Sobrien   it.  */
33990075Sobrien#if LONG_TYPE_SIZE >= 64
34090075Sobrien#define GCOV_TYPE_SIZE LONG_TYPE_SIZE
34190075Sobrien#else
34290075Sobrien#define GCOV_TYPE_SIZE LONG_LONG_TYPE_SIZE
34390075Sobrien#endif
34490075Sobrien
34590075Sobrien
34690075Sobrien/* By default, the preprocessor should be invoked the same way in C++
34790075Sobrien   as in C.  */
34890075Sobrien#ifndef CPLUSPLUS_CPP_SPEC
34990075Sobrien#ifdef CPP_SPEC
35090075Sobrien#define CPLUSPLUS_CPP_SPEC CPP_SPEC
35190075Sobrien#endif
35290075Sobrien#endif
35390075Sobrien
35490075Sobrien#ifndef ACCUMULATE_OUTGOING_ARGS
35590075Sobrien#define ACCUMULATE_OUTGOING_ARGS 0
35690075Sobrien#endif
35790075Sobrien
35890075Sobrien/* Supply a default definition for PUSH_ARGS.  */
35990075Sobrien#ifndef PUSH_ARGS
36090075Sobrien#ifdef PUSH_ROUNDING
36190075Sobrien#define PUSH_ARGS	!ACCUMULATE_OUTGOING_ARGS
36290075Sobrien#else
36390075Sobrien#define PUSH_ARGS	0
36490075Sobrien#endif
36590075Sobrien#endif
36690075Sobrien
36790075Sobrien/* If PREFERRED_STACK_BOUNDARY is not defined, set it to STACK_BOUNDARY.
36890075Sobrien   STACK_BOUNDARY is required.  */
36990075Sobrien#ifndef PREFERRED_STACK_BOUNDARY
37090075Sobrien#define PREFERRED_STACK_BOUNDARY STACK_BOUNDARY
37190075Sobrien#endif
37290075Sobrien
37390075Sobrien/* By default, the C++ compiler will use function addresses in the
37490075Sobrien   vtable entries.  Setting this non-zero tells the compiler to use
37590075Sobrien   function descriptors instead.  The value of this macro says how
37690075Sobrien   many words wide the descriptor is (normally 2).  It is assumed
37790075Sobrien   that the address of a function descriptor may be treated as a
37890075Sobrien   pointer to a function.  */
37990075Sobrien#ifndef TARGET_VTABLE_USES_DESCRIPTORS
38090075Sobrien#define TARGET_VTABLE_USES_DESCRIPTORS 0
38190075Sobrien#endif
38290075Sobrien
38390075Sobrien/* Select a format to encode pointers in exception handling data.  We
38490075Sobrien   prefer those that result in fewer dynamic relocations.  Assume no
38590075Sobrien   special support here and encode direct references.  */
38690075Sobrien#ifndef ASM_PREFERRED_EH_DATA_FORMAT
38790075Sobrien#define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL)  DW_EH_PE_absptr
38890075Sobrien#endif
38990075Sobrien
39090075Sobrien/* By default, the C++ compiler will use the lowest bit of the pointer
39190075Sobrien   to function to indicate a pointer-to-member-function points to a
39290075Sobrien   virtual member function.  However, if FUNCTION_BOUNDARY indicates
39390075Sobrien   function addresses aren't always even, the lowest bit of the delta
39490075Sobrien   field will be used.  */
39590075Sobrien#ifndef TARGET_PTRMEMFUNC_VBIT_LOCATION
39690075Sobrien#define TARGET_PTRMEMFUNC_VBIT_LOCATION \
39790075Sobrien  (FUNCTION_BOUNDARY >= 2 * BITS_PER_UNIT \
39890075Sobrien   ? ptrmemfunc_vbit_in_pfn : ptrmemfunc_vbit_in_delta)
39990075Sobrien#endif
40090075Sobrien
40190075Sobrien/* True if it is possible to profile code that does not have a frame
40290075Sobrien   pointer.  */
40390075Sobrien
40490075Sobrien#ifndef TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER
40590075Sobrien#define TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER true
40690075Sobrien#endif
40790075Sobrien
40890075Sobrien#ifndef DEFAULT_GDB_EXTENSIONS
40990075Sobrien#define DEFAULT_GDB_EXTENSIONS 1
41090075Sobrien#endif
41190075Sobrien
41290075Sobrien/* If more than one debugging type is supported, you must define
41390075Sobrien   PREFERRED_DEBUGGING_TYPE to choose a format in a system-dependent way.
41490075Sobrien
41590075Sobrien   This is one long line cause VAXC can't handle a \-newline.  */
41690075Sobrien#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))
41790075Sobrien#ifndef PREFERRED_DEBUGGING_TYPE
41890075SobrienYou Lose!  You must define PREFERRED_DEBUGGING_TYPE!
41990075Sobrien#endif /* no PREFERRED_DEBUGGING_TYPE */
42090075Sobrien#else /* Only one debugging format supported.  Define PREFERRED_DEBUGGING_TYPE
42190075Sobrien	 so other code needn't care.  */
42290075Sobrien#ifdef DBX_DEBUGGING_INFO
42390075Sobrien#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
42490075Sobrien#endif
42590075Sobrien#ifdef SDB_DEBUGGING_INFO
42690075Sobrien#define PREFERRED_DEBUGGING_TYPE SDB_DEBUG
42790075Sobrien#endif
42890075Sobrien#ifdef DWARF_DEBUGGING_INFO
42990075Sobrien#define PREFERRED_DEBUGGING_TYPE DWARF_DEBUG
43090075Sobrien#endif
43190075Sobrien#ifdef DWARF2_DEBUGGING_INFO
43290075Sobrien#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
43390075Sobrien#endif
43490075Sobrien#ifdef VMS_DEBUGGING_INFO
43590075Sobrien#define PREFERRED_DEBUGGING_TYPE VMS_AND_DWARF2_DEBUG
43690075Sobrien#endif
43790075Sobrien#ifdef XCOFF_DEBUGGING_INFO
43890075Sobrien#define PREFERRED_DEBUGGING_TYPE XCOFF_DEBUG
43990075Sobrien#endif
44090075Sobrien#endif /* More than one debugger format enabled.  */
44190075Sobrien
44290075Sobrien/* If still not defined, must have been because no debugging formats
44390075Sobrien   are supported.  */
44490075Sobrien#ifndef PREFERRED_DEBUGGING_TYPE
44590075Sobrien#define PREFERRED_DEBUGGING_TYPE NO_DEBUG
44690075Sobrien#endif
44790075Sobrien
44890075Sobrien/* This is set to 1 if BYTES_BIG_ENDIAN is defined but the target uses a
44990075Sobrien   little-endian method of passing and returning structures in registers.
45090075Sobrien   On the HP-UX IA64 and PA64 platforms structures are aligned differently
45190075Sobrien   then integral values and setting this value to 1 will allow for the
45290075Sobrien   special handling of structure arguments and return values in regs.  */
45390075Sobrien
45490075Sobrien#ifndef FUNCTION_ARG_REG_LITTLE_ENDIAN
45590075Sobrien#define FUNCTION_ARG_REG_LITTLE_ENDIAN 0
45690075Sobrien#endif
45790075Sobrien
45890075Sobrien/* Determine the register class for registers suitable to be the base
45990075Sobrien   address register in a MEM.  Allow the choice to be dependent upon
46090075Sobrien   the mode of the memory access.  */
46190075Sobrien#ifndef MODE_BASE_REG_CLASS
46290075Sobrien#define MODE_BASE_REG_CLASS(MODE) BASE_REG_CLASS
46390075Sobrien#endif
46490075Sobrien
46590075Sobrien#endif  /* ! GCC_DEFAULTS_H */
466