00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef GCC_DEFAULTS_H
00028 #define GCC_DEFAULTS_H
00029
00030 #ifndef GET_ENVIRONMENT
00031 #define GET_ENVIRONMENT(VALUE, NAME) do { (VALUE) = getenv (NAME); } while (0)
00032 #endif
00033
00034 #define obstack_chunk_alloc xmalloc
00035 #define obstack_chunk_free free
00036
00037
00038 #ifndef TARGET_BELL
00039 # define TARGET_BELL 007
00040 # define TARGET_BS 010
00041 # define TARGET_TAB 011
00042 # define TARGET_NEWLINE 012
00043 # define TARGET_VT 013
00044 # define TARGET_FF 014
00045 # define TARGET_CR 015
00046 # define TARGET_ESC 033
00047 #endif
00048
00049
00050
00051 #ifndef TARGET_OS_CPP_BUILTINS
00052 # define TARGET_OS_CPP_BUILTINS()
00053 #endif
00054 #ifndef TARGET_CPU_CPP_BUILTINS
00055 # define TARGET_CPU_CPP_BUILTINS()
00056 #endif
00057 #ifndef CPP_PREDEFINES
00058 # define CPP_PREDEFINES ""
00059 #endif
00060
00061
00062
00063
00064
00065 #ifndef ASM_FORMAT_PRIVATE_NAME
00066 #define ASM_FORMAT_PRIVATE_NAME(OUTPUT, NAME, LABELNO) \
00067 do { \
00068 int len = strlen (NAME); \
00069 char *temp = (char *) alloca (len + 3); \
00070 temp[0] = 'L'; \
00071 strcpy (&temp[1], (NAME)); \
00072 temp[len + 1] = '.'; \
00073 temp[len + 2] = 0; \
00074 (OUTPUT) = (char *) alloca (strlen (NAME) + 11); \
00075 ASM_GENERATE_INTERNAL_LABEL (OUTPUT, temp, LABELNO); \
00076 } while (0)
00077 #endif
00078
00079 #ifndef ASM_STABD_OP
00080 #define ASM_STABD_OP "\t.stabd\t"
00081 #endif
00082
00083
00084
00085
00086 #ifndef ASM_OUTPUT_ADDR_VEC_ELT
00087 #define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \
00088 do { fputs (integer_asm_op (POINTER_SIZE / UNITS_PER_WORD, TRUE), FILE); \
00089 ASM_OUTPUT_INTERNAL_LABEL (FILE, "L", (VALUE)); \
00090 fputc ('\n', FILE); \
00091 } while (0)
00092 #endif
00093
00094
00095
00096 #ifndef ASM_OUTPUT_ASCII
00097 #define ASM_OUTPUT_ASCII(MYFILE, MYSTRING, MYLENGTH) \
00098 do { \
00099 FILE *_hide_asm_out_file = (MYFILE); \
00100 const unsigned char *_hide_p = (const unsigned char *) (MYSTRING); \
00101 int _hide_thissize = (MYLENGTH); \
00102 { \
00103 FILE *asm_out_file = _hide_asm_out_file; \
00104 const unsigned char *p = _hide_p; \
00105 int thissize = _hide_thissize; \
00106 int i; \
00107 fprintf (asm_out_file, "\t.ascii \""); \
00108 \
00109 for (i = 0; i < thissize; i++) \
00110 { \
00111 int c = p[i]; \
00112 if (c == '\"' || c == '\\') \
00113 putc ('\\', asm_out_file); \
00114 if (ISPRINT(c)) \
00115 putc (c, asm_out_file); \
00116 else \
00117 { \
00118 fprintf (asm_out_file, "\\%o", c); \
00119
00120
00121
00122
00123 \
00124 if (i < thissize - 1 && ISDIGIT(p[i + 1])) \
00125 fprintf (asm_out_file, "\"\n\t.ascii \""); \
00126 } \
00127 } \
00128 fprintf (asm_out_file, "\"\n"); \
00129 } \
00130 } \
00131 while (0)
00132 #endif
00133
00134
00135 #ifdef SET_ASM_OP
00136 #ifndef ASM_OUTPUT_DEF
00137 #define ASM_OUTPUT_DEF(FILE,LABEL1,LABEL2) \
00138 do { fprintf ((FILE), "%s", SET_ASM_OP); \
00139 assemble_name (FILE, LABEL1); \
00140 fprintf (FILE, ","); \
00141 assemble_name (FILE, LABEL2); \
00142 fprintf (FILE, "\n"); \
00143 } while (0)
00144 #endif
00145 #endif
00146
00147
00148
00149
00150 #ifndef ASM_OUTPUT_LABEL
00151 #define ASM_OUTPUT_LABEL(FILE,NAME) \
00152 do { assemble_name ((FILE), (NAME)); fputs (":\n", (FILE)); } while (0)
00153 #endif
00154
00155
00156
00157 #ifndef ASM_OUTPUT_LABELREF
00158 #define ASM_OUTPUT_LABELREF(FILE,NAME) asm_fprintf ((FILE), "%U%s", (NAME))
00159 #endif
00160
00161
00162
00163
00164
00165 #ifndef ASM_OUTPUT_DEBUG_LABEL
00166 #define ASM_OUTPUT_DEBUG_LABEL(FILE, PREFIX, NUM) \
00167 ASM_OUTPUT_INTERNAL_LABEL (FILE, PREFIX, NUM)
00168 #endif
00169
00170
00171 #ifndef ASM_OUTPUT_WEAK_ALIAS
00172 #if defined (ASM_WEAKEN_LABEL) && defined (ASM_OUTPUT_DEF)
00173 #define ASM_OUTPUT_WEAK_ALIAS(STREAM, NAME, VALUE) \
00174 do \
00175 { \
00176 ASM_WEAKEN_LABEL (STREAM, NAME); \
00177 if (VALUE) \
00178 ASM_OUTPUT_DEF (STREAM, NAME, VALUE); \
00179 } \
00180 while (0)
00181 #endif
00182 #endif
00183
00184
00185 #ifndef ASM_OUTPUT_TYPE_DIRECTIVE
00186 #if defined TYPE_ASM_OP && defined TYPE_OPERAND_FMT
00187 #define ASM_OUTPUT_TYPE_DIRECTIVE(STREAM, NAME, TYPE) \
00188 do \
00189 { \
00190 fputs (TYPE_ASM_OP, STREAM); \
00191 assemble_name (STREAM, NAME); \
00192 fputs (", ", STREAM); \
00193 fprintf (STREAM, TYPE_OPERAND_FMT, TYPE); \
00194 putc ('\n', STREAM); \
00195 } \
00196 while (0)
00197 #endif
00198 #endif
00199
00200
00201 #ifndef ASM_OUTPUT_SIZE_DIRECTIVE
00202 #ifdef SIZE_ASM_OP
00203 #define ASM_OUTPUT_SIZE_DIRECTIVE(STREAM, NAME, SIZE) \
00204 do \
00205 { \
00206 HOST_WIDE_INT size_ = (SIZE); \
00207 fputs (SIZE_ASM_OP, STREAM); \
00208 assemble_name (STREAM, NAME); \
00209 fputs (", ", STREAM); \
00210 fprintf (STREAM, HOST_WIDE_INT_PRINT_DEC, size_); \
00211 putc ('\n', STREAM); \
00212 } \
00213 while (0)
00214
00215 #define ASM_OUTPUT_MEASURED_SIZE(STREAM, NAME) \
00216 do \
00217 { \
00218 fputs (SIZE_ASM_OP, STREAM); \
00219 assemble_name (STREAM, NAME); \
00220 fputs (", .-", STREAM); \
00221 assemble_name (STREAM, NAME); \
00222 putc ('\n', STREAM); \
00223 } \
00224 while (0)
00225
00226 #endif
00227 #endif
00228
00229
00230 #ifndef SGI_MONGOOSE
00231 #ifndef SUPPORTS_WEAK
00232 #if defined (ASM_WEAKEN_LABEL) || defined (ASM_WEAKEN_DECL)
00233 #define SUPPORTS_WEAK 1
00234 #else
00235 #define SUPPORTS_WEAK 0
00236 #endif
00237 #endif
00238 #else
00239 #define SUPPORTS_WEAK 1
00240 #endif
00241
00242
00243 #ifndef SUPPORTS_ONE_ONLY
00244 #ifdef MAKE_DECL_ONE_ONLY
00245 #define SUPPORTS_ONE_ONLY 1
00246 #else
00247 #define SUPPORTS_ONE_ONLY 0
00248 #endif
00249 #endif
00250
00251
00252 #ifndef USER_LABEL_PREFIX
00253 #define USER_LABEL_PREFIX ""
00254 #endif
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264 #ifndef TARGET_ATTRIBUTE_WEAK
00265 # if SUPPORTS_WEAK
00266 # define TARGET_ATTRIBUTE_WEAK __attribute__ ((weak))
00267 # else
00268 # define TARGET_ATTRIBUTE_WEAK
00269 # endif
00270 #endif
00271
00272
00273
00274 #ifndef SUPPORTS_INIT_PRIORITY
00275 #define SUPPORTS_INIT_PRIORITY 1
00276 #endif
00277
00278
00279
00280
00281 #ifndef LINK_ELIMINATE_DUPLICATE_LDIRECTORIES
00282 #define LINK_ELIMINATE_DUPLICATE_LDIRECTORIES 0
00283 #endif
00284
00285 #ifndef KEY // Don't need to support DWARF when writing assembly,
00286
00287
00288
00289 #if !defined (DWARF2_UNWIND_INFO) && defined (INCOMING_RETURN_ADDR_RTX)
00290 #define DWARF2_UNWIND_INFO 1
00291 #endif
00292 #endif // KEY
00293
00294
00295
00296 #if defined (TARGET_ASM_NAMED_SECTION) && DWARF2_UNWIND_INFO \
00297 && !defined(EH_FRAME_IN_DATA_SECTION)
00298 #ifndef EH_FRAME_SECTION_NAME
00299 #define EH_FRAME_SECTION_NAME ".eh_frame"
00300 #endif
00301 #endif
00302
00303
00304
00305
00306 #if defined (TARGET_ASM_NAMED_SECTION) && SUPPORTS_WEAK
00307 #ifndef JCR_SECTION_NAME
00308 #define JCR_SECTION_NAME ".jcr"
00309 #endif
00310 #endif
00311
00312
00313
00314
00315
00316
00317
00318 #ifndef DWARF2_GENERATE_TEXT_SECTION_LABEL
00319 #define DWARF2_GENERATE_TEXT_SECTION_LABEL 1
00320 #endif
00321
00322
00323 #ifndef PROMOTE_PROTOTYPES
00324 #define PROMOTE_PROTOTYPES 0
00325 #endif
00326
00327
00328
00329
00330 #ifndef DWARF_FRAME_REGISTERS
00331 #define DWARF_FRAME_REGISTERS FIRST_PSEUDO_REGISTER
00332 #endif
00333
00334
00335
00336
00337 #ifndef DBX_REGISTER_NUMBER
00338 #define DBX_REGISTER_NUMBER(REGNO) (REGNO)
00339 #endif
00340
00341
00342
00343
00344
00345 #ifndef BITS_PER_UNIT
00346 #define BITS_PER_UNIT 8
00347 #endif
00348
00349 #ifndef BITS_PER_WORD
00350 #define BITS_PER_WORD (BITS_PER_UNIT * UNITS_PER_WORD)
00351 #endif
00352
00353 #ifndef CHAR_TYPE_SIZE
00354 #define CHAR_TYPE_SIZE BITS_PER_UNIT
00355 #endif
00356
00357 #ifndef BOOL_TYPE_SIZE
00358
00359 #define BOOL_TYPE_SIZE CHAR_TYPE_SIZE
00360 #endif
00361
00362 #ifndef SHORT_TYPE_SIZE
00363 #define SHORT_TYPE_SIZE (BITS_PER_UNIT * MIN ((UNITS_PER_WORD + 1) / 2, 2))
00364 #endif
00365
00366 #ifndef INT_TYPE_SIZE
00367 #define INT_TYPE_SIZE BITS_PER_WORD
00368 #endif
00369
00370 #ifndef LONG_TYPE_SIZE
00371 #define LONG_TYPE_SIZE BITS_PER_WORD
00372 #endif
00373
00374 #ifndef LONG_LONG_TYPE_SIZE
00375 #define LONG_LONG_TYPE_SIZE (BITS_PER_WORD * 2)
00376 #endif
00377
00378 #ifndef WCHAR_TYPE_SIZE
00379 #define WCHAR_TYPE_SIZE INT_TYPE_SIZE
00380 #endif
00381
00382 #ifndef FLOAT_TYPE_SIZE
00383 #define FLOAT_TYPE_SIZE BITS_PER_WORD
00384 #endif
00385
00386 #ifndef DOUBLE_TYPE_SIZE
00387 #define DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
00388 #endif
00389
00390 #ifndef LONG_DOUBLE_TYPE_SIZE
00391 #define LONG_DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
00392 #endif
00393
00394
00395 #ifndef POINTER_SIZE
00396 #define POINTER_SIZE BITS_PER_WORD
00397 #endif
00398
00399 #ifndef BUILD_VA_LIST_TYPE
00400 #define BUILD_VA_LIST_TYPE(X) ((X) = ptr_type_node)
00401 #endif
00402
00403 #ifndef PIC_OFFSET_TABLE_REGNUM
00404 #define PIC_OFFSET_TABLE_REGNUM INVALID_REGNUM
00405 #endif
00406
00407
00408
00409 #if LONG_TYPE_SIZE >= 64
00410 #define GCOV_TYPE_SIZE LONG_TYPE_SIZE
00411 #else
00412 #define GCOV_TYPE_SIZE LONG_LONG_TYPE_SIZE
00413 #endif
00414
00415
00416
00417
00418 #ifndef CPLUSPLUS_CPP_SPEC
00419 #ifdef CPP_SPEC
00420 #define CPLUSPLUS_CPP_SPEC CPP_SPEC
00421 #endif
00422 #endif
00423
00424 #ifndef ACCUMULATE_OUTGOING_ARGS
00425 #define ACCUMULATE_OUTGOING_ARGS 0
00426 #endif
00427
00428
00429 #ifndef PUSH_ARGS
00430 #ifdef PUSH_ROUNDING
00431 #define PUSH_ARGS !ACCUMULATE_OUTGOING_ARGS
00432 #else
00433 #define PUSH_ARGS 0
00434 #endif
00435 #endif
00436
00437
00438
00439 #ifndef PREFERRED_STACK_BOUNDARY
00440 #define PREFERRED_STACK_BOUNDARY STACK_BOUNDARY
00441 #endif
00442
00443
00444
00445
00446
00447
00448
00449 #ifndef TARGET_VTABLE_USES_DESCRIPTORS
00450 #define TARGET_VTABLE_USES_DESCRIPTORS 0
00451 #endif
00452
00453
00454
00455
00456
00457 #ifndef TARGET_VTABLE_ENTRY_ALIGN
00458 #define TARGET_VTABLE_ENTRY_ALIGN POINTER_SIZE
00459 #endif
00460
00461
00462
00463
00464
00465 #ifndef TARGET_VTABLE_DATA_ENTRY_DISTANCE
00466 #define TARGET_VTABLE_DATA_ENTRY_DISTANCE 1
00467 #endif
00468
00469
00470
00471
00472 #ifndef ASM_PREFERRED_EH_DATA_FORMAT
00473 #define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) DW_EH_PE_absptr
00474 #endif
00475
00476
00477
00478
00479
00480
00481 #ifndef TARGET_PTRMEMFUNC_VBIT_LOCATION
00482 #define TARGET_PTRMEMFUNC_VBIT_LOCATION \
00483 (FUNCTION_BOUNDARY >= 2 * BITS_PER_UNIT \
00484 ? ptrmemfunc_vbit_in_pfn : ptrmemfunc_vbit_in_delta)
00485 #endif
00486
00487 #ifndef DEFAULT_GDB_EXTENSIONS
00488 #define DEFAULT_GDB_EXTENSIONS 1
00489 #endif
00490
00491 #ifdef KEY
00492 #undef PREFERRED_DEBUGGING_TYPE
00493 #define PREFERRED_DEBUGGING_TYPE NO_DEBUG
00494 #endif // KEY
00495
00496
00497
00498
00499
00500 #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))
00501 #ifndef PREFERRED_DEBUGGING_TYPE
00502 You Lose! You must define PREFERRED_DEBUGGING_TYPE!
00503 #endif
00504 #else
00505
00506 #ifdef DBX_DEBUGGING_INFO
00507 #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
00508 #endif
00509 #ifdef SDB_DEBUGGING_INFO
00510 #define PREFERRED_DEBUGGING_TYPE SDB_DEBUG
00511 #endif
00512 #ifdef DWARF_DEBUGGING_INFO
00513 #define PREFERRED_DEBUGGING_TYPE DWARF_DEBUG
00514 #endif
00515 #ifdef DWARF2_DEBUGGING_INFO
00516 #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
00517 #endif
00518 #ifdef VMS_DEBUGGING_INFO
00519 #define PREFERRED_DEBUGGING_TYPE VMS_AND_DWARF2_DEBUG
00520 #endif
00521 #ifdef XCOFF_DEBUGGING_INFO
00522 #define PREFERRED_DEBUGGING_TYPE XCOFF_DEBUG
00523 #endif
00524 #endif
00525
00526
00527
00528 #ifndef PREFERRED_DEBUGGING_TYPE
00529 #define PREFERRED_DEBUGGING_TYPE NO_DEBUG
00530 #endif
00531
00532
00533 #define UNKNOWN_FLOAT_FORMAT 0
00534 #define IEEE_FLOAT_FORMAT 1
00535 #define VAX_FLOAT_FORMAT 2
00536 #define IBM_FLOAT_FORMAT 3
00537 #define C4X_FLOAT_FORMAT 4
00538
00539
00540 #ifndef TARGET_FLOAT_FORMAT
00541 #define TARGET_FLOAT_FORMAT IEEE_FLOAT_FORMAT
00542 #endif
00543
00544
00545
00546
00547 #ifndef MODE_BASE_REG_CLASS
00548 #define MODE_BASE_REG_CLASS(MODE) BASE_REG_CLASS
00549 #endif
00550
00551 #ifndef LARGEST_EXPONENT_IS_NORMAL
00552 #define LARGEST_EXPONENT_IS_NORMAL(SIZE) 0
00553 #endif
00554
00555 #ifndef ROUND_TOWARDS_ZERO
00556 #define ROUND_TOWARDS_ZERO 0
00557 #endif
00558
00559 #ifndef MODE_HAS_NANS
00560 #define MODE_HAS_NANS(MODE) \
00561 (FLOAT_MODE_P (MODE) \
00562 && TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT \
00563 && !LARGEST_EXPONENT_IS_NORMAL (GET_MODE_BITSIZE (MODE)))
00564 #endif
00565
00566 #ifndef MODE_HAS_INFINITIES
00567 #define MODE_HAS_INFINITIES(MODE) \
00568 (FLOAT_MODE_P (MODE) \
00569 && TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT \
00570 && !LARGEST_EXPONENT_IS_NORMAL (GET_MODE_BITSIZE (MODE)))
00571 #endif
00572
00573 #ifndef MODE_HAS_SIGNED_ZEROS
00574 #define MODE_HAS_SIGNED_ZEROS(MODE) \
00575 (FLOAT_MODE_P (MODE) && TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT)
00576 #endif
00577
00578 #ifndef MODE_HAS_SIGN_DEPENDENT_ROUNDING
00579 #define MODE_HAS_SIGN_DEPENDENT_ROUNDING(MODE) \
00580 (FLOAT_MODE_P (MODE) \
00581 && TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT \
00582 && !ROUND_TOWARDS_ZERO)
00583 #endif
00584
00585
00586
00587
00588 #ifndef FLOAT_WORDS_BIG_ENDIAN
00589 #define FLOAT_WORDS_BIG_ENDIAN WORDS_BIG_ENDIAN
00590 #endif
00591
00592 #ifndef TARGET_FLT_EVAL_METHOD
00593 #define TARGET_FLT_EVAL_METHOD 0
00594 #endif
00595
00596 #ifndef HOT_TEXT_SECTION_NAME
00597 #define HOT_TEXT_SECTION_NAME "text.hot"
00598 #endif
00599
00600 #ifndef UNLIKELY_EXECUTED_TEXT_SECTION_NAME
00601 #define UNLIKELY_EXECUTED_TEXT_SECTION_NAME "text.unlikely"
00602 #endif
00603
00604 #ifndef VECTOR_MODE_SUPPORTED_P
00605 #define VECTOR_MODE_SUPPORTED_P(MODE) 0
00606 #endif
00607
00608
00609
00610 #ifndef DEFAULT_USE_CXA_ATEXIT
00611 #define DEFAULT_USE_CXA_ATEXIT 0
00612 #endif
00613
00614
00615
00616 #ifndef EXTRA_MEMORY_CONSTRAINT
00617 #define EXTRA_MEMORY_CONSTRAINT(C) 0
00618 #endif
00619
00620
00621
00622 #ifndef EXTRA_ADDRESS_CONSTRAINT
00623 #define EXTRA_ADDRESS_CONSTRAINT(C) 0
00624 #endif
00625
00626 #endif