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