|
|
1.1.1.3 ! root 1: This is Info file gcc.info, produced by Makeinfo version 1.67 from the ! 2: input file gcc.texi. 1.1 root 3: 4: This file documents the use and the internals of the GNU compiler. 5: 1.1.1.2 root 6: Published by the Free Software Foundation 59 Temple Place - Suite 330 7: Boston, MA 02111-1307 USA 1.1 root 8: 1.1.1.2 root 9: Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995 Free Software 10: Foundation, Inc. 1.1 root 11: 12: Permission is granted to make and distribute verbatim copies of this 13: manual provided the copyright notice and this permission notice are 14: preserved on all copies. 15: 16: Permission is granted to copy and distribute modified versions of 17: this manual under the conditions for verbatim copying, provided also 18: that the sections entitled "GNU General Public License," "Funding for 19: Free Software," and "Protect Your Freedom--Fight `Look And Feel'" are 20: included exactly as in the original, and provided that the entire 21: resulting derived work is distributed under the terms of a permission 22: notice identical to this one. 23: 24: Permission is granted to copy and distribute translations of this 25: manual into another language, under the above conditions for modified 26: versions, except that the sections entitled "GNU General Public 27: License," "Funding for Free Software," and "Protect Your Freedom--Fight 28: `Look And Feel'", and this permission notice, may be included in 29: translations approved by the Free Software Foundation instead of in the 30: original English. 31: 32: 1.1.1.2 root 33: File: gcc.info, Node: Cross-compilation, Next: Misc, Prev: Debugging Info, Up: Target Macros 1.1 root 34: 1.1.1.2 root 35: Cross Compilation and Floating Point 36: ==================================== 37: 38: While all modern machines use 2's complement representation for 39: integers, there are a variety of representations for floating point 40: numbers. This means that in a cross-compiler the representation of 41: floating point numbers in the compiled program may be different from 42: that used in the machine doing the compilation. 43: 44: Because different representation systems may offer different amounts 45: of range and precision, the cross compiler cannot safely use the host 46: machine's floating point arithmetic. Therefore, floating point 47: constants must be represented in the target machine's format. This 48: means that the cross compiler cannot use `atof' to parse a floating 49: point constant; it must have its own special routine to use instead. 50: Also, constant folding must emulate the target machine's arithmetic (or 51: must not be done at all). 52: 53: The macros in the following table should be defined only if you are 54: cross compiling between different floating point formats. 55: 56: Otherwise, don't define them. Then default definitions will be set 57: up which use `double' as the data type, `==' to test for equality, etc. 58: 59: You don't need to worry about how many times you use an operand of 60: any of these macros. The compiler never uses operands which have side 61: effects. 62: 63: `REAL_VALUE_TYPE' 64: A macro for the C data type to be used to hold a floating point 65: value in the target machine's format. Typically this would be a 66: `struct' containing an array of `int'. 67: 68: `REAL_VALUES_EQUAL (X, Y)' 69: A macro for a C expression which compares for equality the two 70: values, X and Y, both of type `REAL_VALUE_TYPE'. 71: 72: `REAL_VALUES_LESS (X, Y)' 73: A macro for a C expression which tests whether X is less than Y, 74: both values being of type `REAL_VALUE_TYPE' and interpreted as 75: floating point numbers in the target machine's representation. 76: 77: `REAL_VALUE_LDEXP (X, SCALE)' 78: A macro for a C expression which performs the standard library 79: function `ldexp', but using the target machine's floating point 80: representation. Both X and the value of the expression have type 81: `REAL_VALUE_TYPE'. The second argument, SCALE, is an integer. 82: 83: `REAL_VALUE_FIX (X)' 84: A macro whose definition is a C expression to convert the 85: target-machine floating point value X to a signed integer. X has 86: type `REAL_VALUE_TYPE'. 87: 88: `REAL_VALUE_UNSIGNED_FIX (X)' 89: A macro whose definition is a C expression to convert the 90: target-machine floating point value X to an unsigned integer. X 91: has type `REAL_VALUE_TYPE'. 92: 93: `REAL_VALUE_RNDZINT (X)' 94: A macro whose definition is a C expression to round the 95: target-machine floating point value X towards zero to an integer 96: value (but still as a floating point number). X has type 97: `REAL_VALUE_TYPE', and so does the value. 98: 99: `REAL_VALUE_UNSIGNED_RNDZINT (X)' 100: A macro whose definition is a C expression to round the 101: target-machine floating point value X towards zero to an unsigned 102: integer value (but still represented as a floating point number). 1.1.1.3 ! root 103: X has type `REAL_VALUE_TYPE', and so does the value. 1.1.1.2 root 104: 105: `REAL_VALUE_ATOF (STRING, MODE)' 106: A macro for a C expression which converts STRING, an expression of 107: type `char *', into a floating point number in the target machine's 108: representation for mode MODE. The value has type 109: `REAL_VALUE_TYPE'. 110: 111: `REAL_INFINITY' 112: Define this macro if infinity is a possible floating point value, 113: and therefore division by 0 is legitimate. 114: 115: `REAL_VALUE_ISINF (X)' 116: A macro for a C expression which determines whether X, a floating 117: point value, is infinity. The value has type `int'. By default, 118: this is defined to call `isinf'. 119: 120: `REAL_VALUE_ISNAN (X)' 121: A macro for a C expression which determines whether X, a floating 122: point value, is a "nan" (not-a-number). The value has type `int'. 123: By default, this is defined to call `isnan'. 124: 125: Define the following additional macros if you want to make floating 126: point constant folding work while cross compiling. If you don't define 127: them, cross compilation is still possible, but constant folding will 128: not happen for floating point values. 129: 130: `REAL_ARITHMETIC (OUTPUT, CODE, X, Y)' 131: A macro for a C statement which calculates an arithmetic operation 132: of the two floating point values X and Y, both of type 133: `REAL_VALUE_TYPE' in the target machine's representation, to 134: produce a result of the same type and representation which is 135: stored in OUTPUT (which will be a variable). 136: 137: The operation to be performed is specified by CODE, a tree code 138: which will always be one of the following: `PLUS_EXPR', 139: `MINUS_EXPR', `MULT_EXPR', `RDIV_EXPR', `MAX_EXPR', `MIN_EXPR'. 140: 141: The expansion of this macro is responsible for checking for 142: overflow. If overflow happens, the macro expansion should execute 143: the statement `return 0;', which indicates the inability to 144: perform the arithmetic operation requested. 145: 146: `REAL_VALUE_NEGATE (X)' 147: A macro for a C expression which returns the negative of the 148: floating point value X. Both X and the value of the expression 149: have type `REAL_VALUE_TYPE' and are in the target machine's 150: floating point representation. 151: 152: There is no way for this macro to report overflow, since overflow 153: can't happen in the negation operation. 154: 155: `REAL_VALUE_TRUNCATE (MODE, X)' 156: A macro for a C expression which converts the floating point value 157: X to mode MODE. 158: 159: Both X and the value of the expression are in the target machine's 160: floating point representation and have type `REAL_VALUE_TYPE'. 161: However, the value should have an appropriate bit pattern to be 162: output properly as a floating constant whose precision accords 163: with mode MODE. 164: 165: There is no way for this macro to report overflow. 166: 167: `REAL_VALUE_TO_INT (LOW, HIGH, X)' 168: A macro for a C expression which converts a floating point value X 169: into a double-precision integer which is then stored into LOW and 170: HIGH, two variables of type INT. 171: 172: `REAL_VALUE_FROM_INT (X, LOW, HIGH)' 173: A macro for a C expression which converts a double-precision 174: integer found in LOW and HIGH, two variables of type INT, into a 175: floating point value which is then stored into X. 176: 177: 178: File: gcc.info, Node: Misc, Prev: Cross-compilation, Up: Target Macros 179: 180: Miscellaneous Parameters 181: ======================== 182: 183: Here are several miscellaneous parameters. 184: 185: `PREDICATE_CODES' 186: Define this if you have defined special-purpose predicates in the 187: file `MACHINE.c'. This macro is called within an initializer of an 188: array of structures. The first field in the structure is the name 189: of a predicate and the second field is an array of rtl codes. For 190: each predicate, list all rtl codes that can be in expressions 191: matched by the predicate. The list should have a trailing comma. 192: Here is an example of two entries in the list for a typical RISC 193: machine: 194: 195: #define PREDICATE_CODES \ 196: {"gen_reg_rtx_operand", {SUBREG, REG}}, \ 197: {"reg_or_short_cint_operand", {SUBREG, REG, CONST_INT}}, 198: 199: Defining this macro does not affect the generated code (however, 200: incorrect definitions that omit an rtl code that may be matched by 201: the predicate can cause the compiler to malfunction). Instead, it 202: allows the table built by `genrecog' to be more compact and 203: efficient, thus speeding up the compiler. The most important 204: predicates to include in the list specified by this macro are 205: thoses used in the most insn patterns. 206: 207: `CASE_VECTOR_MODE' 208: An alias for a machine mode name. This is the machine mode that 209: elements of a jump-table should have. 210: 211: `CASE_VECTOR_PC_RELATIVE' 212: Define this macro if jump-tables should contain relative addresses. 213: 214: `CASE_DROPS_THROUGH' 215: Define this if control falls through a `case' insn when the index 216: value is out of range. This means the specified default-label is 217: actually ignored by the `case' insn proper. 218: 219: `CASE_VALUES_THRESHOLD' 220: Define this to be the smallest number of different values for 221: which it is best to use a jump-table instead of a tree of 222: conditional branches. The default is four for machines with a 223: `casesi' instruction and five otherwise. This is best for most 224: machines. 225: 226: `WORD_REGISTER_OPERATIONS' 227: Define this macro if operations between registers with integral 228: mode smaller than a word are always performed on the entire 229: register. Most RISC machines have this property and most CISC 230: machines do not. 231: 232: `LOAD_EXTEND_OP (MODE)' 233: Define this macro to be a C expression indicating when insns that 234: read memory in MODE, an integral mode narrower than a word, set the 235: bits outside of MODE to be either the sign-extension or the 236: zero-extension of the data read. Return `SIGN_EXTEND' for values 237: of MODE for which the insn sign-extends, `ZERO_EXTEND' for which 238: it zero-extends, and `NIL' for other modes. 239: 240: This macro is not called with MODE non-integral or with a width 241: greater than or equal to `BITS_PER_WORD', so you may return any 242: value in this case. Do not define this macro if it would always 243: return `NIL'. On machines where this macro is defined, you will 244: normally define it as the constant `SIGN_EXTEND' or `ZERO_EXTEND'. 245: 246: `IMPLICIT_FIX_EXPR' 247: An alias for a tree code that should be used by default for 248: conversion of floating point values to fixed point. Normally, 249: `FIX_ROUND_EXPR' is used. 250: 251: `FIXUNS_TRUNC_LIKE_FIX_TRUNC' 252: Define this macro if the same instructions that convert a floating 253: point number to a signed fixed point number also convert validly 254: to an unsigned one. 255: 256: `EASY_DIV_EXPR' 257: An alias for a tree code that is the easiest kind of division to 258: compile code for in the general case. It may be `TRUNC_DIV_EXPR', 259: `FLOOR_DIV_EXPR', `CEIL_DIV_EXPR' or `ROUND_DIV_EXPR'. These four 260: division operators differ in how they round the result to an 261: integer. `EASY_DIV_EXPR' is used when it is permissible to use 262: any of those kinds of division and the choice should be made on 263: the basis of efficiency. 264: 265: `MOVE_MAX' 266: The maximum number of bytes that a single instruction can move 267: quickly from memory to memory. 268: 269: `MAX_MOVE_MAX' 270: The maximum number of bytes that a single instruction can move 271: quickly from memory to memory. If this is undefined, the default 272: is `MOVE_MAX'. Otherwise, it is the constant value that is the 273: largest value that `MOVE_MAX' can have at run-time. 274: 275: `SHIFT_COUNT_TRUNCATED' 276: A C expression that is nonzero if on this machine the number of 277: bits actually used for the count of a shift operation is equal to 278: the number of bits needed to represent the size of the object 279: being shifted. When this macro is non-zero, the compiler will 280: assume that it is safe to omit a sign-extend, zero-extend, and 281: certain bitwise `and' instructions that truncates the count of a 282: shift operation. On machines that have instructions that act on 283: bitfields at variable positions, which may include `bit test' 284: instructions, a nonzero `SHIFT_COUNT_TRUNCATED' also enables 285: deletion of truncations of the values that serve as arguments to 286: bitfield instructions. 287: 288: If both types of instructions truncate the count (for shifts) and 289: position (for bitfield operations), or if no variable-position 290: bitfield instructions exist, you should define this macro. 291: 292: However, on some machines, such as the 80386 and the 680x0, 293: truncation only applies to shift operations and not the (real or 294: pretended) bitfield operations. Define `SHIFT_COUNT_TRUNCATED' to 295: be zero on such machines. Instead, add patterns to the `md' file 296: that include the implied truncation of the shift instructions. 297: 298: You need not define this macro if it would always have the value 299: of zero. 300: 301: `TRULY_NOOP_TRUNCATION (OUTPREC, INPREC)' 302: A C expression which is nonzero if on this machine it is safe to 303: "convert" an integer of INPREC bits to one of OUTPREC bits (where 304: OUTPREC is smaller than INPREC) by merely operating on it as if it 305: had only OUTPREC bits. 306: 307: On many machines, this expression can be 1. 308: 309: When `TRULY_NOOP_TRUNCATION' returns 1 for a pair of sizes for 310: modes for which `MODES_TIEABLE_P' is 0, suboptimal code can result. 311: If this is the case, making `TRULY_NOOP_TRUNCATION' return 0 in 312: such cases may improve things. 313: 314: `STORE_FLAG_VALUE' 315: A C expression describing the value returned by a comparison 316: operator with an integral mode and stored by a store-flag 317: instruction (`sCOND') when the condition is true. This 318: description must apply to *all* the `sCOND' patterns and all the 319: comparison operators whose results have a `MODE_INT' mode. 320: 321: A value of 1 or -1 means that the instruction implementing the 322: comparison operator returns exactly 1 or -1 when the comparison is 323: true and 0 when the comparison is false. Otherwise, the value 324: indicates which bits of the result are guaranteed to be 1 when the 325: comparison is true. This value is interpreted in the mode of the 326: comparison operation, which is given by the mode of the first 327: operand in the `sCOND' pattern. Either the low bit or the sign 328: bit of `STORE_FLAG_VALUE' be on. Presently, only those bits are 329: used by the compiler. 330: 331: If `STORE_FLAG_VALUE' is neither 1 or -1, the compiler will 332: generate code that depends only on the specified bits. It can also 333: replace comparison operators with equivalent operations if they 334: cause the required bits to be set, even if the remaining bits are 335: undefined. For example, on a machine whose comparison operators 336: return an `SImode' value and where `STORE_FLAG_VALUE' is defined as 337: `0x80000000', saying that just the sign bit is relevant, the 338: expression 339: 340: (ne:SI (and:SI X (const_int POWER-OF-2)) (const_int 0)) 341: 342: can be converted to 343: 344: (ashift:SI X (const_int N)) 345: 346: where N is the appropriate shift count to move the bit being 347: tested into the sign bit. 348: 349: There is no way to describe a machine that always sets the 350: low-order bit for a true value, but does not guarantee the value 351: of any other bits, but we do not know of any machine that has such 352: an instruction. If you are trying to port GNU CC to such a 353: machine, include an instruction to perform a logical-and of the 354: result with 1 in the pattern for the comparison operators and let 355: us know (*note How to Report Bugs: Bug Reporting.). 356: 357: Often, a machine will have multiple instructions that obtain a 358: value from a comparison (or the condition codes). Here are rules 359: to guide the choice of value for `STORE_FLAG_VALUE', and hence the 360: instructions to be used: 361: 362: * Use the shortest sequence that yields a valid definition for 363: `STORE_FLAG_VALUE'. It is more efficient for the compiler to 364: "normalize" the value (convert it to, e.g., 1 or 0) than for 365: the comparison operators to do so because there may be 366: opportunities to combine the normalization with other 367: operations. 368: 369: * For equal-length sequences, use a value of 1 or -1, with -1 370: being slightly preferred on machines with expensive jumps and 371: 1 preferred on other machines. 372: 373: * As a second choice, choose a value of `0x80000001' if 374: instructions exist that set both the sign and low-order bits 375: but do not define the others. 376: 377: * Otherwise, use a value of `0x80000000'. 378: 379: Many machines can produce both the value chosen for 380: `STORE_FLAG_VALUE' and its negation in the same number of 381: instructions. On those machines, you should also define a pattern 382: for those cases, e.g., one matching 383: 384: (set A (neg:M (ne:M B C))) 385: 386: Some machines can also perform `and' or `plus' operations on 387: condition code values with less instructions than the corresponding 388: `sCOND' insn followed by `and' or `plus'. On those machines, 389: define the appropriate patterns. Use the names `incscc' and 390: `decscc', respectively, for the the patterns which perform `plus' 391: or `minus' operations on condition code values. See `rs6000.md' 392: for some examples. The GNU Superoptizer can be used to find such 393: instruction sequences on other machines. 394: 395: You need not define `STORE_FLAG_VALUE' if the machine has no 396: store-flag instructions. 397: 398: `FLOAT_STORE_FLAG_VALUE' 399: A C expression that gives a non-zero floating point value that is 400: returned when comparison operators with floating-point results are 401: true. Define this macro on machine that have comparison 402: operations that return floating-point values. If there are no 403: such operations, do not define this macro. 404: 405: `Pmode' 406: An alias for the machine mode for pointers. On most machines, 407: define this to be the integer mode corresponding to the width of a 408: hardware pointer; `SImode' on 32-bit machine or `DImode' on 64-bit 409: machines. On some machines you must define this to be one of the 410: partial integer modes, such as `PSImode'. 411: 412: The width of `Pmode' must be at least as large as the value of 413: `POINTER_SIZE'. If it is not equal, you must define the macro 414: `POINTERS_EXTEND_UNSIGNED' to specify how pointers are extended to 415: `Pmode'. 416: 417: `FUNCTION_MODE' 418: An alias for the machine mode used for memory references to 419: functions being called, in `call' RTL expressions. On most 420: machines this should be `QImode'. 421: 422: `INTEGRATE_THRESHOLD (DECL)' 423: A C expression for the maximum number of instructions above which 424: the function DECL should not be inlined. DECL is a 425: `FUNCTION_DECL' node. 426: 427: The default definition of this macro is 64 plus 8 times the number 428: of arguments that the function accepts. Some people think a larger 429: threshold should be used on RISC machines. 430: 431: `SCCS_DIRECTIVE' 432: Define this if the preprocessor should ignore `#sccs' directives 433: and print no error message. 434: 435: `NO_IMPLICIT_EXTERN_C' 436: Define this macro if the system header files support C++ as well 437: as C. This macro inhibits the usual method of using system header 438: files in C++, which is to pretend that the file's contents are 439: enclosed in `extern "C" {...}'. 440: 441: `HANDLE_PRAGMA (STREAM)' 442: Define this macro if you want to implement any pragmas. If 443: defined, it should be a C statement to be executed when `#pragma' 444: is seen. The argument STREAM is the stdio input stream from which 445: the source text can be read. 446: 447: It is generally a bad idea to implement new uses of `#pragma'. The 448: only reason to define this macro is for compatibility with other 449: compilers that do support `#pragma' for the sake of any user 450: programs which already use it. 451: 452: `VALID_MACHINE_DECL_ATTRIBUTE (DECL, ATTRIBUTES, IDENTIFIER, ARGS)' 453: If defined, a C expression whose value is nonzero if IDENTIFIER 454: with arguments ARGS is a valid machine specific attribute for DECL. 455: The attributes in ATTRIBUTES have previously been assigned to DECL. 456: 457: `VALID_MACHINE_TYPE_ATTRIBUTE (TYPE, ATTRIBUTES, IDENTIFIER, ARGS)' 458: If defined, a C expression whose value is nonzero if IDENTIFIER 459: with arguments ARGS is a valid machine specific attribute for TYPE. 460: The attributes in ATTRIBUTES have previously been assigned to TYPE. 461: 462: `COMP_TYPE_ATTRIBUTES (TYPE1, TYPE2)' 463: If defined, a C expression whose value is zero if the attributes on 464: TYPE1 and TYPE2 are incompatible, one if they are compatible, and 465: two if they are nearly compatible (which causes a warning to be 466: generated). 467: 468: `SET_DEFAULT_TYPE_ATTRIBUTES (TYPE)' 469: If defined, a C statement that assigns default attributes to newly 470: defined TYPE. 471: 472: `DOLLARS_IN_IDENTIFIERS' 473: Define this macro to control use of the character `$' in identifier 474: names. The value should be 0, 1, or 2. 0 means `$' is not allowed 475: by default; 1 means it is allowed by default if `-traditional' is 476: used; 2 means it is allowed by default provided `-ansi' is not 477: used. 1 is the default; there is no need to define this macro in 478: that case. 479: 480: `NO_DOLLAR_IN_LABEL' 481: Define this macro if the assembler does not accept the character 482: `$' in label names. By default constructors and destructors in 483: G++ have `$' in the identifiers. If this macro is defined, `.' is 484: used instead. 485: 486: `NO_DOT_IN_LABEL' 487: Define this macro if the assembler does not accept the character 488: `.' in label names. By default constructors and destructors in G++ 489: have names that use `.'. If this macro is defined, these names 490: are rewritten to avoid `.'. 491: 492: `DEFAULT_MAIN_RETURN' 493: Define this macro if the target system expects every program's 494: `main' function to return a standard "success" value by default 495: (if no other value is explicitly returned). 496: 497: The definition should be a C statement (sans semicolon) to 498: generate the appropriate rtl instructions. It is used only when 499: compiling the end of `main'. 500: 501: `HAVE_ATEXIT' 502: Define this if the target system supports the function `atexit' 503: from the ANSI C standard. If this is not defined, and 504: `INIT_SECTION_ASM_OP' is not defined, a default `exit' function 505: will be provided to support C++. 506: 507: `EXIT_BODY' 508: Define this if your `exit' function needs to do something besides 509: calling an external function `_cleanup' before terminating with 510: `_exit'. The `EXIT_BODY' macro is only needed if netiher 511: `HAVE_ATEXIT' nor `INIT_SECTION_ASM_OP' are defined. 512: 513: `INSN_SETS_ARE_DELAYED (INSN)' 514: Define this macro as a C expression that is nonzero if it is safe 515: for the delay slot scheduler to place instructions in the delay 516: slot of INSN, even if they appear to use a resource set or 517: clobbered in INSN. INSN is always a `jump_insn' or an `insn'; GNU 518: CC knows that every `call_insn' has this behavior. On machines 519: where some `insn' or `jump_insn' is really a function call and 520: hence has this behavior, you should define this macro. 521: 522: You need not define this macro if it would always return zero. 523: 524: `INSN_REFERENCES_ARE_DELAYED (INSN)' 525: Define this macro as a C expression that is nonzero if it is safe 526: for the delay slot scheduler to place instructions in the delay 527: slot of INSN, even if they appear to set or clobber a resource 528: referenced in INSN. INSN is always a `jump_insn' or an `insn'. 529: On machines where some `insn' or `jump_insn' is really a function 530: call and its operands are registers whose use is actually in the 531: subroutine it calls, you should define this macro. Doing so 532: allows the delay slot scheduler to move instructions which copy 533: arguments into the argument registers into the delay slot of INSN. 534: 535: You need not define this macro if it would always return zero. 536: 537: `MACHINE_DEPENDENT_REORG (INSN)' 538: In rare cases, correct code generation requires extra machine 539: dependent processing between the second jump optimization pass and 540: delayed branch scheduling. On those machines, define this macro 541: as a C statement to act on the code starting at INSN. 542: 543: 544: File: gcc.info, Node: Config, Next: Fragments, Prev: Target Macros, Up: Top 545: 546: The Configuration File 547: ********************** 548: 549: The configuration file `xm-MACHINE.h' contains macro definitions 550: that describe the machine and system on which the compiler is running, 551: unlike the definitions in `MACHINE.h', which describe the machine for 552: which the compiler is producing output. Most of the values in 553: `xm-MACHINE.h' are actually the same on all machines that GNU CC runs 554: on, so large parts of all configuration files are identical. But there 555: are some macros that vary: 556: 557: `USG' 558: Define this macro if the host system is System V. 559: 560: `VMS' 561: Define this macro if the host system is VMS. 562: 563: `FATAL_EXIT_CODE' 564: A C expression for the status code to be returned when the compiler 565: exits after serious errors. 566: 567: `SUCCESS_EXIT_CODE' 568: A C expression for the status code to be returned when the compiler 569: exits without serious errors. 570: 571: `HOST_WORDS_BIG_ENDIAN' 572: Defined if the host machine stores words of multi-word values in 573: big-endian order. (GNU CC does not depend on the host byte 574: ordering within a word.) 575: 576: `HOST_FLOAT_WORDS_BIG_ENDIAN' 577: Define this macro to be 1 if the host machine stores `DFmode', 578: `XFmode' or `TFmode' floating point numbers in memory with the 579: word containing the sign bit at the lowest address; otherwise, 580: define it to be zero. 581: 582: This macro need not be defined if the ordering is the same as for 583: multi-word integers. 584: 585: `HOST_FLOAT_FORMAT' 586: A numeric code distinguishing the floating point format for the 587: host machine. See `TARGET_FLOAT_FORMAT' in *Note Storage Layout:: 588: for the alternatives and default. 589: 590: `HOST_BITS_PER_CHAR' 591: A C expression for the number of bits in `char' on the host 592: machine. 593: 594: `HOST_BITS_PER_SHORT' 595: A C expression for the number of bits in `short' on the host 596: machine. 597: 598: `HOST_BITS_PER_INT' 599: A C expression for the number of bits in `int' on the host machine. 600: 601: `HOST_BITS_PER_LONG' 602: A C expression for the number of bits in `long' on the host 603: machine. 604: 605: `ONLY_INT_FIELDS' 606: Define this macro to indicate that the host compiler only supports 607: `int' bit fields, rather than other integral types, including 608: `enum', as do most C compilers. 609: 610: `OBSTACK_CHUNK_SIZE' 611: A C expression for the size of ordinary obstack chunks. If you 612: don't define this, a usually-reasonable default is used. 613: 614: `OBSTACK_CHUNK_ALLOC' 615: The function used to allocate obstack chunks. If you don't define 616: this, `xmalloc' is used. 617: 618: `OBSTACK_CHUNK_FREE' 619: The function used to free obstack chunks. If you don't define 620: this, `free' is used. 621: 622: `USE_C_ALLOCA' 623: Define this macro to indicate that the compiler is running with the 624: `alloca' implemented in C. This version of `alloca' can be found 625: in the file `alloca.c'; to use it, you must also alter the 626: `Makefile' variable `ALLOCA'. (This is done automatically for the 627: systems on which we know it is needed.) 628: 629: If you do define this macro, you should probably do it as follows: 630: 631: #ifndef __GNUC__ 632: #define USE_C_ALLOCA 633: #else 634: #define alloca __builtin_alloca 635: #endif 636: 637: so that when the compiler is compiled with GNU CC it uses the more 638: efficient built-in `alloca' function. 639: 640: `FUNCTION_CONVERSION_BUG' 641: Define this macro to indicate that the host compiler does not 642: properly handle converting a function value to a 643: pointer-to-function when it is used in an expression. 644: 645: `HAVE_VPRINTF' 646: Define this if the library function `vprintf' is available on your 647: system. 648: 649: `MULTIBYTE_CHARS' 650: Define this macro to enable support for multibyte characters in the 651: input to GNU CC. This requires that the host system support the 652: ANSI C library functions for converting multibyte characters to 653: wide characters. 654: 655: `HAVE_PUTENV' 656: Define this if the library function `putenv' is available on your 657: system. 658: 659: `POSIX' 660: Define this if your system is POSIX.1 compliant. 661: 662: `NO_SYS_SIGLIST' 663: Define this if your system *does not* provide the variable 664: `sys_siglist'. 665: 666: `DONT_DECLARE_SYS_SIGLIST' 667: Define this if your system has the variable `sys_siglist', and 668: there is already a declaration of it in the system header files. 669: 670: `USE_PROTOTYPES' 671: Define this to be 1 if you know that the host compiler supports 672: prototypes, even if it doesn't define __STDC__, or define it to be 673: 0 if you do not want any prototypes used in compiling GNU CC. If 674: `USE_PROTOTYPES' is not defined, it will be determined 675: automatically whether your compiler supports prototypes by 676: checking if `__STDC__' is defined. 677: 678: `NO_MD_PROTOTYPES' 679: Define this if you wish suppression of prototypes generated from 680: the machine description file, but to use other prototypes within 681: GNU CC. If `USE_PROTOTYPES' is defined to be 0, or the host 682: compiler does not support prototypes, this macro has no effect. 683: 684: `MD_CALL_PROTOTYPES' 685: Define this if you wish to generate prototypes for the `gen_call' 686: or `gen_call_value' functions generated from the machine 687: description file. If `USE_PROTOTYPES' is defined to be 0, or the 688: host compiler does not support prototypes, or `NO_MD_PROTOTYPES' 689: is defined, this macro has no effect. As soon as all of the 690: machine descriptions are modified to have the appropriate number 691: of arguments, this macro will be removed. 692: 693: Some systems do provide this variable, but with a different name 694: such as `_sys_siglist'. On these systems, you can define 695: `sys_siglist' as a macro which expands into the name actually 696: provided. 697: 698: `NO_STAB_H' 699: Define this if your system does not have the include file 700: `stab.h'. If `USG' is defined, `NO_STAB_H' is assumed. 701: 702: `PATH_SEPARATOR' 703: Define this macro to be a C character constant representing the 704: character used to separate components in paths. The default value 705: is. the colon character 706: 707: `DIR_SEPARATOR' 708: If your system uses some character other than slash to separate 709: directory names within a file specification, define this macro to 710: be a C character constant specifying that character. When GNU CC 711: displays file names, the character you specify will be used. GNU 712: CC will test for both slash and the character you specify when 713: parsing filenames. 714: 715: `OBJECT_SUFFIX' 716: Define this macro to be a C string representing the suffix for 717: object files on your machine. If you do not define this macro, 718: GNU CC will use `.o' as the suffix for object files. 719: 720: `EXECUTABLE_SUFFIX' 721: Define this macro to be a C string representing the suffix for 722: executable files on your machine. If you do not define this 723: macro, GNU CC will use the null string as the suffix for object 724: files. 725: 726: `COLLECT_EXPORT_LIST' 727: If defined, `collect2' will scan the individual object files 728: specified on its command line and create an export list for the 729: linker. Define this macro for systems like AIX, where the linker 730: discards object files that are not referenced from `main' and uses 731: export lists. 732: 733: In addition, configuration files for system V define `bcopy', 734: `bzero' and `bcmp' as aliases. Some files define `alloca' as a macro 735: when compiled with GNU CC, in order to take advantage of the benefit of 736: GNU CC's built-in `alloca'. 737: 738: 739: File: gcc.info, Node: Fragments, Next: Index, Prev: Config, Up: Top 740: 741: Makefile Fragments 742: ****************** 743: 744: When you configure GNU CC using the `configure' script (*note 745: Installation::.), it will construct the file `Makefile' from the 746: template file `Makefile.in'. When it does this, it will incorporate 747: makefile fragment files from the `config' directory, named `t-TARGET' 748: and `x-HOST'. If these files do not exist, it means nothing needs to 749: be added for a given target or host. 1.1 root 750: 751: * Menu: 752: 1.1.1.2 root 753: * Target Fragment:: Writing the `t-TARGET' file. 754: * Host Fragment:: Writing the `x-HOST' file. 755: 756: 757: File: gcc.info, Node: Target Fragment, Next: Host Fragment, Up: Fragments 758: 759: The Target Makefile Fragment 760: ============================ 761: 762: The target makefile fragment, `t-TARGET', defines special target 763: dependent variables and targets used in the `Makefile': 764: 765: `LIBGCC1' 766: The rule to use to build `libgcc1.a'. If your target does not 767: need to use the functions in `libgcc1.a', set this to empty. 768: *Note Interface::. 769: 770: `CROSS_LIBGCC1' 771: The rule to use to build `libgcc1.a' when building a cross 772: compiler. If your target does not need to use the functions in 773: `libgcc1.a', set this to empty. *Note Cross Runtime::. 774: 775: `LIBGCC2_CFLAGS' 776: Compiler flags to use when compiling `libgcc2.c'. 777: 778: `LIB2FUNCS_EXTRA' 779: A list of source file names to be compiled or assembled and 780: inserted into `libgcc.a'. 781: 782: `CRTSTUFF_T_CFLAGS' 783: Special flags used when compiling `crtstuff.c'. *Note 784: Initialization::. 785: 786: `MULTILIB_OPTIONS' 787: For some targets, invoking GNU CC in different ways produces 788: objects that can not be linked together. For example, for some 789: targets GNU CC produces both big and little endian code. For 790: these targets, you must arrange for multiple versions of 791: `libgcc.a' to be compiled, one for each set of incompatible 792: options. When GNU CC invokes the linker, it arranges to link in 793: the right version of `libgcc.a', based on the command line options 794: used. 795: 796: The `MULTILIB_OPTIONS' macro lists the set of options for which 797: special versions of `libgcc.a' must be built. Write options that 798: are mutually incompatible side by side, separated by a slash. 799: Write options that may be used together separated by a space. The 800: build procedure will build all combinations of compatible options. 801: 802: For example, if you set `MULTILIB_OPTIONS' to `m68000/m68020 803: msoft-float', `Makefile' will build special versions of `libgcc.a' 804: using the options `-m68000', `-m68020', `-msoft-float', `-m68000 805: -msoft-float', and `-m68020 -msoft-float'. 806: 807: `MULTILIB_DIRNAMES' 808: If `MULTILIB_OPTIONS' is used, this variable specifies the 809: directory names that should be used to hold the various libraries. 810: Write one element in `MULTILIB_DIRNAMES' for each element in 811: `MULTILIB_OPTIONS'. If `MULTILIB_DIRNAMES' is not used, the 812: default value will be `MULTILIB_OPTIONS', with all slashes treated 813: as spaces. 814: 815: For example, if `MULTILIB_OPTIONS' is `m68000/m68020 msoft-float', 816: then the default value of `MULTILIB_DIRNAMES' is `m68000 m68020 817: msoft-float'. You may specify a different value if you desire a 818: different set of directory names. 819: 820: `MULTILIB_MATCHES' 821: Sometimes the same option may be written in two different ways. 822: If an option is listed in `MULTILIB_OPTIONS', GNU CC needs to know 823: about any synonyms. In that case, set `MULTILIB_MATCHES' to a 824: list of items of the form `option=option' to describe all relevant 825: synonyms. For example, `m68000=mc68000 m68020=mc68020'. 826: 827: 828: File: gcc.info, Node: Host Fragment, Prev: Target Fragment, Up: Fragments 829: 830: The Host Makefile Fragment 831: ========================== 832: 833: The host makefile fragment, `x-HOST', defines special host dependent 834: variables and targets used in the `Makefile': 835: 836: `CC' 837: The compiler to use when building the first stage. 838: 839: `CLIB' 840: Additional host libraries to link with. 841: 842: `OLDCC' 843: The compiler to use when building `libgcc1.a' for a native 844: compilation. 845: 846: `OLDAR' 847: The version of `ar' to use when building `libgcc1.a' for a native 848: compilation. 1.1 root 849: 1.1.1.2 root 850: `INSTALL' 851: The install program to use. 1.1 root 852:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.