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