1*c87b03e5Sespie /* Definitions of various defaults for tm.h macros. 2*c87b03e5Sespie Copyright (C) 1992, 1996, 1997, 1998, 1999, 2000, 2001, 2002 3*c87b03e5Sespie Free Software Foundation, Inc. 4*c87b03e5Sespie Contributed by Ron Guilmette (rfg@monkeys.com) 5*c87b03e5Sespie 6*c87b03e5Sespie This file is part of GCC. 7*c87b03e5Sespie 8*c87b03e5Sespie GCC is free software; you can redistribute it and/or modify it under 9*c87b03e5Sespie the terms of the GNU General Public License as published by the Free 10*c87b03e5Sespie Software Foundation; either version 2, or (at your option) any later 11*c87b03e5Sespie version. 12*c87b03e5Sespie 13*c87b03e5Sespie GCC is distributed in the hope that it will be useful, but WITHOUT ANY 14*c87b03e5Sespie WARRANTY; without even the implied warranty of MERCHANTABILITY or 15*c87b03e5Sespie FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 16*c87b03e5Sespie for more details. 17*c87b03e5Sespie 18*c87b03e5Sespie You should have received a copy of the GNU General Public License 19*c87b03e5Sespie along with GCC; see the file COPYING. If not, write to the Free 20*c87b03e5Sespie Software Foundation, 59 Temple Place - Suite 330, Boston, MA 21*c87b03e5Sespie 02111-1307, USA. */ 22*c87b03e5Sespie 23*c87b03e5Sespie #ifndef GCC_DEFAULTS_H 24*c87b03e5Sespie #define GCC_DEFAULTS_H 25*c87b03e5Sespie 26*c87b03e5Sespie #ifndef GET_ENVIRONMENT 27*c87b03e5Sespie #define GET_ENVIRONMENT(VALUE, NAME) do { (VALUE) = getenv (NAME); } while (0) 28*c87b03e5Sespie #endif 29*c87b03e5Sespie 30*c87b03e5Sespie #define obstack_chunk_alloc xmalloc 31*c87b03e5Sespie #define obstack_chunk_free free 32*c87b03e5Sespie 33*c87b03e5Sespie /* Define default standard character escape sequences. */ 34*c87b03e5Sespie #ifndef TARGET_BELL 35*c87b03e5Sespie # define TARGET_BELL 007 36*c87b03e5Sespie # define TARGET_BS 010 37*c87b03e5Sespie # define TARGET_TAB 011 38*c87b03e5Sespie # define TARGET_NEWLINE 012 39*c87b03e5Sespie # define TARGET_VT 013 40*c87b03e5Sespie # define TARGET_FF 014 41*c87b03e5Sespie # define TARGET_CR 015 42*c87b03e5Sespie # define TARGET_ESC 033 43*c87b03e5Sespie #endif 44*c87b03e5Sespie 45*c87b03e5Sespie /* When removal of CPP_PREDEFINES is complete, TARGET_CPU_CPP_BULITINS 46*c87b03e5Sespie can also be removed from here. */ 47*c87b03e5Sespie #ifndef TARGET_OS_CPP_BUILTINS 48*c87b03e5Sespie # define TARGET_OS_CPP_BUILTINS() 49*c87b03e5Sespie #endif 50*c87b03e5Sespie #ifndef TARGET_CPU_CPP_BUILTINS 51*c87b03e5Sespie # define TARGET_CPU_CPP_BUILTINS() 52*c87b03e5Sespie #endif 53*c87b03e5Sespie #ifndef CPP_PREDEFINES 54*c87b03e5Sespie # define CPP_PREDEFINES "" 55*c87b03e5Sespie #endif 56*c87b03e5Sespie 57*c87b03e5Sespie /* Store in OUTPUT a string (made with alloca) containing 58*c87b03e5Sespie an assembler-name for a local static variable or function named NAME. 59*c87b03e5Sespie LABELNO is an integer which is different for each call. */ 60*c87b03e5Sespie 61*c87b03e5Sespie #ifndef ASM_FORMAT_PRIVATE_NAME 62*c87b03e5Sespie #define ASM_FORMAT_PRIVATE_NAME(OUTPUT, NAME, LABELNO) \ 63*c87b03e5Sespie do { \ 64*c87b03e5Sespie int len = strlen (NAME); \ 65*c87b03e5Sespie char *temp = (char *) alloca (len + 3); \ 66*c87b03e5Sespie temp[0] = 'L'; \ 67*c87b03e5Sespie strcpy (&temp[1], (NAME)); \ 68*c87b03e5Sespie temp[len + 1] = '.'; \ 69*c87b03e5Sespie temp[len + 2] = 0; \ 70*c87b03e5Sespie (OUTPUT) = (char *) alloca (strlen (NAME) + 11); \ 71*c87b03e5Sespie ASM_GENERATE_INTERNAL_LABEL (OUTPUT, temp, LABELNO); \ 72*c87b03e5Sespie } while (0) 73*c87b03e5Sespie #endif 74*c87b03e5Sespie 75*c87b03e5Sespie #ifndef ASM_STABD_OP 76*c87b03e5Sespie #define ASM_STABD_OP "\t.stabd\t" 77*c87b03e5Sespie #endif 78*c87b03e5Sespie 79*c87b03e5Sespie /* This is how to output an element of a case-vector that is absolute. 80*c87b03e5Sespie Some targets don't use this, but we have to define it anyway. */ 81*c87b03e5Sespie 82*c87b03e5Sespie #ifndef ASM_OUTPUT_ADDR_VEC_ELT 83*c87b03e5Sespie #define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \ 84*c87b03e5Sespie do { fputs (integer_asm_op (POINTER_SIZE / UNITS_PER_WORD, TRUE), FILE); \ 85*c87b03e5Sespie ASM_OUTPUT_INTERNAL_LABEL (FILE, "L", (VALUE)); \ 86*c87b03e5Sespie fputc ('\n', FILE); \ 87*c87b03e5Sespie } while (0) 88*c87b03e5Sespie #endif 89*c87b03e5Sespie 90*c87b03e5Sespie /* choose a reasonable default for ASM_OUTPUT_ASCII. */ 91*c87b03e5Sespie 92*c87b03e5Sespie #ifndef ASM_OUTPUT_ASCII 93*c87b03e5Sespie #define ASM_OUTPUT_ASCII(MYFILE, MYSTRING, MYLENGTH) \ 94*c87b03e5Sespie do { \ 95*c87b03e5Sespie FILE *_hide_asm_out_file = (MYFILE); \ 96*c87b03e5Sespie const unsigned char *_hide_p = (const unsigned char *) (MYSTRING); \ 97*c87b03e5Sespie int _hide_thissize = (MYLENGTH); \ 98*c87b03e5Sespie { \ 99*c87b03e5Sespie FILE *asm_out_file = _hide_asm_out_file; \ 100*c87b03e5Sespie const unsigned char *p = _hide_p; \ 101*c87b03e5Sespie int thissize = _hide_thissize; \ 102*c87b03e5Sespie int i; \ 103*c87b03e5Sespie fprintf (asm_out_file, "\t.ascii \""); \ 104*c87b03e5Sespie \ 105*c87b03e5Sespie for (i = 0; i < thissize; i++) \ 106*c87b03e5Sespie { \ 107*c87b03e5Sespie int c = p[i]; \ 108*c87b03e5Sespie if (c == '\"' || c == '\\') \ 109*c87b03e5Sespie putc ('\\', asm_out_file); \ 110*c87b03e5Sespie if (ISPRINT(c)) \ 111*c87b03e5Sespie putc (c, asm_out_file); \ 112*c87b03e5Sespie else \ 113*c87b03e5Sespie { \ 114*c87b03e5Sespie fprintf (asm_out_file, "\\%o", c); \ 115*c87b03e5Sespie /* After an octal-escape, if a digit follows, \ 116*c87b03e5Sespie terminate one string constant and start another. \ 117*c87b03e5Sespie The VAX assembler fails to stop reading the escape \ 118*c87b03e5Sespie after three digits, so this is the only way we \ 119*c87b03e5Sespie can get it to parse the data properly. */ \ 120*c87b03e5Sespie if (i < thissize - 1 && ISDIGIT(p[i + 1])) \ 121*c87b03e5Sespie fprintf (asm_out_file, "\"\n\t.ascii \""); \ 122*c87b03e5Sespie } \ 123*c87b03e5Sespie } \ 124*c87b03e5Sespie fprintf (asm_out_file, "\"\n"); \ 125*c87b03e5Sespie } \ 126*c87b03e5Sespie } \ 127*c87b03e5Sespie while (0) 128*c87b03e5Sespie #endif 129*c87b03e5Sespie 130*c87b03e5Sespie /* This is how we tell the assembler to equate two values. */ 131*c87b03e5Sespie #ifdef SET_ASM_OP 132*c87b03e5Sespie #ifndef ASM_OUTPUT_DEF 133*c87b03e5Sespie #define ASM_OUTPUT_DEF(FILE,LABEL1,LABEL2) \ 134*c87b03e5Sespie do { fprintf ((FILE), "%s", SET_ASM_OP); \ 135*c87b03e5Sespie assemble_name (FILE, LABEL1); \ 136*c87b03e5Sespie fprintf (FILE, ","); \ 137*c87b03e5Sespie assemble_name (FILE, LABEL2); \ 138*c87b03e5Sespie fprintf (FILE, "\n"); \ 139*c87b03e5Sespie } while (0) 140*c87b03e5Sespie #endif 141*c87b03e5Sespie #endif 142*c87b03e5Sespie 143*c87b03e5Sespie /* This is how to output the definition of a user-level label named 144*c87b03e5Sespie NAME, such as the label on a static function or variable NAME. */ 145*c87b03e5Sespie 146*c87b03e5Sespie #ifndef ASM_OUTPUT_LABEL 147*c87b03e5Sespie #define ASM_OUTPUT_LABEL(FILE,NAME) \ 148*c87b03e5Sespie do { assemble_name ((FILE), (NAME)); fputs (":\n", (FILE)); } while (0) 149*c87b03e5Sespie #endif 150*c87b03e5Sespie 151*c87b03e5Sespie /* This is how to output a reference to a user-level label named NAME. */ 152*c87b03e5Sespie 153*c87b03e5Sespie #ifndef ASM_OUTPUT_LABELREF 154*c87b03e5Sespie #define ASM_OUTPUT_LABELREF(FILE,NAME) asm_fprintf ((FILE), "%U%s", (NAME)) 155*c87b03e5Sespie #endif 156*c87b03e5Sespie 157*c87b03e5Sespie /* Allow target to print debug info labels specially. This is useful for 158*c87b03e5Sespie VLIW targets, since debug info labels should go into the middle of 159*c87b03e5Sespie instruction bundles instead of breaking them. */ 160*c87b03e5Sespie 161*c87b03e5Sespie #ifndef ASM_OUTPUT_DEBUG_LABEL 162*c87b03e5Sespie #define ASM_OUTPUT_DEBUG_LABEL(FILE, PREFIX, NUM) \ 163*c87b03e5Sespie ASM_OUTPUT_INTERNAL_LABEL (FILE, PREFIX, NUM) 164*c87b03e5Sespie #endif 165*c87b03e5Sespie 166*c87b03e5Sespie /* This is how we tell the assembler that a symbol is weak. */ 167*c87b03e5Sespie #ifndef ASM_OUTPUT_WEAK_ALIAS 168*c87b03e5Sespie #if defined (ASM_WEAKEN_LABEL) && defined (ASM_OUTPUT_DEF) 169*c87b03e5Sespie #define ASM_OUTPUT_WEAK_ALIAS(STREAM, NAME, VALUE) \ 170*c87b03e5Sespie do \ 171*c87b03e5Sespie { \ 172*c87b03e5Sespie ASM_WEAKEN_LABEL (STREAM, NAME); \ 173*c87b03e5Sespie if (VALUE) \ 174*c87b03e5Sespie ASM_OUTPUT_DEF (STREAM, NAME, VALUE); \ 175*c87b03e5Sespie } \ 176*c87b03e5Sespie while (0) 177*c87b03e5Sespie #endif 178*c87b03e5Sespie #endif 179*c87b03e5Sespie 180*c87b03e5Sespie /* How to emit a .type directive. */ 181*c87b03e5Sespie #ifndef ASM_OUTPUT_TYPE_DIRECTIVE 182*c87b03e5Sespie #if defined TYPE_ASM_OP && defined TYPE_OPERAND_FMT 183*c87b03e5Sespie #define ASM_OUTPUT_TYPE_DIRECTIVE(STREAM, NAME, TYPE) \ 184*c87b03e5Sespie do \ 185*c87b03e5Sespie { \ 186*c87b03e5Sespie fputs (TYPE_ASM_OP, STREAM); \ 187*c87b03e5Sespie assemble_name (STREAM, NAME); \ 188*c87b03e5Sespie fputs (", ", STREAM); \ 189*c87b03e5Sespie fprintf (STREAM, TYPE_OPERAND_FMT, TYPE); \ 190*c87b03e5Sespie putc ('\n', STREAM); \ 191*c87b03e5Sespie } \ 192*c87b03e5Sespie while (0) 193*c87b03e5Sespie #endif 194*c87b03e5Sespie #endif 195*c87b03e5Sespie 196*c87b03e5Sespie /* How to emit a .size directive. */ 197*c87b03e5Sespie #ifndef ASM_OUTPUT_SIZE_DIRECTIVE 198*c87b03e5Sespie #ifdef SIZE_ASM_OP 199*c87b03e5Sespie #define ASM_OUTPUT_SIZE_DIRECTIVE(STREAM, NAME, SIZE) \ 200*c87b03e5Sespie do \ 201*c87b03e5Sespie { \ 202*c87b03e5Sespie HOST_WIDE_INT size_ = (SIZE); \ 203*c87b03e5Sespie fputs (SIZE_ASM_OP, STREAM); \ 204*c87b03e5Sespie assemble_name (STREAM, NAME); \ 205*c87b03e5Sespie fputs (", ", STREAM); \ 206*c87b03e5Sespie fprintf (STREAM, HOST_WIDE_INT_PRINT_DEC, size_); \ 207*c87b03e5Sespie putc ('\n', STREAM); \ 208*c87b03e5Sespie } \ 209*c87b03e5Sespie while (0) 210*c87b03e5Sespie 211*c87b03e5Sespie #define ASM_OUTPUT_MEASURED_SIZE(STREAM, NAME) \ 212*c87b03e5Sespie do \ 213*c87b03e5Sespie { \ 214*c87b03e5Sespie fputs (SIZE_ASM_OP, STREAM); \ 215*c87b03e5Sespie assemble_name (STREAM, NAME); \ 216*c87b03e5Sespie fputs (", .-", STREAM); \ 217*c87b03e5Sespie assemble_name (STREAM, NAME); \ 218*c87b03e5Sespie putc ('\n', STREAM); \ 219*c87b03e5Sespie } \ 220*c87b03e5Sespie while (0) 221*c87b03e5Sespie 222*c87b03e5Sespie #endif 223*c87b03e5Sespie #endif 224*c87b03e5Sespie 225*c87b03e5Sespie /* This determines whether or not we support weak symbols. */ 226*c87b03e5Sespie #ifndef SUPPORTS_WEAK 227*c87b03e5Sespie #if defined (ASM_WEAKEN_LABEL) || defined (ASM_WEAKEN_DECL) 228*c87b03e5Sespie #define SUPPORTS_WEAK 1 229*c87b03e5Sespie #else 230*c87b03e5Sespie #define SUPPORTS_WEAK 0 231*c87b03e5Sespie #endif 232*c87b03e5Sespie #endif 233*c87b03e5Sespie 234*c87b03e5Sespie /* This determines whether or not we support link-once semantics. */ 235*c87b03e5Sespie #ifndef SUPPORTS_ONE_ONLY 236*c87b03e5Sespie #ifdef MAKE_DECL_ONE_ONLY 237*c87b03e5Sespie #define SUPPORTS_ONE_ONLY 1 238*c87b03e5Sespie #else 239*c87b03e5Sespie #define SUPPORTS_ONE_ONLY 0 240*c87b03e5Sespie #endif 241*c87b03e5Sespie #endif 242*c87b03e5Sespie 243*c87b03e5Sespie /* By default, there is no prefix on user-defined symbols. */ 244*c87b03e5Sespie #ifndef USER_LABEL_PREFIX 245*c87b03e5Sespie #define USER_LABEL_PREFIX "" 246*c87b03e5Sespie #endif 247*c87b03e5Sespie 248*c87b03e5Sespie /* If the target supports weak symbols, define TARGET_ATTRIBUTE_WEAK to 249*c87b03e5Sespie provide a weak attribute. Else define it to nothing. 250*c87b03e5Sespie 251*c87b03e5Sespie This would normally belong in ansidecl.h, but SUPPORTS_WEAK is 252*c87b03e5Sespie not available at that time. 253*c87b03e5Sespie 254*c87b03e5Sespie Note, this is only for use by target files which we know are to be 255*c87b03e5Sespie compiled by GCC. */ 256*c87b03e5Sespie #ifndef TARGET_ATTRIBUTE_WEAK 257*c87b03e5Sespie # if SUPPORTS_WEAK 258*c87b03e5Sespie # define TARGET_ATTRIBUTE_WEAK __attribute__ ((weak)) 259*c87b03e5Sespie # else 260*c87b03e5Sespie # define TARGET_ATTRIBUTE_WEAK 261*c87b03e5Sespie # endif 262*c87b03e5Sespie #endif 263*c87b03e5Sespie 264*c87b03e5Sespie /* If the target supports init_priority C++ attribute, give 265*c87b03e5Sespie SUPPORTS_INIT_PRIORITY a nonzero value. */ 266*c87b03e5Sespie #ifndef SUPPORTS_INIT_PRIORITY 267*c87b03e5Sespie #define SUPPORTS_INIT_PRIORITY 1 268*c87b03e5Sespie #endif /* SUPPORTS_INIT_PRIORITY */ 269*c87b03e5Sespie 270*c87b03e5Sespie /* If duplicate library search directories can be removed from a 271*c87b03e5Sespie linker command without changing the linker's semantics, give this 272*c87b03e5Sespie symbol a nonzero. */ 273*c87b03e5Sespie #ifndef LINK_ELIMINATE_DUPLICATE_LDIRECTORIES 274*c87b03e5Sespie #define LINK_ELIMINATE_DUPLICATE_LDIRECTORIES 0 275*c87b03e5Sespie #endif /* LINK_ELIMINATE_DUPLICATE_LDIRECTORIES */ 276*c87b03e5Sespie 277*c87b03e5Sespie /* If we have a definition of INCOMING_RETURN_ADDR_RTX, assume that 278*c87b03e5Sespie the rest of the DWARF 2 frame unwind support is also provided. */ 279*c87b03e5Sespie #if !defined (DWARF2_UNWIND_INFO) && defined (INCOMING_RETURN_ADDR_RTX) 280*c87b03e5Sespie #define DWARF2_UNWIND_INFO 1 281*c87b03e5Sespie #endif 282*c87b03e5Sespie 283*c87b03e5Sespie /* If we have named sections, and we're using crtstuff to run ctors, 284*c87b03e5Sespie use them for registering eh frame information. */ 285*c87b03e5Sespie #if defined (TARGET_ASM_NAMED_SECTION) && DWARF2_UNWIND_INFO \ 286*c87b03e5Sespie && !defined(EH_FRAME_IN_DATA_SECTION) 287*c87b03e5Sespie #ifndef EH_FRAME_SECTION_NAME 288*c87b03e5Sespie #define EH_FRAME_SECTION_NAME ".eh_frame" 289*c87b03e5Sespie #endif 290*c87b03e5Sespie #endif 291*c87b03e5Sespie 292*c87b03e5Sespie /* If we have named section and we support weak symbols, then use the 293*c87b03e5Sespie .jcr section for recording java classes which need to be registered 294*c87b03e5Sespie at program start-up time. */ 295*c87b03e5Sespie #if defined (TARGET_ASM_NAMED_SECTION) && SUPPORTS_WEAK 296*c87b03e5Sespie #ifndef JCR_SECTION_NAME 297*c87b03e5Sespie #define JCR_SECTION_NAME ".jcr" 298*c87b03e5Sespie #endif 299*c87b03e5Sespie #endif 300*c87b03e5Sespie 301*c87b03e5Sespie /* By default, we generate a label at the beginning and end of the 302*c87b03e5Sespie text section, and compute the size of the text section by 303*c87b03e5Sespie subtracting the two. However, on some platforms that doesn't 304*c87b03e5Sespie work, and we use the section itself, rather than a label at the 305*c87b03e5Sespie beginning of it, to indicate the start of the section. On such 306*c87b03e5Sespie platforms, define this to zero. */ 307*c87b03e5Sespie #ifndef DWARF2_GENERATE_TEXT_SECTION_LABEL 308*c87b03e5Sespie #define DWARF2_GENERATE_TEXT_SECTION_LABEL 1 309*c87b03e5Sespie #endif 310*c87b03e5Sespie 311*c87b03e5Sespie /* Supply a default definition for PROMOTE_PROTOTYPES. */ 312*c87b03e5Sespie #ifndef PROMOTE_PROTOTYPES 313*c87b03e5Sespie #define PROMOTE_PROTOTYPES 0 314*c87b03e5Sespie #endif 315*c87b03e5Sespie 316*c87b03e5Sespie /* Number of hardware registers that go into the DWARF-2 unwind info. 317*c87b03e5Sespie If not defined, equals FIRST_PSEUDO_REGISTER */ 318*c87b03e5Sespie 319*c87b03e5Sespie #ifndef DWARF_FRAME_REGISTERS 320*c87b03e5Sespie #define DWARF_FRAME_REGISTERS FIRST_PSEUDO_REGISTER 321*c87b03e5Sespie #endif 322*c87b03e5Sespie 323*c87b03e5Sespie /* How to renumber registers for dbx and gdb. If not defined, assume 324*c87b03e5Sespie no renumbering is necessary. */ 325*c87b03e5Sespie 326*c87b03e5Sespie #ifndef DBX_REGISTER_NUMBER 327*c87b03e5Sespie #define DBX_REGISTER_NUMBER(REGNO) (REGNO) 328*c87b03e5Sespie #endif 329*c87b03e5Sespie 330*c87b03e5Sespie /* Default sizes for base C types. If the sizes are different for 331*c87b03e5Sespie your target, you should override these values by defining the 332*c87b03e5Sespie appropriate symbols in your tm.h file. */ 333*c87b03e5Sespie 334*c87b03e5Sespie #ifndef BITS_PER_UNIT 335*c87b03e5Sespie #define BITS_PER_UNIT 8 336*c87b03e5Sespie #endif 337*c87b03e5Sespie 338*c87b03e5Sespie #ifndef BITS_PER_WORD 339*c87b03e5Sespie #define BITS_PER_WORD (BITS_PER_UNIT * UNITS_PER_WORD) 340*c87b03e5Sespie #endif 341*c87b03e5Sespie 342*c87b03e5Sespie #ifndef CHAR_TYPE_SIZE 343*c87b03e5Sespie #define CHAR_TYPE_SIZE BITS_PER_UNIT 344*c87b03e5Sespie #endif 345*c87b03e5Sespie 346*c87b03e5Sespie #ifndef BOOL_TYPE_SIZE 347*c87b03e5Sespie /* `bool' has size and alignment `1', on almost all platforms. */ 348*c87b03e5Sespie #define BOOL_TYPE_SIZE CHAR_TYPE_SIZE 349*c87b03e5Sespie #endif 350*c87b03e5Sespie 351*c87b03e5Sespie #ifndef SHORT_TYPE_SIZE 352*c87b03e5Sespie #define SHORT_TYPE_SIZE (BITS_PER_UNIT * MIN ((UNITS_PER_WORD + 1) / 2, 2)) 353*c87b03e5Sespie #endif 354*c87b03e5Sespie 355*c87b03e5Sespie #ifndef INT_TYPE_SIZE 356*c87b03e5Sespie #define INT_TYPE_SIZE BITS_PER_WORD 357*c87b03e5Sespie #endif 358*c87b03e5Sespie 359*c87b03e5Sespie #ifndef LONG_TYPE_SIZE 360*c87b03e5Sespie #define LONG_TYPE_SIZE BITS_PER_WORD 361*c87b03e5Sespie #endif 362*c87b03e5Sespie 363*c87b03e5Sespie #ifndef LONG_LONG_TYPE_SIZE 364*c87b03e5Sespie #define LONG_LONG_TYPE_SIZE (BITS_PER_WORD * 2) 365*c87b03e5Sespie #endif 366*c87b03e5Sespie 367*c87b03e5Sespie #ifndef WCHAR_TYPE_SIZE 368*c87b03e5Sespie #define WCHAR_TYPE_SIZE INT_TYPE_SIZE 369*c87b03e5Sespie #endif 370*c87b03e5Sespie 371*c87b03e5Sespie #ifndef FLOAT_TYPE_SIZE 372*c87b03e5Sespie #define FLOAT_TYPE_SIZE BITS_PER_WORD 373*c87b03e5Sespie #endif 374*c87b03e5Sespie 375*c87b03e5Sespie #ifndef DOUBLE_TYPE_SIZE 376*c87b03e5Sespie #define DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2) 377*c87b03e5Sespie #endif 378*c87b03e5Sespie 379*c87b03e5Sespie #ifndef LONG_DOUBLE_TYPE_SIZE 380*c87b03e5Sespie #define LONG_DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2) 381*c87b03e5Sespie #endif 382*c87b03e5Sespie 383*c87b03e5Sespie /* Width in bits of a pointer. Mind the value of the macro `Pmode'. */ 384*c87b03e5Sespie #ifndef POINTER_SIZE 385*c87b03e5Sespie #define POINTER_SIZE BITS_PER_WORD 386*c87b03e5Sespie #endif 387*c87b03e5Sespie 388*c87b03e5Sespie #ifndef BUILD_VA_LIST_TYPE 389*c87b03e5Sespie #define BUILD_VA_LIST_TYPE(X) ((X) = ptr_type_node) 390*c87b03e5Sespie #endif 391*c87b03e5Sespie 392*c87b03e5Sespie #ifndef PIC_OFFSET_TABLE_REGNUM 393*c87b03e5Sespie #define PIC_OFFSET_TABLE_REGNUM INVALID_REGNUM 394*c87b03e5Sespie #endif 395*c87b03e5Sespie 396*c87b03e5Sespie /* Type used by GCOV counters. Use 64bit data type if target supports 397*c87b03e5Sespie it. */ 398*c87b03e5Sespie #if LONG_TYPE_SIZE >= 64 399*c87b03e5Sespie #define GCOV_TYPE_SIZE LONG_TYPE_SIZE 400*c87b03e5Sespie #else 401*c87b03e5Sespie #define GCOV_TYPE_SIZE LONG_LONG_TYPE_SIZE 402*c87b03e5Sespie #endif 403*c87b03e5Sespie 404*c87b03e5Sespie 405*c87b03e5Sespie /* By default, the preprocessor should be invoked the same way in C++ 406*c87b03e5Sespie as in C. */ 407*c87b03e5Sespie #ifndef CPLUSPLUS_CPP_SPEC 408*c87b03e5Sespie #ifdef CPP_SPEC 409*c87b03e5Sespie #define CPLUSPLUS_CPP_SPEC CPP_SPEC 410*c87b03e5Sespie #endif 411*c87b03e5Sespie #endif 412*c87b03e5Sespie 413*c87b03e5Sespie #ifndef ACCUMULATE_OUTGOING_ARGS 414*c87b03e5Sespie #define ACCUMULATE_OUTGOING_ARGS 0 415*c87b03e5Sespie #endif 416*c87b03e5Sespie 417*c87b03e5Sespie /* Supply a default definition for PUSH_ARGS. */ 418*c87b03e5Sespie #ifndef PUSH_ARGS 419*c87b03e5Sespie #ifdef PUSH_ROUNDING 420*c87b03e5Sespie #define PUSH_ARGS !ACCUMULATE_OUTGOING_ARGS 421*c87b03e5Sespie #else 422*c87b03e5Sespie #define PUSH_ARGS 0 423*c87b03e5Sespie #endif 424*c87b03e5Sespie #endif 425*c87b03e5Sespie 426*c87b03e5Sespie /* If PREFERRED_STACK_BOUNDARY is not defined, set it to STACK_BOUNDARY. 427*c87b03e5Sespie STACK_BOUNDARY is required. */ 428*c87b03e5Sespie #ifndef PREFERRED_STACK_BOUNDARY 429*c87b03e5Sespie #define PREFERRED_STACK_BOUNDARY STACK_BOUNDARY 430*c87b03e5Sespie #endif 431*c87b03e5Sespie 432*c87b03e5Sespie /* By default, the C++ compiler will use function addresses in the 433*c87b03e5Sespie vtable entries. Setting this nonzero tells the compiler to use 434*c87b03e5Sespie function descriptors instead. The value of this macro says how 435*c87b03e5Sespie many words wide the descriptor is (normally 2). It is assumed 436*c87b03e5Sespie that the address of a function descriptor may be treated as a 437*c87b03e5Sespie pointer to a function. */ 438*c87b03e5Sespie #ifndef TARGET_VTABLE_USES_DESCRIPTORS 439*c87b03e5Sespie #define TARGET_VTABLE_USES_DESCRIPTORS 0 440*c87b03e5Sespie #endif 441*c87b03e5Sespie 442*c87b03e5Sespie /* By default, the vtable entries are void pointers, the so the alignment 443*c87b03e5Sespie is the same as pointer alignment. The value of this macro specifies 444*c87b03e5Sespie the alignment of the vtable entry in bits. It should be defined only 445*c87b03e5Sespie when special alignment is necessary. */ 446*c87b03e5Sespie #ifndef TARGET_VTABLE_ENTRY_ALIGN 447*c87b03e5Sespie #define TARGET_VTABLE_ENTRY_ALIGN POINTER_SIZE 448*c87b03e5Sespie #endif 449*c87b03e5Sespie 450*c87b03e5Sespie /* There are a few non-descriptor entries in the vtable at offsets below 451*c87b03e5Sespie zero. If these entries must be padded (say, to preserve the alignment 452*c87b03e5Sespie specified by TARGET_VTABLE_ENTRY_ALIGN), set this to the number of 453*c87b03e5Sespie words in each data entry. */ 454*c87b03e5Sespie #ifndef TARGET_VTABLE_DATA_ENTRY_DISTANCE 455*c87b03e5Sespie #define TARGET_VTABLE_DATA_ENTRY_DISTANCE 1 456*c87b03e5Sespie #endif 457*c87b03e5Sespie 458*c87b03e5Sespie /* Select a format to encode pointers in exception handling data. We 459*c87b03e5Sespie prefer those that result in fewer dynamic relocations. Assume no 460*c87b03e5Sespie special support here and encode direct references. */ 461*c87b03e5Sespie #ifndef ASM_PREFERRED_EH_DATA_FORMAT 462*c87b03e5Sespie #define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) DW_EH_PE_absptr 463*c87b03e5Sespie #endif 464*c87b03e5Sespie 465*c87b03e5Sespie /* By default, the C++ compiler will use the lowest bit of the pointer 466*c87b03e5Sespie to function to indicate a pointer-to-member-function points to a 467*c87b03e5Sespie virtual member function. However, if FUNCTION_BOUNDARY indicates 468*c87b03e5Sespie function addresses aren't always even, the lowest bit of the delta 469*c87b03e5Sespie field will be used. */ 470*c87b03e5Sespie #ifndef TARGET_PTRMEMFUNC_VBIT_LOCATION 471*c87b03e5Sespie #define TARGET_PTRMEMFUNC_VBIT_LOCATION \ 472*c87b03e5Sespie (FUNCTION_BOUNDARY >= 2 * BITS_PER_UNIT \ 473*c87b03e5Sespie ? ptrmemfunc_vbit_in_pfn : ptrmemfunc_vbit_in_delta) 474*c87b03e5Sespie #endif 475*c87b03e5Sespie 476*c87b03e5Sespie #ifndef DEFAULT_GDB_EXTENSIONS 477*c87b03e5Sespie #define DEFAULT_GDB_EXTENSIONS 1 478*c87b03e5Sespie #endif 479*c87b03e5Sespie 480*c87b03e5Sespie /* If more than one debugging type is supported, you must define 481*c87b03e5Sespie PREFERRED_DEBUGGING_TYPE to choose a format in a system-dependent way. 482*c87b03e5Sespie 483*c87b03e5Sespie This is one long line cause VAXC can't handle a \-newline. */ 484*c87b03e5Sespie #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)) 485*c87b03e5Sespie #ifndef PREFERRED_DEBUGGING_TYPE 486*c87b03e5Sespie You Lose! You must define PREFERRED_DEBUGGING_TYPE! 487*c87b03e5Sespie #endif /* no PREFERRED_DEBUGGING_TYPE */ 488*c87b03e5Sespie #else /* Only one debugging format supported. Define PREFERRED_DEBUGGING_TYPE 489*c87b03e5Sespie so other code needn't care. */ 490*c87b03e5Sespie #ifdef DBX_DEBUGGING_INFO 491*c87b03e5Sespie #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG 492*c87b03e5Sespie #endif 493*c87b03e5Sespie #ifdef SDB_DEBUGGING_INFO 494*c87b03e5Sespie #define PREFERRED_DEBUGGING_TYPE SDB_DEBUG 495*c87b03e5Sespie #endif 496*c87b03e5Sespie #ifdef DWARF_DEBUGGING_INFO 497*c87b03e5Sespie #define PREFERRED_DEBUGGING_TYPE DWARF_DEBUG 498*c87b03e5Sespie #endif 499*c87b03e5Sespie #ifdef DWARF2_DEBUGGING_INFO 500*c87b03e5Sespie #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG 501*c87b03e5Sespie #endif 502*c87b03e5Sespie #ifdef VMS_DEBUGGING_INFO 503*c87b03e5Sespie #define PREFERRED_DEBUGGING_TYPE VMS_AND_DWARF2_DEBUG 504*c87b03e5Sespie #endif 505*c87b03e5Sespie #ifdef XCOFF_DEBUGGING_INFO 506*c87b03e5Sespie #define PREFERRED_DEBUGGING_TYPE XCOFF_DEBUG 507*c87b03e5Sespie #endif 508*c87b03e5Sespie #endif /* More than one debugger format enabled. */ 509*c87b03e5Sespie 510*c87b03e5Sespie /* If still not defined, must have been because no debugging formats 511*c87b03e5Sespie are supported. */ 512*c87b03e5Sespie #ifndef PREFERRED_DEBUGGING_TYPE 513*c87b03e5Sespie #define PREFERRED_DEBUGGING_TYPE NO_DEBUG 514*c87b03e5Sespie #endif 515*c87b03e5Sespie 516*c87b03e5Sespie /* Define codes for all the float formats that we know of. */ 517*c87b03e5Sespie #define UNKNOWN_FLOAT_FORMAT 0 518*c87b03e5Sespie #define IEEE_FLOAT_FORMAT 1 519*c87b03e5Sespie #define VAX_FLOAT_FORMAT 2 520*c87b03e5Sespie #define IBM_FLOAT_FORMAT 3 521*c87b03e5Sespie #define C4X_FLOAT_FORMAT 4 522*c87b03e5Sespie 523*c87b03e5Sespie /* Default to IEEE float if not specified. Nearly all machines use it. */ 524*c87b03e5Sespie #ifndef TARGET_FLOAT_FORMAT 525*c87b03e5Sespie #define TARGET_FLOAT_FORMAT IEEE_FLOAT_FORMAT 526*c87b03e5Sespie #endif 527*c87b03e5Sespie 528*c87b03e5Sespie /* Determine the register class for registers suitable to be the base 529*c87b03e5Sespie address register in a MEM. Allow the choice to be dependent upon 530*c87b03e5Sespie the mode of the memory access. */ 531*c87b03e5Sespie #ifndef MODE_BASE_REG_CLASS 532*c87b03e5Sespie #define MODE_BASE_REG_CLASS(MODE) BASE_REG_CLASS 533*c87b03e5Sespie #endif 534*c87b03e5Sespie 535*c87b03e5Sespie #ifndef LARGEST_EXPONENT_IS_NORMAL 536*c87b03e5Sespie #define LARGEST_EXPONENT_IS_NORMAL(SIZE) 0 537*c87b03e5Sespie #endif 538*c87b03e5Sespie 539*c87b03e5Sespie #ifndef ROUND_TOWARDS_ZERO 540*c87b03e5Sespie #define ROUND_TOWARDS_ZERO 0 541*c87b03e5Sespie #endif 542*c87b03e5Sespie 543*c87b03e5Sespie #ifndef MODE_HAS_NANS 544*c87b03e5Sespie #define MODE_HAS_NANS(MODE) \ 545*c87b03e5Sespie (FLOAT_MODE_P (MODE) \ 546*c87b03e5Sespie && TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT \ 547*c87b03e5Sespie && !LARGEST_EXPONENT_IS_NORMAL (GET_MODE_BITSIZE (MODE))) 548*c87b03e5Sespie #endif 549*c87b03e5Sespie 550*c87b03e5Sespie #ifndef MODE_HAS_INFINITIES 551*c87b03e5Sespie #define MODE_HAS_INFINITIES(MODE) \ 552*c87b03e5Sespie (FLOAT_MODE_P (MODE) \ 553*c87b03e5Sespie && TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT \ 554*c87b03e5Sespie && !LARGEST_EXPONENT_IS_NORMAL (GET_MODE_BITSIZE (MODE))) 555*c87b03e5Sespie #endif 556*c87b03e5Sespie 557*c87b03e5Sespie #ifndef MODE_HAS_SIGNED_ZEROS 558*c87b03e5Sespie #define MODE_HAS_SIGNED_ZEROS(MODE) \ 559*c87b03e5Sespie (FLOAT_MODE_P (MODE) && TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT) 560*c87b03e5Sespie #endif 561*c87b03e5Sespie 562*c87b03e5Sespie #ifndef MODE_HAS_SIGN_DEPENDENT_ROUNDING 563*c87b03e5Sespie #define MODE_HAS_SIGN_DEPENDENT_ROUNDING(MODE) \ 564*c87b03e5Sespie (FLOAT_MODE_P (MODE) \ 565*c87b03e5Sespie && TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT \ 566*c87b03e5Sespie && !ROUND_TOWARDS_ZERO) 567*c87b03e5Sespie #endif 568*c87b03e5Sespie 569*c87b03e5Sespie /* If FLOAT_WORDS_BIG_ENDIAN and HOST_FLOAT_WORDS_BIG_ENDIAN are not defined 570*c87b03e5Sespie in the header files, then this implies the word-endianness is the same as 571*c87b03e5Sespie for integers. */ 572*c87b03e5Sespie #ifndef FLOAT_WORDS_BIG_ENDIAN 573*c87b03e5Sespie #define FLOAT_WORDS_BIG_ENDIAN WORDS_BIG_ENDIAN 574*c87b03e5Sespie #endif 575*c87b03e5Sespie 576*c87b03e5Sespie #ifndef TARGET_FLT_EVAL_METHOD 577*c87b03e5Sespie #define TARGET_FLT_EVAL_METHOD 0 578*c87b03e5Sespie #endif 579*c87b03e5Sespie 580*c87b03e5Sespie #ifndef HOT_TEXT_SECTION_NAME 581*c87b03e5Sespie #define HOT_TEXT_SECTION_NAME "text.hot" 582*c87b03e5Sespie #endif 583*c87b03e5Sespie 584*c87b03e5Sespie #ifndef UNLIKELY_EXECUTED_TEXT_SECTION_NAME 585*c87b03e5Sespie #define UNLIKELY_EXECUTED_TEXT_SECTION_NAME "text.unlikely" 586*c87b03e5Sespie #endif 587*c87b03e5Sespie 588*c87b03e5Sespie #ifndef VECTOR_MODE_SUPPORTED_P 589*c87b03e5Sespie #define VECTOR_MODE_SUPPORTED_P(MODE) 0 590*c87b03e5Sespie #endif 591*c87b03e5Sespie 592*c87b03e5Sespie /* Determine whether __cxa_atexit, rather than atexit, is used to 593*c87b03e5Sespie register C++ destructors for local statics and global objects. */ 594*c87b03e5Sespie #ifndef DEFAULT_USE_CXA_ATEXIT 595*c87b03e5Sespie #define DEFAULT_USE_CXA_ATEXIT 0 596*c87b03e5Sespie #endif 597*c87b03e5Sespie 598*c87b03e5Sespie /* Determine whether extra constraint letter should be handled 599*c87b03e5Sespie via address reload (like 'o'). */ 600*c87b03e5Sespie #ifndef EXTRA_MEMORY_CONSTRAINT 601*c87b03e5Sespie #define EXTRA_MEMORY_CONSTRAINT(C) 0 602*c87b03e5Sespie #endif 603*c87b03e5Sespie 604*c87b03e5Sespie /* Determine whether extra constraint letter should be handled 605*c87b03e5Sespie as an address (like 'p'). */ 606*c87b03e5Sespie #ifndef EXTRA_ADDRESS_CONSTRAINT 607*c87b03e5Sespie #define EXTRA_ADDRESS_CONSTRAINT(C) 0 608*c87b03e5Sespie #endif 609*c87b03e5Sespie 610*c87b03e5Sespie #endif /* ! GCC_DEFAULTS_H */ 611