1/* Definitions of various defaults for tm.h macros. 2 Copyright (C) 1992, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 3 2005 4 Free Software Foundation, Inc. 5 Contributed by Ron Guilmette (rfg@monkeys.com) 6 7This file is part of GCC. 8 9GCC is free software; you can redistribute it and/or modify it under 10the terms of the GNU General Public License as published by the Free 11Software Foundation; either version 2, or (at your option) any later 12version. 13 14GCC is distributed in the hope that it will be useful, but WITHOUT ANY 15WARRANTY; without even the implied warranty of MERCHANTABILITY or 16FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 17for more details. 18 19You should have received a copy of the GNU General Public License 20along with GCC; see the file COPYING. If not, write to the Free 21Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 2202110-1301, USA. */ 23 24#ifndef GCC_DEFAULTS_H 25#define GCC_DEFAULTS_H 26 27#ifndef GET_ENVIRONMENT 28#define GET_ENVIRONMENT(VALUE, NAME) do { (VALUE) = getenv (NAME); } while (0) 29#endif 30 31#define obstack_chunk_alloc ((void *(*) (long)) xmalloc) 32#define obstack_chunk_free ((void (*) (void *)) free) 33#define OBSTACK_CHUNK_SIZE 0 34#define gcc_obstack_init(OBSTACK) \ 35 _obstack_begin ((OBSTACK), OBSTACK_CHUNK_SIZE, 0, \ 36 obstack_chunk_alloc, \ 37 obstack_chunk_free) 38 39/* Store in OUTPUT a string (made with alloca) containing an 40 assembler-name for a local static variable or function named NAME. 41 LABELNO is an integer which is different for each call. */ 42 43#ifndef ASM_PN_FORMAT 44# ifndef NO_DOT_IN_LABEL 45# define ASM_PN_FORMAT "%s.%lu" 46# else 47# ifndef NO_DOLLAR_IN_LABEL 48# define ASM_PN_FORMAT "%s$%lu" 49# else 50# define ASM_PN_FORMAT "__%s_%lu" 51# endif 52# endif 53#endif /* ! ASM_PN_FORMAT */ 54 55#ifndef ASM_FORMAT_PRIVATE_NAME 56# define ASM_FORMAT_PRIVATE_NAME(OUTPUT, NAME, LABELNO) \ 57 do { const char *const name_ = (NAME); \ 58 char *const output_ = (OUTPUT) = \ 59 (char *) alloca (strlen (name_) + 32); \ 60 sprintf (output_, ASM_PN_FORMAT, name_, (unsigned long)(LABELNO)); \ 61 } while (0) 62#endif 63 64/* Choose a reasonable default for ASM_OUTPUT_ASCII. */ 65 66#ifndef ASM_OUTPUT_ASCII 67#define ASM_OUTPUT_ASCII(MYFILE, MYSTRING, MYLENGTH) \ 68 do { \ 69 FILE *_hide_asm_out_file = (MYFILE); \ 70 const unsigned char *_hide_p = (const unsigned char *) (MYSTRING); \ 71 int _hide_thissize = (MYLENGTH); \ 72 { \ 73 FILE *asm_out_file = _hide_asm_out_file; \ 74 const unsigned char *p = _hide_p; \ 75 int thissize = _hide_thissize; \ 76 int i; \ 77 fprintf (asm_out_file, "\t.ascii \""); \ 78 \ 79 for (i = 0; i < thissize; i++) \ 80 { \ 81 int c = p[i]; \ 82 if (c == '\"' || c == '\\') \ 83 putc ('\\', asm_out_file); \ 84 if (ISPRINT(c)) \ 85 putc (c, asm_out_file); \ 86 else \ 87 { \ 88 fprintf (asm_out_file, "\\%o", c); \ 89 /* After an octal-escape, if a digit follows, \ 90 terminate one string constant and start another. \ 91 The VAX assembler fails to stop reading the escape \ 92 after three digits, so this is the only way we \ 93 can get it to parse the data properly. */ \ 94 if (i < thissize - 1 && ISDIGIT(p[i + 1])) \ 95 fprintf (asm_out_file, "\"\n\t.ascii \""); \ 96 } \ 97 } \ 98 fprintf (asm_out_file, "\"\n"); \ 99 } \ 100 } \ 101 while (0) 102#endif 103 104/* This is how we tell the assembler to equate two values. */ 105#ifdef SET_ASM_OP 106#ifndef ASM_OUTPUT_DEF 107#define ASM_OUTPUT_DEF(FILE,LABEL1,LABEL2) \ 108 do { fprintf ((FILE), "%s", SET_ASM_OP); \ 109 assemble_name (FILE, LABEL1); \ 110 fprintf (FILE, ","); \ 111 assemble_name (FILE, LABEL2); \ 112 fprintf (FILE, "\n"); \ 113 } while (0) 114#endif 115#endif 116 117/* Decide whether to defer emitting the assembler output for an equate 118 of two values. The default is to not defer output. */ 119#ifndef TARGET_DEFERRED_OUTPUT_DEFS 120#define TARGET_DEFERRED_OUTPUT_DEFS(DECL,TARGET) false 121#endif 122 123/* This is how to output the definition of a user-level label named 124 NAME, such as the label on a static function or variable NAME. */ 125 126#ifndef ASM_OUTPUT_LABEL 127#define ASM_OUTPUT_LABEL(FILE,NAME) \ 128 do { assemble_name ((FILE), (NAME)); fputs (":\n", (FILE)); } while (0) 129#endif 130 131/* Output the definition of a compiler-generated label named NAME. */ 132#ifndef ASM_OUTPUT_INTERNAL_LABEL 133#define ASM_OUTPUT_INTERNAL_LABEL(FILE,NAME) \ 134 do { \ 135 assemble_name_raw ((FILE), (NAME)); \ 136 fputs (":\n", (FILE)); \ 137 } while (0) 138#endif 139 140/* This is how to output a reference to a user-level label named NAME. */ 141 142#ifndef ASM_OUTPUT_LABELREF 143#define ASM_OUTPUT_LABELREF(FILE,NAME) asm_fprintf ((FILE), "%U%s", (NAME)) 144#endif 145 146/* Allow target to print debug info labels specially. This is useful for 147 VLIW targets, since debug info labels should go into the middle of 148 instruction bundles instead of breaking them. */ 149 150#ifndef ASM_OUTPUT_DEBUG_LABEL 151#define ASM_OUTPUT_DEBUG_LABEL(FILE, PREFIX, NUM) \ 152 (*targetm.asm_out.internal_label) (FILE, PREFIX, NUM) 153#endif 154 155/* This is how we tell the assembler that a symbol is weak. */ 156#ifndef ASM_OUTPUT_WEAK_ALIAS 157#if defined (ASM_WEAKEN_LABEL) && defined (ASM_OUTPUT_DEF) 158#define ASM_OUTPUT_WEAK_ALIAS(STREAM, NAME, VALUE) \ 159 do \ 160 { \ 161 ASM_WEAKEN_LABEL (STREAM, NAME); \ 162 if (VALUE) \ 163 ASM_OUTPUT_DEF (STREAM, NAME, VALUE); \ 164 } \ 165 while (0) 166#endif 167#endif 168 169/* This is how we tell the assembler that a symbol is a weak alias to 170 another symbol that doesn't require the other symbol to be defined. 171 Uses of the former will turn into weak uses of the latter, i.e., 172 uses that, in case the latter is undefined, will not cause errors, 173 and will add it to the symbol table as weak undefined. However, if 174 the latter is referenced directly, a strong reference prevails. */ 175#ifndef ASM_OUTPUT_WEAKREF 176#if defined HAVE_GAS_WEAKREF 177#define ASM_OUTPUT_WEAKREF(FILE, DECL, NAME, VALUE) \ 178 do \ 179 { \ 180 fprintf ((FILE), "\t.weakref\t"); \ 181 assemble_name ((FILE), (NAME)); \ 182 fprintf ((FILE), ","); \ 183 assemble_name ((FILE), (VALUE)); \ 184 fprintf ((FILE), "\n"); \ 185 } \ 186 while (0) 187#endif 188#endif 189 190/* How to emit a .type directive. */ 191#ifndef ASM_OUTPUT_TYPE_DIRECTIVE 192#if defined TYPE_ASM_OP && defined TYPE_OPERAND_FMT 193#define ASM_OUTPUT_TYPE_DIRECTIVE(STREAM, NAME, TYPE) \ 194 do \ 195 { \ 196 fputs (TYPE_ASM_OP, STREAM); \ 197 assemble_name (STREAM, NAME); \ 198 fputs (", ", STREAM); \ 199 fprintf (STREAM, TYPE_OPERAND_FMT, TYPE); \ 200 putc ('\n', STREAM); \ 201 } \ 202 while (0) 203#endif 204#endif 205 206/* How to emit a .size directive. */ 207#ifndef ASM_OUTPUT_SIZE_DIRECTIVE 208#ifdef SIZE_ASM_OP 209#define ASM_OUTPUT_SIZE_DIRECTIVE(STREAM, NAME, SIZE) \ 210 do \ 211 { \ 212 HOST_WIDE_INT size_ = (SIZE); \ 213 fputs (SIZE_ASM_OP, STREAM); \ 214 assemble_name (STREAM, NAME); \ 215 fprintf (STREAM, ", " HOST_WIDE_INT_PRINT_DEC "\n", size_); \ 216 } \ 217 while (0) 218 219#define ASM_OUTPUT_MEASURED_SIZE(STREAM, NAME) \ 220 do \ 221 { \ 222 fputs (SIZE_ASM_OP, STREAM); \ 223 assemble_name (STREAM, NAME); \ 224 fputs (", .-", STREAM); \ 225 assemble_name (STREAM, NAME); \ 226 putc ('\n', STREAM); \ 227 } \ 228 while (0) 229 230#endif 231#endif 232 233/* This determines whether or not we support weak symbols. */ 234#ifndef SUPPORTS_WEAK 235#if defined (ASM_WEAKEN_LABEL) || defined (ASM_WEAKEN_DECL) 236#define SUPPORTS_WEAK 1 237#else 238#define SUPPORTS_WEAK 0 239#endif 240#endif 241 242/* This determines whether or not we support link-once semantics. */ 243#ifndef SUPPORTS_ONE_ONLY 244#ifdef MAKE_DECL_ONE_ONLY 245#define SUPPORTS_ONE_ONLY 1 246#else 247#define SUPPORTS_ONE_ONLY 0 248#endif 249#endif 250 251/* This determines whether weak symbols must be left out of a static 252 archive's table of contents. Defining this macro to be nonzero has 253 the consequence that certain symbols will not be made weak that 254 otherwise would be. The C++ ABI requires this macro to be zero; 255 see the documentation. */ 256#ifndef TARGET_WEAK_NOT_IN_ARCHIVE_TOC 257#define TARGET_WEAK_NOT_IN_ARCHIVE_TOC 0 258#endif 259 260/* This determines whether or not we need linkonce unwind information. */ 261#ifndef TARGET_USES_WEAK_UNWIND_INFO 262#define TARGET_USES_WEAK_UNWIND_INFO 0 263#endif 264 265/* By default, there is no prefix on user-defined symbols. */ 266#ifndef USER_LABEL_PREFIX 267#define USER_LABEL_PREFIX "" 268#endif 269 270/* If the target supports weak symbols, define TARGET_ATTRIBUTE_WEAK to 271 provide a weak attribute. Else define it to nothing. 272 273 This would normally belong in ansidecl.h, but SUPPORTS_WEAK is 274 not available at that time. 275 276 Note, this is only for use by target files which we know are to be 277 compiled by GCC. */ 278#ifndef TARGET_ATTRIBUTE_WEAK 279# if SUPPORTS_WEAK 280# define TARGET_ATTRIBUTE_WEAK __attribute__ ((weak)) 281# else 282# define TARGET_ATTRIBUTE_WEAK 283# endif 284#endif 285 286/* Determines whether we may use common symbols to represent one-only 287 semantics (a.k.a. "vague linkage"). */ 288#ifndef USE_COMMON_FOR_ONE_ONLY 289# define USE_COMMON_FOR_ONE_ONLY 1 290#endif 291 292/* By default we can assume that all global symbols are in one namespace, 293 across all shared libraries. */ 294#ifndef MULTIPLE_SYMBOL_SPACES 295# define MULTIPLE_SYMBOL_SPACES 0 296#endif 297 298/* If the target supports init_priority C++ attribute, give 299 SUPPORTS_INIT_PRIORITY a nonzero value. */ 300#ifndef SUPPORTS_INIT_PRIORITY 301#define SUPPORTS_INIT_PRIORITY 1 302#endif /* SUPPORTS_INIT_PRIORITY */ 303 304/* If duplicate library search directories can be removed from a 305 linker command without changing the linker's semantics, give this 306 symbol a nonzero. */ 307#ifndef LINK_ELIMINATE_DUPLICATE_LDIRECTORIES 308#define LINK_ELIMINATE_DUPLICATE_LDIRECTORIES 0 309#endif /* LINK_ELIMINATE_DUPLICATE_LDIRECTORIES */ 310 311/* If we have a definition of INCOMING_RETURN_ADDR_RTX, assume that 312 the rest of the DWARF 2 frame unwind support is also provided. */ 313#if !defined (DWARF2_UNWIND_INFO) && defined (INCOMING_RETURN_ADDR_RTX) 314#define DWARF2_UNWIND_INFO 1 315#endif 316 317/* If we have named sections, and we're using crtstuff to run ctors, 318 use them for registering eh frame information. */ 319#if defined (TARGET_ASM_NAMED_SECTION) && DWARF2_UNWIND_INFO \ 320 && !defined(EH_FRAME_IN_DATA_SECTION) 321#ifndef EH_FRAME_SECTION_NAME 322#define EH_FRAME_SECTION_NAME ".eh_frame" 323#endif 324#endif 325 326/* On many systems, different EH table encodings are used under 327 difference circumstances. Some will require runtime relocations; 328 some will not. For those that do not require runtime relocations, 329 we would like to make the table read-only. However, since the 330 read-only tables may need to be combined with read-write tables 331 that do require runtime relocation, it is not safe to make the 332 tables read-only unless the linker will merge read-only and 333 read-write sections into a single read-write section. If your 334 linker does not have this ability, but your system is such that no 335 encoding used with non-PIC code will ever require a runtime 336 relocation, then you can define EH_TABLES_CAN_BE_READ_ONLY to 1 in 337 your target configuration file. */ 338#ifndef EH_TABLES_CAN_BE_READ_ONLY 339#ifdef HAVE_LD_RO_RW_SECTION_MIXING 340#define EH_TABLES_CAN_BE_READ_ONLY 1 341#else 342#define EH_TABLES_CAN_BE_READ_ONLY 0 343#endif 344#endif 345 346/* If we have named section and we support weak symbols, then use the 347 .jcr section for recording java classes which need to be registered 348 at program start-up time. */ 349#if defined (TARGET_ASM_NAMED_SECTION) && SUPPORTS_WEAK 350#ifndef JCR_SECTION_NAME 351#define JCR_SECTION_NAME ".jcr" 352#endif 353#endif 354 355/* This decision to use a .jcr section can be overridden by defining 356 USE_JCR_SECTION to 0 in target file. This is necessary if target 357 can define JCR_SECTION_NAME but does not have crtstuff or 358 linker support for .jcr section. */ 359#ifndef TARGET_USE_JCR_SECTION 360#ifdef JCR_SECTION_NAME 361#define TARGET_USE_JCR_SECTION 1 362#else 363#define TARGET_USE_JCR_SECTION 0 364#endif 365#endif 366 367/* Number of hardware registers that go into the DWARF-2 unwind info. 368 If not defined, equals FIRST_PSEUDO_REGISTER */ 369 370#ifndef DWARF_FRAME_REGISTERS 371#define DWARF_FRAME_REGISTERS FIRST_PSEUDO_REGISTER 372#endif 373 374/* How to renumber registers for dbx and gdb. If not defined, assume 375 no renumbering is necessary. */ 376 377#ifndef DBX_REGISTER_NUMBER 378#define DBX_REGISTER_NUMBER(REGNO) (REGNO) 379#endif 380 381/* Default sizes for base C types. If the sizes are different for 382 your target, you should override these values by defining the 383 appropriate symbols in your tm.h file. */ 384 385#ifndef BITS_PER_UNIT 386#define BITS_PER_UNIT 8 387#endif 388 389#ifndef BITS_PER_WORD 390#define BITS_PER_WORD (BITS_PER_UNIT * UNITS_PER_WORD) 391#endif 392 393#ifndef CHAR_TYPE_SIZE 394#define CHAR_TYPE_SIZE BITS_PER_UNIT 395#endif 396 397#ifndef BOOL_TYPE_SIZE 398/* `bool' has size and alignment `1', on almost all platforms. */ 399#define BOOL_TYPE_SIZE CHAR_TYPE_SIZE 400#endif 401 402#ifndef SHORT_TYPE_SIZE 403#define SHORT_TYPE_SIZE (BITS_PER_UNIT * MIN ((UNITS_PER_WORD + 1) / 2, 2)) 404#endif 405 406#ifndef INT_TYPE_SIZE 407#define INT_TYPE_SIZE BITS_PER_WORD 408#endif 409 410#ifndef LONG_TYPE_SIZE 411#define LONG_TYPE_SIZE BITS_PER_WORD 412#endif 413 414#ifndef LONG_LONG_TYPE_SIZE 415#define LONG_LONG_TYPE_SIZE (BITS_PER_WORD * 2) 416#endif 417 418#ifndef WCHAR_TYPE_SIZE 419#define WCHAR_TYPE_SIZE INT_TYPE_SIZE 420#endif 421 422#ifndef FLOAT_TYPE_SIZE 423#define FLOAT_TYPE_SIZE BITS_PER_WORD 424#endif 425 426#ifndef DOUBLE_TYPE_SIZE 427#define DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2) 428#endif 429 430#ifndef LONG_DOUBLE_TYPE_SIZE 431#define LONG_DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2) 432#endif 433 434/* Width in bits of a pointer. Mind the value of the macro `Pmode'. */ 435#ifndef POINTER_SIZE 436#define POINTER_SIZE BITS_PER_WORD 437#endif 438 439#ifndef PIC_OFFSET_TABLE_REGNUM 440#define PIC_OFFSET_TABLE_REGNUM INVALID_REGNUM 441#endif 442 443#ifndef TARGET_DLLIMPORT_DECL_ATTRIBUTES 444#define TARGET_DLLIMPORT_DECL_ATTRIBUTES 0 445#endif 446 447#ifndef TARGET_DECLSPEC 448#if TARGET_DLLIMPORT_DECL_ATTRIBUTES 449/* If the target supports the "dllimport" attribute, users are 450 probably used to the "__declspec" syntax. */ 451#define TARGET_DECLSPEC 1 452#else 453#define TARGET_DECLSPEC 0 454#endif 455#endif 456 457/* By default, the preprocessor should be invoked the same way in C++ 458 as in C. */ 459#ifndef CPLUSPLUS_CPP_SPEC 460#ifdef CPP_SPEC 461#define CPLUSPLUS_CPP_SPEC CPP_SPEC 462#endif 463#endif 464 465#ifndef ACCUMULATE_OUTGOING_ARGS 466#define ACCUMULATE_OUTGOING_ARGS 0 467#endif 468 469/* Supply a default definition for PUSH_ARGS. */ 470#ifndef PUSH_ARGS 471#ifdef PUSH_ROUNDING 472#define PUSH_ARGS !ACCUMULATE_OUTGOING_ARGS 473#else 474#define PUSH_ARGS 0 475#endif 476#endif 477 478/* Decide whether a function's arguments should be processed 479 from first to last or from last to first. 480 481 They should if the stack and args grow in opposite directions, but 482 only if we have push insns. */ 483 484#ifdef PUSH_ROUNDING 485 486#ifndef PUSH_ARGS_REVERSED 487#if defined (STACK_GROWS_DOWNWARD) != defined (ARGS_GROW_DOWNWARD) 488#define PUSH_ARGS_REVERSED PUSH_ARGS 489#endif 490#endif 491 492#endif 493 494#ifndef PUSH_ARGS_REVERSED 495#define PUSH_ARGS_REVERSED 0 496#endif 497 498/* If PREFERRED_STACK_BOUNDARY is not defined, set it to STACK_BOUNDARY. 499 STACK_BOUNDARY is required. */ 500#ifndef PREFERRED_STACK_BOUNDARY 501#define PREFERRED_STACK_BOUNDARY STACK_BOUNDARY 502#endif 503 504#ifndef TARGET_DEFAULT_PACK_STRUCT 505#define TARGET_DEFAULT_PACK_STRUCT 0 506#endif 507 508/* By default, the C++ compiler will use function addresses in the 509 vtable entries. Setting this nonzero tells the compiler to use 510 function descriptors instead. The value of this macro says how 511 many words wide the descriptor is (normally 2). It is assumed 512 that the address of a function descriptor may be treated as a 513 pointer to a function. */ 514#ifndef TARGET_VTABLE_USES_DESCRIPTORS 515#define TARGET_VTABLE_USES_DESCRIPTORS 0 516#endif 517 518/* By default, the vtable entries are void pointers, the so the alignment 519 is the same as pointer alignment. The value of this macro specifies 520 the alignment of the vtable entry in bits. It should be defined only 521 when special alignment is necessary. */ 522#ifndef TARGET_VTABLE_ENTRY_ALIGN 523#define TARGET_VTABLE_ENTRY_ALIGN POINTER_SIZE 524#endif 525 526/* There are a few non-descriptor entries in the vtable at offsets below 527 zero. If these entries must be padded (say, to preserve the alignment 528 specified by TARGET_VTABLE_ENTRY_ALIGN), set this to the number of 529 words in each data entry. */ 530#ifndef TARGET_VTABLE_DATA_ENTRY_DISTANCE 531#define TARGET_VTABLE_DATA_ENTRY_DISTANCE 1 532#endif 533 534/* Decide whether it is safe to use a local alias for a virtual function 535 when constructing thunks. */ 536#ifndef TARGET_USE_LOCAL_THUNK_ALIAS_P 537#ifdef ASM_OUTPUT_DEF 538#define TARGET_USE_LOCAL_THUNK_ALIAS_P(DECL) 1 539#else 540#define TARGET_USE_LOCAL_THUNK_ALIAS_P(DECL) 0 541#endif 542#endif 543 544/* Select a format to encode pointers in exception handling data. We 545 prefer those that result in fewer dynamic relocations. Assume no 546 special support here and encode direct references. */ 547#ifndef ASM_PREFERRED_EH_DATA_FORMAT 548#define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) DW_EH_PE_absptr 549#endif 550 551/* By default, the C++ compiler will use the lowest bit of the pointer 552 to function to indicate a pointer-to-member-function points to a 553 virtual member function. However, if FUNCTION_BOUNDARY indicates 554 function addresses aren't always even, the lowest bit of the delta 555 field will be used. */ 556#ifndef TARGET_PTRMEMFUNC_VBIT_LOCATION 557#define TARGET_PTRMEMFUNC_VBIT_LOCATION \ 558 (FUNCTION_BOUNDARY >= 2 * BITS_PER_UNIT \ 559 ? ptrmemfunc_vbit_in_pfn : ptrmemfunc_vbit_in_delta) 560#endif 561 562#ifndef DEFAULT_GDB_EXTENSIONS 563#define DEFAULT_GDB_EXTENSIONS 1 564#endif 565 566/* If more than one debugging type is supported, you must define 567 PREFERRED_DEBUGGING_TYPE to choose the default. */ 568 569#if 1 < (defined (DBX_DEBUGGING_INFO) + defined (SDB_DEBUGGING_INFO) \ 570 + defined (DWARF2_DEBUGGING_INFO) + defined (XCOFF_DEBUGGING_INFO) \ 571 + defined (VMS_DEBUGGING_INFO)) 572#ifndef PREFERRED_DEBUGGING_TYPE 573#error You must define PREFERRED_DEBUGGING_TYPE 574#endif /* no PREFERRED_DEBUGGING_TYPE */ 575 576/* If only one debugging format is supported, define PREFERRED_DEBUGGING_TYPE 577 here so other code needn't care. */ 578#elif defined DBX_DEBUGGING_INFO 579#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG 580 581#elif defined SDB_DEBUGGING_INFO 582#define PREFERRED_DEBUGGING_TYPE SDB_DEBUG 583 584#elif defined DWARF2_DEBUGGING_INFO 585#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG 586 587#elif defined VMS_DEBUGGING_INFO 588#define PREFERRED_DEBUGGING_TYPE VMS_AND_DWARF2_DEBUG 589 590#elif defined XCOFF_DEBUGGING_INFO 591#define PREFERRED_DEBUGGING_TYPE XCOFF_DEBUG 592 593#else 594/* No debugging format is supported by this target. */ 595#define PREFERRED_DEBUGGING_TYPE NO_DEBUG 596#endif 597 598/* Define codes for all the float formats that we know of. */ 599#define UNKNOWN_FLOAT_FORMAT 0 600#define IEEE_FLOAT_FORMAT 1 601#define VAX_FLOAT_FORMAT 2 602#define IBM_FLOAT_FORMAT 3 603#define C4X_FLOAT_FORMAT 4 604 605/* Default to IEEE float if not specified. Nearly all machines use it. */ 606#ifndef TARGET_FLOAT_FORMAT 607#define TARGET_FLOAT_FORMAT IEEE_FLOAT_FORMAT 608#endif 609 610/* Some macros can be defined by the backend in either a mode-dependent 611 or mode-independent form. The compiler proper should only use the 612 mode-dependent form, providing VOIDmode when the mode is unknown. 613 We can't poison the macros because the backend may reference them. */ 614 615#ifndef REGNO_MODE_OK_FOR_BASE_P 616#define REGNO_MODE_OK_FOR_BASE_P(REGNO, MODE) REGNO_OK_FOR_BASE_P (REGNO) 617#endif 618 619#ifndef REG_MODE_OK_FOR_BASE_P 620#define REG_MODE_OK_FOR_BASE_P(REG, MODE) REG_OK_FOR_BASE_P (REG) 621#endif 622 623/* Determine the register class for registers suitable to be the base 624 address register in a MEM. Allow the choice to be dependent upon 625 the mode of the memory access. */ 626#ifndef MODE_BASE_REG_CLASS 627#define MODE_BASE_REG_CLASS(MODE) BASE_REG_CLASS 628#endif 629 630/* Some machines require a different base register class if the index 631 is a register. By default, assume that a base register is acceptable. */ 632#ifndef MODE_BASE_REG_REG_CLASS 633#define MODE_BASE_REG_REG_CLASS(MODE) MODE_BASE_REG_CLASS(MODE) 634#endif 635 636#ifndef REGNO_MODE_OK_FOR_REG_BASE_P 637#define REGNO_MODE_OK_FOR_REG_BASE_P(REGNO, MODE) REGNO_MODE_OK_FOR_BASE_P (REGNO, MODE) 638#endif 639 640#ifndef REG_MODE_OK_FOR_REG_BASE_P 641#define REG_MODE_OK_FOR_REG_BASE_P(REGNO, MODE) REG_MODE_OK_FOR_BASE_P (REGNO, MODE) 642#endif 643 644#ifndef LARGEST_EXPONENT_IS_NORMAL 645#define LARGEST_EXPONENT_IS_NORMAL(SIZE) 0 646#endif 647 648#ifndef ROUND_TOWARDS_ZERO 649#define ROUND_TOWARDS_ZERO 0 650#endif 651 652#ifndef MODE_HAS_NANS 653#define MODE_HAS_NANS(MODE) \ 654 (FLOAT_MODE_P (MODE) \ 655 && TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT \ 656 && !LARGEST_EXPONENT_IS_NORMAL (GET_MODE_BITSIZE (MODE))) 657#endif 658 659#ifndef MODE_HAS_INFINITIES 660#define MODE_HAS_INFINITIES(MODE) \ 661 (FLOAT_MODE_P (MODE) \ 662 && TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT \ 663 && !LARGEST_EXPONENT_IS_NORMAL (GET_MODE_BITSIZE (MODE))) 664#endif 665 666#ifndef MODE_HAS_SIGNED_ZEROS 667#define MODE_HAS_SIGNED_ZEROS(MODE) \ 668 (FLOAT_MODE_P (MODE) && TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT) 669#endif 670 671#ifndef MODE_HAS_SIGN_DEPENDENT_ROUNDING 672#define MODE_HAS_SIGN_DEPENDENT_ROUNDING(MODE) \ 673 (FLOAT_MODE_P (MODE) \ 674 && TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT \ 675 && !ROUND_TOWARDS_ZERO) 676#endif 677 678#ifndef FLOAT_LIB_COMPARE_RETURNS_BOOL 679#define FLOAT_LIB_COMPARE_RETURNS_BOOL(MODE, COMPARISON) false 680#endif 681 682/* True if the targets integer-comparison functions return { 0, 1, 2 683 } to indicate { <, ==, > }. False if { -1, 0, 1 } is used 684 instead. The libgcc routines are biased. */ 685#ifndef TARGET_LIB_INT_CMP_BIASED 686#define TARGET_LIB_INT_CMP_BIASED (true) 687#endif 688 689/* If FLOAT_WORDS_BIG_ENDIAN is not defined in the header files, 690 then the word-endianness is the same as for integers. */ 691#ifndef FLOAT_WORDS_BIG_ENDIAN 692#define FLOAT_WORDS_BIG_ENDIAN WORDS_BIG_ENDIAN 693#endif 694 695#ifndef TARGET_FLT_EVAL_METHOD 696#define TARGET_FLT_EVAL_METHOD 0 697#endif 698 699#ifndef HOT_TEXT_SECTION_NAME 700#define HOT_TEXT_SECTION_NAME ".text.hot" 701#endif 702 703#ifndef UNLIKELY_EXECUTED_TEXT_SECTION_NAME 704#define UNLIKELY_EXECUTED_TEXT_SECTION_NAME ".text.unlikely" 705#endif 706 707#ifndef HAS_LONG_COND_BRANCH 708#define HAS_LONG_COND_BRANCH 0 709#endif 710 711#ifndef HAS_LONG_UNCOND_BRANCH 712#define HAS_LONG_UNCOND_BRANCH 0 713#endif 714 715/* By default, only attempt to parallelize bitwise operations, and 716 possibly adds/subtracts using bit-twiddling. */ 717#ifndef UNITS_PER_SIMD_WORD 718#define UNITS_PER_SIMD_WORD UNITS_PER_WORD 719#endif 720 721/* Determine whether __cxa_atexit, rather than atexit, is used to 722 register C++ destructors for local statics and global objects. */ 723#ifndef DEFAULT_USE_CXA_ATEXIT 724#define DEFAULT_USE_CXA_ATEXIT 0 725#endif 726 727/* Determine whether extra constraint letter should be handled 728 via address reload (like 'o'). */ 729#ifndef EXTRA_MEMORY_CONSTRAINT 730#define EXTRA_MEMORY_CONSTRAINT(C,STR) 0 731#endif 732 733/* Determine whether extra constraint letter should be handled 734 as an address (like 'p'). */ 735#ifndef EXTRA_ADDRESS_CONSTRAINT 736#define EXTRA_ADDRESS_CONSTRAINT(C,STR) 0 737#endif 738 739/* When a port defines CONSTRAINT_LEN, it should use DEFAULT_CONSTRAINT_LEN 740 for all the characters that it does not want to change, so things like the 741 'length' of a digit in a matching constraint is an implementation detail, 742 and not part of the interface. */ 743#define DEFAULT_CONSTRAINT_LEN(C,STR) 1 744 745#ifndef CONSTRAINT_LEN 746#define CONSTRAINT_LEN(C,STR) DEFAULT_CONSTRAINT_LEN (C, STR) 747#endif 748 749#if defined (CONST_OK_FOR_LETTER_P) && ! defined (CONST_OK_FOR_CONSTRAINT_P) 750#define CONST_OK_FOR_CONSTRAINT_P(VAL,C,STR) CONST_OK_FOR_LETTER_P (VAL, C) 751#endif 752 753#if defined (CONST_DOUBLE_OK_FOR_LETTER_P) && ! defined (CONST_DOUBLE_OK_FOR_CONSTRAINT_P) 754#define CONST_DOUBLE_OK_FOR_CONSTRAINT_P(OP,C,STR) \ 755 CONST_DOUBLE_OK_FOR_LETTER_P (OP, C) 756#endif 757 758#ifndef REG_CLASS_FROM_CONSTRAINT 759#define REG_CLASS_FROM_CONSTRAINT(C,STR) REG_CLASS_FROM_LETTER (C) 760#endif 761 762#if defined (EXTRA_CONSTRAINT) && ! defined (EXTRA_CONSTRAINT_STR) 763#define EXTRA_CONSTRAINT_STR(OP, C,STR) EXTRA_CONSTRAINT (OP, C) 764#endif 765 766#ifndef REGISTER_MOVE_COST 767#define REGISTER_MOVE_COST(m, x, y) 2 768#endif 769 770/* Determine whether the entire c99 runtime 771 is present in the runtime library. */ 772#ifndef TARGET_C99_FUNCTIONS 773#define TARGET_C99_FUNCTIONS 0 774#endif 775 776/* Indicate that CLZ and CTZ are undefined at zero. */ 777#ifndef CLZ_DEFINED_VALUE_AT_ZERO 778#define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) 0 779#endif 780#ifndef CTZ_DEFINED_VALUE_AT_ZERO 781#define CTZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) 0 782#endif 783 784/* Provide a default value for STORE_FLAG_VALUE. */ 785#ifndef STORE_FLAG_VALUE 786#define STORE_FLAG_VALUE 1 787#endif 788 789/* This macro is used to determine what the largest unit size that 790 move_by_pieces can use is. */ 791 792/* MOVE_MAX_PIECES is the number of bytes at a time which we can 793 move efficiently, as opposed to MOVE_MAX which is the maximum 794 number of bytes we can move with a single instruction. */ 795 796#ifndef MOVE_MAX_PIECES 797#define MOVE_MAX_PIECES MOVE_MAX 798#endif 799 800#ifndef STACK_POINTER_OFFSET 801#define STACK_POINTER_OFFSET 0 802#endif 803 804#ifndef LOCAL_REGNO 805#define LOCAL_REGNO(REGNO) 0 806#endif 807 808/* EXIT_IGNORE_STACK should be nonzero if, when returning from a function, 809 the stack pointer does not matter. The value is tested only in 810 functions that have frame pointers. */ 811#ifndef EXIT_IGNORE_STACK 812#define EXIT_IGNORE_STACK 0 813#endif 814 815/* Assume that case vectors are not pc-relative. */ 816#ifndef CASE_VECTOR_PC_RELATIVE 817#define CASE_VECTOR_PC_RELATIVE 0 818#endif 819 820/* Assume that trampolines need function alignment. */ 821#ifndef TRAMPOLINE_ALIGNMENT 822#define TRAMPOLINE_ALIGNMENT FUNCTION_BOUNDARY 823#endif 824 825/* Register mappings for target machines without register windows. */ 826#ifndef INCOMING_REGNO 827#define INCOMING_REGNO(N) (N) 828#endif 829 830#ifndef OUTGOING_REGNO 831#define OUTGOING_REGNO(N) (N) 832#endif 833 834#ifndef SHIFT_COUNT_TRUNCATED 835#define SHIFT_COUNT_TRUNCATED 0 836#endif 837 838#ifndef LEGITIMIZE_ADDRESS 839#define LEGITIMIZE_ADDRESS(X, OLDX, MODE, WIN) 840#endif 841 842#ifndef LEGITIMATE_PIC_OPERAND_P 843#define LEGITIMATE_PIC_OPERAND_P(X) 1 844#endif 845 846#ifndef REVERSIBLE_CC_MODE 847#define REVERSIBLE_CC_MODE(MODE) 0 848#endif 849 850/* Biggest alignment supported by the object file format of this machine. */ 851#ifndef MAX_OFILE_ALIGNMENT 852#define MAX_OFILE_ALIGNMENT BIGGEST_ALIGNMENT 853#endif 854 855#ifndef FRAME_GROWS_DOWNWARD 856#define FRAME_GROWS_DOWNWARD 0 857#endif 858 859/* On most machines, the CFA coincides with the first incoming parm. */ 860#ifndef ARG_POINTER_CFA_OFFSET 861#define ARG_POINTER_CFA_OFFSET(FNDECL) FIRST_PARM_OFFSET (FNDECL) 862#endif 863 864/* The offset from the incoming value of %sp to the top of the stack frame 865 for the current function. */ 866#ifndef INCOMING_FRAME_SP_OFFSET 867#define INCOMING_FRAME_SP_OFFSET 0 868#endif 869 870#ifndef HARD_REGNO_NREGS_HAS_PADDING 871#define HARD_REGNO_NREGS_HAS_PADDING(REGNO, MODE) 0 872#define HARD_REGNO_NREGS_WITH_PADDING(REGNO, MODE) -1 873#endif 874 875#endif /* ! GCC_DEFAULTS_H */ 876