|
|
1.1.1.4 ! root 1: This is Info file gcc.info, produced by Makeinfo-1.49 from the input 1.1 root 2: file gcc.texi. 3: 4: This file documents the use and the internals of the GNU compiler. 5: 6: Copyright (C) 1988, 1989, 1992 Free Software Foundation, Inc. 7: 1.1.1.3 root 8: Permission is granted to make and distribute verbatim copies of this 9: manual provided the copyright notice and this permission notice are 10: preserved on all copies. 1.1 root 11: 12: Permission is granted to copy and distribute modified versions of 13: this manual under the conditions for verbatim copying, provided also 1.1.1.4 ! root 14: that the sections entitled "GNU General Public License" and "Protect ! 15: Your Freedom--Fight `Look And Feel'" are included exactly as in the ! 16: original, and provided that the entire resulting derived work is ! 17: distributed under the terms of a permission notice identical to this ! 18: one. 1.1 root 19: 20: Permission is granted to copy and distribute translations of this 21: manual into another language, under the above conditions for modified 1.1.1.3 root 22: versions, except that the sections entitled "GNU General Public 1.1.1.4 ! root 23: License" and "Protect Your Freedom--Fight `Look And Feel'", and this ! 24: permission notice, may be included in translations approved by the Free ! 25: Software Foundation instead of in the original English. ! 26: ! 27: ! 28: File: gcc.info, Node: Link Options, Next: Directory Options, Prev: Assembler Options, Up: Invoking GCC ! 29: ! 30: Options for Linking ! 31: =================== ! 32: ! 33: These options come into play when the compiler links object files ! 34: into an executable output file. They are meaningless if the compiler is ! 35: not doing a link step. ! 36: ! 37: `OBJECT-FILE-NAME' ! 38: A file name that does not end in a special recognized suffix is ! 39: considered to name an object file or library. (Object files are ! 40: distinguished from libraries by the linker according to the file ! 41: contents.) If linking is done, these object files are used as ! 42: input to the linker. ! 43: ! 44: `-c' ! 45: `-S' ! 46: `-E' ! 47: If any of these options is used, then the linker is not run, and ! 48: object file names should not be used as arguments. *Note Overall ! 49: Options::. ! 50: ! 51: `-lLIBRARY' ! 52: Search the library named LIBRARY when linking. ! 53: ! 54: It makes a difference where in the command you write this option; ! 55: the linker searches processes libraries and object files in the ! 56: order they are specified. Thus, `foo.o -lz bar.o' searches ! 57: library `z' after file `foo.o' but before `bar.o'. If `bar.o' ! 58: refers to functions in `z', those functions may not be loaded. ! 59: ! 60: The linker searches a standard list of directories for the library, ! 61: which is actually a file named `libLIBRARY.a'. The linker then ! 62: uses this file as if it had been specified precisely by name. ! 63: ! 64: The directories searched include several standard system ! 65: directories plus any that you specify with `-L'. ! 66: ! 67: Normally the files found this way are library files--archive files ! 68: whose members are object files. The linker handles an archive ! 69: file by scanning through it for members which define symbols that ! 70: have so far been referenced but not defined. But if the file that ! 71: is found is an ordinary object file, it is linked in the usual ! 72: fashion. The only difference between using an `-l' option and ! 73: specifying a file name is that `-l' surrounds LIBRARY with `lib' ! 74: and `.a' and searches several directories. ! 75: ! 76: `-lobjc' ! 77: This special case of the `-l' option is what you need to do when ! 78: you link an Objective C program. ! 79: ! 80: `-nostdlib' ! 81: Don't use the standard system libraries and startup files when ! 82: linking. Only the files you specify will be passed to the linker. ! 83: ! 84: `-static' ! 85: On systems that support dynamic linking, this prevents linking ! 86: with the shared libraries. On other systems, this option has no ! 87: effect. ! 88: ! 89: `-shared' ! 90: Produce a shared object which can then be linked with other ! 91: objects to form an executable. Only a few systems support this ! 92: option. ! 93: ! 94: `-symbolic' ! 95: Bind references to global symbols when building a shared object. ! 96: Warn about any unresolved references (unless overridden by the ! 97: link editor option `-Xlinker -z -Xlinker defs'). Only a few ! 98: systems support this option. ! 99: ! 100: `-Xlinker OPTION' ! 101: Pass OPTION as an option to the linker. You can use this to ! 102: supply system-specific linker options which GNU CC does not know ! 103: how to recognize. ! 104: ! 105: If you want to pass an option that takes an argument, you must use ! 106: `-Xlinker' twice, once for the option and once for the argument. ! 107: For example, to pass `-assert definitions', you must write ! 108: `-Xlinker -assert -Xlinker definitions'. It does not work to write ! 109: `-Xlinker "-assert definitions"', because this passes the entire ! 110: string as a single argument, which is not what the linker expects. ! 111: ! 112: `-Wl,OPTION' ! 113: Pass OPTION as an option to the linker. If OPTION contains ! 114: commas, it is split into multiple options at the commas. ! 115: ! 116: `-u SYMBOL' ! 117: Pretend the symbol SYMBOL is undefined, to force linking of ! 118: library modules to define it. You can use `-u' multiple times with ! 119: different symbols to force loading of additional library modules. ! 120: ! 121: ! 122: File: gcc.info, Node: Directory Options, Next: Target Options, Prev: Link Options, Up: Invoking GCC ! 123: ! 124: Options for Directory Search ! 125: ============================ ! 126: ! 127: These options specify directories to search for header files, for ! 128: libraries and for parts of the compiler: ! 129: ! 130: `-IDIR' ! 131: Append directory DIR to the list of directories searched for ! 132: include files. ! 133: ! 134: `-I-' ! 135: Any directories you specify with `-I' options before the `-I-' ! 136: option are searched only for the case of `#include "FILE"'; they ! 137: are not searched for `#include <FILE>'. ! 138: ! 139: If additional directories are specified with `-I' options after ! 140: the `-I-', these directories are searched for all `#include' ! 141: directives. (Ordinarily *all* `-I' directories are used this way.) ! 142: ! 143: In addition, the `-I-' option inhibits the use of the current ! 144: directory (where the current input file came from) as the first ! 145: search directory for `#include "FILE"'. There is no way to ! 146: override this effect of `-I-'. With `-I.' you can specify ! 147: searching the directory which was current when the compiler was ! 148: invoked. That is not exactly the same as what the preprocessor ! 149: does by default, but it is often satisfactory. ! 150: ! 151: `-I-' does not inhibit the use of the standard system directories ! 152: for header files. Thus, `-I-' and `-nostdinc' are independent. ! 153: ! 154: `-LDIR' ! 155: Add directory DIR to the list of directories to be searched for ! 156: `-l'. ! 157: ! 158: `-BPREFIX' ! 159: This option specifies where to find the executables, libraries and ! 160: data files of the compiler itself. ! 161: ! 162: The compiler driver program runs one or more of the subprograms ! 163: `cpp', `cc1', `as' and `ld'. It tries PREFIX as a prefix for each ! 164: program it tries to run, both with and without `MACHINE/VERSION/' ! 165: (*note Target Options::.). ! 166: ! 167: For each subprogram to be run, the compiler driver first tries the ! 168: `-B' prefix, if any. If that name is not found, or if `-B' was ! 169: not specified, the driver tries two standard prefixes, which are ! 170: `/usr/lib/gcc/' and `/usr/local/lib/gcc-lib/'. If neither of ! 171: those results in a file name that is found, the unmodified program ! 172: name is searched for using the directories specified in your ! 173: `PATH' environment variable. ! 174: ! 175: `-B' prefixes that effectively specify directory names also apply ! 176: to libraries in the linker, because the compiler translates these ! 177: options into `-L' options for the linker. ! 178: ! 179: The run-time support file `libgcc.a' can also be searched for using ! 180: the `-B' prefix, if needed. If it is not found there, the two ! 181: standard prefixes above are tried, and that is all. The file is ! 182: left out of the link if it is not found by those means. ! 183: ! 184: Another way to specify a prefix much like the `-B' prefix is to use ! 185: the environment variable `GCC_EXEC_PREFIX'. *Note Environment ! 186: Variables::. ! 187: ! 188: ! 189: File: gcc.info, Node: Target Options, Next: Submodel Options, Prev: Directory Options, Up: Invoking GCC ! 190: ! 191: Specifying Target Machine and Compiler Version ! 192: ============================================== ! 193: ! 194: By default, GNU CC compiles code for the same type of machine that ! 195: you are using. However, it can also be installed as a cross-compiler, ! 196: to compile for some other type of machine. In fact, several different ! 197: configurations of GNU CC, for different target machines, can be ! 198: installed side by side. Then you specify which one to use with the ! 199: `-b' option. ! 200: ! 201: In addition, older and newer versions of GNU CC can be installed side ! 202: by side. One of them (probably the newest) will be the default, but ! 203: you may sometimes wish to use another. ! 204: ! 205: `-b MACHINE' ! 206: The argument MACHINE specifies the target machine for compilation. ! 207: This is useful when you have installed GNU CC as a cross-compiler. ! 208: ! 209: The value to use for MACHINE is the same as was specified as the ! 210: machine type when configuring GNU CC as a cross-compiler. For ! 211: example, if a cross-compiler was configured with `configure ! 212: i386v', meaning to compile for an 80386 running System V, then you ! 213: would specify `-b i386v' to run that cross compiler. ! 214: ! 215: When you do not specify `-b', it normally means to compile for the ! 216: same type of machine that you are using. ! 217: ! 218: `-V VERSION' ! 219: The argument VERSION specifies which version of GNU CC to run. ! 220: This is useful when multiple versions are installed. For example, ! 221: VERSION might be `2.0', meaning to run GNU CC version 2.0. ! 222: ! 223: The default version, when you do not specify `-V', is controlled ! 224: by the way GNU CC is installed. Normally, it will be a version ! 225: that is recommended for general use. ! 226: ! 227: The `-b' and `-V' options actually work by controlling part of the ! 228: file name used for the executable files and libraries used for ! 229: compilation. A given version of GNU CC, for a given target machine, is ! 230: normally kept in the directory `/usr/local/lib/gcc-lib/MACHINE/VERSION'. ! 231: ! 232: It follows that sites can customize the effect of `-b' or `-V' ! 233: either by changing the names of these directories or adding alternate ! 234: names (or symbolic links). Thus, if `/usr/local/lib/gcc-lib/80386' is ! 235: a link to `/usr/local/lib/gcc-lib/i386v', then `-b 80386' becomes an ! 236: alias for `-b i386v'. ! 237: ! 238: In one respect, the `-b' or `-V' do not completely change to a ! 239: different compiler: the top-level driver program `gcc' that you ! 240: originally invoked continues to run and invoke the other executables ! 241: (preprocessor, compiler per se, assembler and linker) that do the real ! 242: work. However, since no real work is done in the driver program, it ! 243: usually does not matter that the driver program in use is not the one ! 244: for the specified target and version. ! 245: ! 246: The only way that the driver program depends on the target machine is ! 247: in the parsing and handling of special machine-specific options. ! 248: However, this is controlled by a file which is found, along with the ! 249: other executables, in the directory for the specified version and ! 250: target machine. As a result, a single installed driver program adapts ! 251: to any specified target machine and compiler version. ! 252: ! 253: The driver program executable does control one significant thing, ! 254: however: the default version and target machine. Therefore, you can ! 255: install different instances of the driver program, compiled for ! 256: different targets or versions, under different names. ! 257: ! 258: For example, if the driver for version 2.0 is installed as `ogcc' ! 259: and that for version 2.1 is installed as `gcc', then the command `gcc' ! 260: will use version 2.1 by default, while `ogcc' will use 2.0 by default. ! 261: However, you can choose either version with either command with the ! 262: `-V' option. ! 263: ! 264: ! 265: File: gcc.info, Node: Submodel Options, Next: Code Gen Options, Prev: Target Options, Up: Invoking GCC ! 266: ! 267: Specifying Hardware Models and Configurations ! 268: ============================================= ! 269: ! 270: Earlier we discussed the standard option `-b' which chooses among ! 271: different installed compilers for completely different target machines, ! 272: such as Vax vs. 68000 vs. 80386. ! 273: ! 274: In addition, each of these target machine types can have its own ! 275: special options, starting with `-m', to choose among various hardware ! 276: models or configurations--for example, 68010 vs 68020, floating ! 277: coprocessor or none. A single installed version of the compiler can ! 278: compile for any model or configuration, according to the options ! 279: specified. ! 280: ! 281: Some configurations of the compiler also support additional special ! 282: options, usually for compatibility with other compilers on the same ! 283: platform. ! 284: ! 285: These options are defined by the macro `TARGET_SWITCHES' in the ! 286: machine description. The default for the options is also defined by ! 287: that macro, which enables you to change the defaults. ! 288: ! 289: * Menu: ! 290: ! 291: * M680x0 Options:: ! 292: * VAX Options:: ! 293: * SPARC Options:: ! 294: * Convex Options:: ! 295: * AMD29K Options:: ! 296: * M88K Options:: ! 297: * RS/6000 Options:: ! 298: * RT Options:: ! 299: * MIPS Options:: ! 300: * i386 Options:: ! 301: * HPPA Options:: ! 302: * Intel 960 Options:: ! 303: * DEC Alpha Options:: ! 304: * System V Options:: ! 305: ! 306: ! 307: File: gcc.info, Node: M680x0 Options, Next: VAX Options, Up: Submodel Options ! 308: ! 309: M680x0 Options ! 310: -------------- ! 311: ! 312: These are the `-m' options defined for the 68000 series. The default ! 313: values for these options depends on which style of 68000 was selected ! 314: when the compiler was configured; the defaults for the most common ! 315: choices are given below. ! 316: ! 317: `-m68000' ! 318: `-mc68000' ! 319: Generate output for a 68000. This is the default when the ! 320: compiler is configured for 68000-based systems. ! 321: ! 322: `-m68020' ! 323: `-mc68020' ! 324: Generate output for a 68020. This is the default when the ! 325: compiler is configured for 68020-based systems. ! 326: ! 327: `-m68881' ! 328: Generate output containing 68881 instructions for floating point. ! 329: This is the default for most 68020 systems unless `-nfp' was ! 330: specified when the compiler was configured. ! 331: ! 332: `-m68030' ! 333: Generate output for a 68030. This is the default when the ! 334: compiler is configured for 68030-based systems. ! 335: ! 336: `-m68040' ! 337: Generate output for a 68040. This is the default when the ! 338: compiler is configured for 68040-based systems. ! 339: ! 340: `-m68020-40' ! 341: Generate output for a 68040, without using any of the new ! 342: instructions. This results in code which can run relatively ! 343: efficiently on either a 68020/68881 or a 68030 or a 68040. ! 344: ! 345: `-mfpa' ! 346: Generate output containing Sun FPA instructions for floating point. ! 347: ! 348: `-msoft-float' ! 349: Generate output containing library calls for floating point. ! 350: *Warning:* the requisite libraries are not part of GNU CC. ! 351: Normally the facilities of the machine's usual C compiler are ! 352: used, but this can't be done directly in cross-compilation. You ! 353: must make your own arrangements to provide suitable library ! 354: functions for cross-compilation. ! 355: ! 356: `-mshort' ! 357: Consider type `int' to be 16 bits wide, like `short int'. ! 358: ! 359: `-mnobitfield' ! 360: Do not use the bit-field instructions. `-m68000' implies ! 361: `-mnobitfield'. ! 362: ! 363: `-mbitfield' ! 364: Do use the bit-field instructions. `-m68020' implies ! 365: `-mbitfield'. This is the default if you use the unmodified ! 366: sources configured for a 68020. ! 367: ! 368: `-mrtd' ! 369: Use a different function-calling convention, in which functions ! 370: that take a fixed number of arguments return with the `rtd' ! 371: instruction, which pops their arguments while returning. This ! 372: saves one instruction in the caller since there is no need to pop ! 373: the arguments there. ! 374: ! 375: This calling convention is incompatible with the one normally used ! 376: on Unix, so you cannot use it if you need to call libraries ! 377: compiled with the Unix compiler. ! 378: ! 379: Also, you must provide function prototypes for all functions that ! 380: take variable numbers of arguments (including `printf'); otherwise ! 381: incorrect code will be generated for calls to those functions. ! 382: ! 383: In addition, seriously incorrect code will result if you call a ! 384: function with too many arguments. (Normally, extra arguments are ! 385: harmlessly ignored.) ! 386: ! 387: The `rtd' instruction is supported by the 68010 and 68020 ! 388: processors, but not by the 68000. ! 389: ! 390: ! 391: File: gcc.info, Node: VAX Options, Next: SPARC Options, Prev: M680x0 Options, Up: Submodel Options ! 392: ! 393: VAX Options ! 394: ----------- ! 395: ! 396: These `-m' options are defined for the Vax: ! 397: ! 398: `-munix' ! 399: Do not output certain jump instructions (`aobleq' and so on) that ! 400: the Unix assembler for the Vax cannot handle across long ranges. ! 401: ! 402: `-mgnu' ! 403: Do output those jump instructions, on the assumption that you will ! 404: assemble with the GNU assembler. ! 405: ! 406: `-mg' ! 407: Output code for g-format floating point numbers instead of ! 408: d-format. ! 409: ! 410: ! 411: File: gcc.info, Node: Sparc Options, Next: Convex Options, Prev: VAX Options, Up: Submodel Options ! 412: ! 413: SPARC Options ! 414: ------------- ! 415: ! 416: These `-m' switches are supported on the Sparc: ! 417: ! 418: `-mforce-align' ! 419: Make sure all objects of type `double' are 8-byte aligned in memory ! 420: and use double-word instructions to reference them. ! 421: ! 422: `-mno-epilogue' ! 423: Generate separate return instructions for `return' statements. ! 424: This has both advantages and disadvantages; I don't recall what ! 425: they are. ! 426: ! 427: ! 428: File: gcc.info, Node: Convex Options, Next: AMD29K Options, Prev: SPARC Options, Up: Submodel Options ! 429: ! 430: Convex Options ! 431: -------------- ! 432: ! 433: These `-m' options are defined for the Convex: ! 434: ! 435: `-mc1' ! 436: Generate output for a C1. This is the default when the compiler is ! 437: configured for a C1. ! 438: ! 439: `-mc2' ! 440: Generate output for a C2. This is the default when the compiler is ! 441: configured for a C2. ! 442: ! 443: `-margcount' ! 444: Generate code which puts an argument count in the word preceding ! 445: each argument list. Some nonportable Convex and Vax programs need ! 446: this word. (Debuggers don't, except for functions with ! 447: variable-length argument lists; this info is in the symbol table.) ! 448: ! 449: `-mnoargcount' ! 450: Omit the argument count word. This is the default if you use the ! 451: unmodified sources. ! 452: ! 453: ! 454: File: gcc.info, Node: AMD29K Options, Next: M88K Options, Prev: Convex Options, Up: Submodel Options ! 455: ! 456: AMD29K Options ! 457: -------------- ! 458: ! 459: These `-m' options are defined for the AMD Am29000: ! 460: ! 461: `-mdw' ! 462: Generate code that assumes the `DW' bit is set, i.e., that byte and ! 463: halfword operations are directly supported by the hardware. This ! 464: is the default. ! 465: ! 466: `-mnodw' ! 467: Generate code that assumes the `DW' bit is not set. ! 468: ! 469: `-mbw' ! 470: Generate code that assumes the system supports byte and halfword ! 471: write operations. This is the default. ! 472: ! 473: `-mnbw' ! 474: Generate code that assumes the systems does not support byte and ! 475: halfword write operations. `-mnbw' implies `-mnodw'. ! 476: ! 477: `-msmall' ! 478: Use a small memory model that assumes that all function addresses ! 479: are either within a single 256 KB segment or at an absolute ! 480: address of less than 256K. This allows the `call' instruction to ! 481: be used instead of a `const', `consth', `calli' sequence. ! 482: ! 483: `-mlarge' ! 484: Do not assume that the `call' instruction can be used; this is the ! 485: default. ! 486: ! 487: `-m29050' ! 488: Generate code for the Am29050. ! 489: ! 490: `-m29000' ! 491: Generate code for the Am29000. This is the default. ! 492: ! 493: `-mkernel-registers' ! 494: Generate references to registers `gr64-gr95' instead of ! 495: `gr96-gr127'. This option can be used when compiling kernel code ! 496: that wants a set of global registers disjoint from that used by ! 497: user-mode code. ! 498: ! 499: Note that when this option is used, register names in `-f' flags ! 500: must use the normal, user-mode, names. ! 501: ! 502: `-muser-registers' ! 503: Use the normal set of global registers, `gr96-gr127'. This is the ! 504: default. ! 505: ! 506: `-mstack-check' ! 507: Insert a call to `__msp_check' after each stack adjustment. This ! 508: is often used for kernel code. 1.1 root 509: 510: 511: File: gcc.info, Node: M88K Options, Next: RS/6000 Options, Prev: AMD29K Options, Up: Submodel Options 512: 513: M88K Options 514: ------------ 515: 516: These `-m' options are defined for Motorola 88K architectures: 517: 518: `-m88000' 519: Generate code that works well on both the m88100 and the m88110. 520: 521: `-m88100' 1.1.1.4 ! root 522: Generate code that works best for the m88100, but that also runs ! 523: on the m88110. 1.1 root 524: 525: `-m88110' 526: Generate code that works best for the m88110, and may not run on 527: the m88100. 528: 529: `-midentify-revision' 530: Include an `ident' directive in the assembler output recording the 531: source file name, compiler name and version, timestamp, and 532: compilation flags used. 533: 534: `-mno-underscores' 1.1.1.3 root 535: In assembler output, emit symbol names without adding an underscore 536: character at the beginning of each name. The default is to use an 537: underscore as prefix on each name. 1.1 root 538: 539: `-mocs-debug-info' 540: `-mno-ocs-debug-info' 541: Include (or omit) additional debugging information (about 542: registers used in each stack frame) as specified in the 88open 543: Object Compatibility Standard, "OCS". This extra information 544: allows debugging of code that has had the frame pointer 545: eliminated. The default for DG/UX, SVr4, and Delta 88 SVr3.2 is 546: to include this information; other 88k configurations omit this 547: information by default. 548: 549: `-mocs-frame-position' 550: When emitting COFF debugging information for automatic variables 551: and parameters stored on the stack, use the offset from the 552: canonical frame address, which is the stack pointer (register 31) 553: on entry to the function. The DG/UX, SVr4, Delta88 SVr3.2, and 554: BCS configurations use `-mocs-frame-position'; other 88k 555: configurations have the default `-mno-ocs-frame-position'. 556: 557: `-mno-ocs-frame-position' 558: When emitting COFF debugging information for automatic variables 559: and parameters stored on the stack, use the offset from the frame 560: pointer register (register 30). When this option is in effect, 561: the frame pointer is not eliminated when debugging information is 562: selected by the -g switch. 563: 564: `-moptimize-arg-area' 565: `-mno-optimize-arg-area' 1.1.1.3 root 566: Control how to store function arguments in stack frames. 1.1.1.4 ! root 567: `-moptimize-arg-area' saves space, but conflicts with the 88open ! 568: specifications. `-mno-optimize-arg-area' conforms to the 88open ! 569: standards. By default GNU CC does not optimize the argument area. 1.1 root 570: 571: `-mshort-data-NUM' 572: Generate smaller data references by making them relative to `r0', 573: which allows loading a value using a single instruction (rather 574: than the usual two). You control which data references are 575: affected by specifying NUM with this option. For example, if you 576: specify `-mshort-data-512', then the data references affected are 1.1.1.3 root 577: those involving displacements of less than 512 bytes. 1.1 root 578: `-mshort-data-NUM' is not effective for NUM greater than 64K. 579: 1.1.1.4 ! root 580: `-mserialize-volatile' ! 581: `-mno-serialize-volatile' ! 582: Do, or don't, generate code to guarantee sequential consistency of ! 583: volatile memory references. ! 584: ! 585: GNU CC always guarantees consistency by default, for the preferred ! 586: processor submodel. How this is done depends on the submodel. ! 587: ! 588: The m88100 processor does not reorder memory references and so ! 589: always provides sequential consistency. If you use `-m88100', GNU ! 590: CC does not generate any special instructions for sequential ! 591: consistency. ! 592: ! 593: The order of memory references made by the m88110 processor does ! 594: not always match the order of the instructions requesting those ! 595: references. In particular, a load instruction may execute before a ! 596: preceding store instruction. Such reordering violates sequential ! 597: consistency of volatile memory references, when there are multiple ! 598: processors. When you use `-m88000' or `-m88110', GNU CC generates ! 599: special instructions when appropriate, to force execution in the ! 600: proper order. ! 601: ! 602: The extra code generated to guarantee consistency may affect the ! 603: performance of your application. If you know that you can safely ! 604: forgo this guarantee, you may use `-mno-serialize-volatile'. ! 605: ! 606: If you use `-m88100' but require sequential consistency when ! 607: running on the m88110 processor, you should use ! 608: `-mserialize-volatile'. ! 609: 1.1 root 610: `-msvr4' 611: `-msvr3' 612: Turn on (`-msvr4') or off (`-msvr3') compiler extensions related 613: to System V release 4 (SVr4). This controls the following: 614: 615: 1. Which variant of the assembler syntax to emit (which you can 616: select independently using `-mversion-03.00'). 617: 618: 2. `-msvr4' makes the C preprocessor recognize `#pragma weak' 619: that is used on System V release 4. 620: 1.1.1.3 root 621: 3. `-msvr4' makes GNU CC issue additional declaration directives 622: used in SVr4. 1.1 root 623: 624: `-msvr3' is the default for all m88K configurations except the 625: SVr4 configuration. 626: 627: `-mversion-03.00' 628: In the DG/UX configuration, there are two flavors of SVr4. This 629: option modifies `-msvr4' to select whether the hybrid-COFF or 630: real-ELF flavor is used. All other configurations ignore this 631: option. 632: 633: `-mno-check-zero-division' 634: `-mcheck-zero-division' 1.1.1.3 root 635: Early models of the 88K architecture had problems with division by 636: zero; in particular, many of them didn't trap. Use these options 637: to avoid including (or to include explicitly) additional code to 638: detect division by zero and signal an exception. All GNU CC 639: configurations for the 88K use `-mcheck-zero-division' by default. 1.1 root 640: 641: `-muse-div-instruction' 642: Do not emit code to check both the divisor and dividend when doing 643: signed integer division to see if either is negative, and adjust 644: the signs so the divide is done using non-negative numbers. 645: Instead, rely on the operating system to calculate the correct 1.1.1.3 root 646: value when the `div' instruction traps. This results in different 647: behavior when the most negative number is divided by -1, but is 648: useful when most or all signed integer divisions are done with 649: positive numbers. 1.1 root 650: 651: `-mtrap-large-shift' 652: `-mhandle-large-shift' 653: Include code to detect bit-shifts of more than 31 bits; 654: respectively, trap such shifts or emit code to handle them 655: properly. By default GNU CC makes no special provision for large 656: bit shifts. 657: 658: `-mwarn-passed-structs' 1.1.1.3 root 659: Warn when a function passes a struct as an argument or result. 660: Structure-passing conventions have changed during the evolution of 661: the C language, and are often the source of portability problems. 662: By default, GNU CC issues no such warning. 1.1 root 663: 664: 665: File: gcc.info, Node: RS/6000 Options, Next: RT Options, Prev: M88K Options, Up: Submodel Options 666: 667: IBM RS/6000 Options 668: ------------------- 669: 670: Only one pair of `-m' options is defined for the IBM RS/6000: 671: 672: `-mfp-in-toc' 673: `-mno-fp-in-toc' 674: Control whether or not floating-point constants go in the Table of 675: Contents (TOC), a table of all global variable and function 1.1.1.3 root 676: addresses. By default GNU CC puts floating-point constants there; 677: if the TOC overflows, `-mno-fp-in-toc' will reduce the size of the 678: TOC, which may avoid the overflow. 1.1 root 679: 680: 681: File: gcc.info, Node: RT Options, Next: MIPS Options, Prev: RS/6000 Options, Up: Submodel Options 682: 683: IBM RT Options 684: -------------- 685: 686: These `-m' options are defined for the IBM RT PC: 687: 688: `-min-line-mul' 689: Use an in-line code sequence for integer multiplies. This is the 690: default. 691: 692: `-mcall-lib-mul' 693: Call `lmul$$' for integer multiples. 694: 695: `-mfull-fp-blocks' 696: Generate full-size floating point data blocks, including the 697: minimum amount of scratch space recommended by IBM. This is the 698: default. 699: 700: `-mminimum-fp-blocks' 1.1.1.3 root 701: Do not include extra scratch space in floating point data blocks. 702: This results in smaller code, but slower execution, since scratch 703: space must be allocated dynamically. 1.1 root 704: 705: `-mfp-arg-in-fpregs' 706: Use a calling sequence incompatible with the IBM calling 707: convention in which floating point arguments are passed in 1.1.1.3 root 708: floating point registers. Note that `varargs.h' and `stdargs.h' 1.1 root 709: will not work with floating point operands if this option is 710: specified. 711: 712: `-mfp-arg-in-gregs' 713: Use the normal calling convention for floating point arguments. 714: This is the default. 715: 716: `-mhc-struct-return' 1.1.1.3 root 717: Return structures of more than one word in memory, rather than in a 718: register. This provides compatibility with the MetaWare HighC (hc) 719: compiler. Use `-fpcc-struct-return' for compatibility with the 720: Portable C Compiler (pcc). 1.1 root 721: 722: `-mnohc-struct-return' 723: Return some structures of more than one word in registers, when 724: convenient. This is the default. For compatibility with the 725: IBM-supplied compilers, use either `-fpcc-struct-return' or 726: `-mhc-struct-return'. 727: 728: 1.1.1.2 root 729: File: gcc.info, Node: MIPS Options, Next: i386 Options, Prev: RT Options, Up: Submodel Options 1.1 root 730: 731: MIPS Options 732: ------------ 733: 734: These `-m' options are defined for the MIPS family of computers: 735: 736: `-mcpu=CPU TYPE' 737: Assume the defaults for the machine type CPU TYPE when scheduling 1.1.1.2 root 738: instructions. The default CPU TYPE is `default', which picks the 1.1 root 739: longest cycles times for any of the machines, in order that the 1.1.1.3 root 740: code run at reasonable rates on all MIPS cpu's. Other choices for 741: CPU TYPE are `r2000', `r3000', `r4000', and `r6000'. While 742: picking a specific CPU TYPE will schedule things appropriately for 743: that particular chip, the compiler will not generate any code that 744: does not meet level 1 of the MIPS ISA (instruction set 745: architecture) without the `-mips2' or `-mips3' switches being used. 1.1 root 746: 747: `-mips2' 748: Issue instructions from level 2 of the MIPS ISA (branch likely, 749: square root instructions). The `-mcpu=r4000' or `-mcpu=r6000' 1.1.1.3 root 750: switch must be used in conjunction with `-mips2'. 1.1 root 751: 752: `-mips3' 753: Issue instructions from level 3 of the MIPS ISA (64 bit 1.1.1.3 root 754: instructions). You must use the `-mcpu=r4000' switch along with 1.1 root 755: `-mips3'. 756: 757: `-mint64' 758: `-mlong64' 759: `-mlonglong128' 760: These options don't work at present. 761: 762: `-mmips-as' 763: Generate code for the MIPS assembler, and invoke `mips-tfile' to 764: add normal debug information. This is the default for all 765: platforms except for the OSF/1 reference platform, using the 766: OSF/rose object format. If the either of the `-gstabs' or 767: `-gstabs+' switches are used, the `mips-tfile' program will 768: encapsulate the stabs within MIPS ECOFF. 769: 770: `-mgas' 771: Generate code for the GNU assembler. This is the default on the 772: OSF/1 reference platform, using the OSF/rose object format. 773: 774: `-mrnames' 775: `-mno-rnames' 776: The `-mrnames' switch says to output code using the MIPS software 777: names for the registers, instead of the hardware names (ie, A0 1.1.1.3 root 778: instead of $4). The GNU assembler does not support the `-mrnames' 779: switch, and the MIPS assembler will be instructed to run the MIPS 780: C preprocessor over the source file. The `-mno-rnames' switch is 781: default. 1.1 root 782: 783: `-mgpopt' 784: `-mno-gpopt' 785: The `-mgpopt' switch says to write all of the data declarations 1.1.1.2 root 786: before the instructions in the text section, this allows the MIPS 1.1 root 787: assembler to generate one word memory references instead of using 788: two words for short global or static data items. This is on by 789: default if optimization is selected. 790: 791: `-mstats' 792: `-mno-stats' 793: For each non-inline function processed, the `-mstats' switch 794: causes the compiler to emit one line to the standard error file to 795: print statistics about the program (number of registers saved, 796: stack size, etc.). 797: 798: `-mmemcpy' 799: `-mno-memcpy' 800: The `-mmemcpy' switch makes all block moves call the appropriate 801: string function (`memcpy' or `bcopy') instead of possibly 802: generating inline code. 803: 804: `-mmips-tfile' 805: `-mno-mips-tfile' 806: The `-mno-mips-tfile' switch causes the compiler not postprocess 807: the object file with the `mips-tfile' program, after the MIPS 808: assembler has generated it to add debug support. If `mips-tfile' 809: is not run, then no local variables will be available to the 810: debugger. In addition, `stage2' and `stage3' objects will have 811: the temporary file names passed to the assembler embedded in the 1.1.1.2 root 812: object file, which means the objects will not compare the same. 813: The `-mno-mips-tfile' switch should only be used when there are 814: bugs in the `mips-tfile' program that prevents compilation. 1.1 root 815: 816: `-msoft-float' 1.1.1.3 root 817: Generate output containing library calls for floating point. 818: *Warning:* the requisite libraries are not part of GNU CC. 1.1 root 819: Normally the facilities of the machine's usual C compiler are 820: used, but this can't be done directly in cross-compilation. You 821: must make your own arrangements to provide suitable library 822: functions for cross-compilation. 823: 824: `-mhard-float' 825: Generate output containing floating point instructions. This is 826: the default if you use the unmodified sources. 827: 828: `-mfp64' 829: Assume that the FR bit in the status word is on, and that there 830: are 32 64-bit floating point registers, instead of 32 32-bit 1.1.1.3 root 831: floating point registers. You must also specify the `-mcpu=r4000' 832: and `-mips3' switches. 1.1 root 833: 834: `-mfp32' 1.1.1.3 root 835: Assume that there are 32 32-bit floating point registers. This is 836: the default. 1.1 root 837: 838: `-mabicalls' 839: `-mno-abicalls' 840: Emit the `.abicalls', `.cpload', and `.cprestore' pseudo 1.1.1.3 root 841: operations that some System V.4 ports use for position independent 842: code. 1.1 root 843: 844: `-mhalf-pic' 845: `-mno-half-pic' 846: Put pointers to extern references into the data section and load 847: them up, rather than put the references in the text section. 848: These options do not work at present. 849: 850: `-G NUM' 851: Put global and static items less than or equal to NUM bytes into 852: the small data or bss sections instead of the normal data or bss 853: section. This allows the assembler to emit one word memory 854: reference instructions based on the global pointer (GP or $28), 855: instead of the normal two words used. By default, NUM is 8 when 1.1.1.3 root 856: the MIPS assembler is used, and 0 when the GNU assembler is used. 857: The `-G NUM' switch is also passed to the assembler and linker. 1.1 root 858: All modules should be compiled with the same `-G NUM' value. 859: 1.1.1.2 root 860: `-nocpp' 861: Tell the MIPS assembler to not run it's preprocessor over user 862: assembler files (with a `.s' suffix) when assembling them. 863: 1.1 root 864: These options are defined by the macro `TARGET_SWITCHES' in the 865: machine description. The default for the options is also defined by 866: that macro, which enables you to change the defaults. 867: 868: 1.1.1.4 ! root 869: File: gcc.info, Node: i386 Options, Next: HPPA Options, Prev: MIPS Options, Up: Submodel Options 1.1.1.2 root 870: 871: Intel 386 Options 872: ----------------- 873: 874: These `-m' options are defined for the i386 family of computers: 875: 876: `-m486' 1.1.1.4 ! root 877: `-mno-486' 1.1.1.2 root 878: Control whether or not code is optimized for a 486 instead of an 879: 386. Code generated for an 486 will run on a 386 and vice versa. 880: 881: `-msoft-float' 1.1.1.3 root 882: Generate output containing library calls for floating point. 883: *Warning:* the requisite libraries are not part of GNU CC. 1.1.1.2 root 884: Normally the facilities of the machine's usual C compiler are 885: used, but this can't be done directly in cross-compilation. You 886: must make your own arrangements to provide suitable library 887: functions for cross-compilation. 888: 1.1.1.4 ! root 889: On machines where a function returns floating point results in the 1.1.1.3 root 890: 80387 register stack, some floating point opcodes may be emitted 891: even if `-msoft-float' is used. 1.1.1.2 root 892: 1.1.1.4 ! root 893: `-mno-fp-ret-in-387' ! 894: Don't use the FPU registers for return values of functions. ! 895: ! 896: The usual calling convention has functions return values of types ! 897: `float' and `double' in an FPU register, even if there is no FPU. ! 898: The idea is that the operating system should emulate an FPU. ! 899: ! 900: The option `-mno-fp-ret-in-387' causes such values to be returned ! 901: in ordinary CPU registers instead. ! 902: ! 903: ! 904: File: gcc.info, Node: HPPA Options, Next: Intel 960 Options, Prev: i386 Options, Up: Submodel Options ! 905: ! 906: HPPA Options ! 907: ------------ ! 908: ! 909: This `-m' option is defined for the HPPA family of computers: ! 910: ! 911: `-mno-bss' ! 912: Disable the use of the BSS section. This may be necessary with ! 913: older versions of pa-gas. It is highly recommended that you pick ! 914: up a new version of pa-gas from `jaguar.cs.utah.edu'. ! 915: ! 916: `-mpa-risc-1-0' ! 917: Generate code for a PA 1.0 processor. ! 918: ! 919: `-mpa-risc-1-1' ! 920: Generate code for a PA 1.1 processor. ! 921: ! 922: `-mkernel' ! 923: Generate code which is suitable for use in kernels. Specifically, ! 924: avoid `add' instructions in which one of the arguments is the DP ! 925: register; generate `addil' instructions instead. This avoids a ! 926: rather serious bug in the HP-UX linker. ! 927: ! 928: `-mshared-libs' ! 929: Generate code that can be linked against HP-UX shared libraries. ! 930: This option is not fully function yet, and is not on by default ! 931: for any PA target. ! 932: ! 933: `-mno-shared-libs' ! 934: Don't generate code that will be linked against shared libraries. ! 935: This is the default for all PA targets. ! 936: ! 937: `-mlong-calls' ! 938: Generate code which allows calls to functions greater than 256K ! 939: away from the caller when the caller and callee are in the same ! 940: source file. Do not turn this option on unless code refuses to ! 941: link with "branch out of range errors" from the linker. ! 942: ! 943: ! 944: File: gcc.info, Node: Intel 960 Options, Next: DEC Alpha Options, Prev: HPPA Options, Up: Submodel Options ! 945: ! 946: Intel 960 Options ! 947: ----------------- ! 948: ! 949: These `-m' options are defined for the Intel 960 implementations: ! 950: ! 951: `-mCPU TYPE' ! 952: Assume the defaults for the machine type CPU TYPE for some of the ! 953: other options, including instruction scheduling, floating point ! 954: support, and addressing modes. The choices for CPU TYPE are `ka', ! 955: `kb', `mc', `ca', `cf', `sa', and `sb'. The default is `kb'. ! 956: ! 957: `-mnumerics' ! 958: `-msoft-float' ! 959: The `-mnumerics' option indicates that the processor does support ! 960: floating-point instructions. The `-msoft-float' option indicates ! 961: that floating-point support should not be assumed. ! 962: ! 963: `-mleaf-procedures' ! 964: `-mno-leaf-procedures' ! 965: Do (or do not) attempt to alter leaf procedures to be callable ! 966: with the `bal' instruction as well as `call'. This will result in ! 967: more efficient code for explicit calls when the `bal' instruction ! 968: can be substituted by the assembler or linker, but less efficient ! 969: code in other cases, such as calls via function pointers, or using ! 970: a linker that doesn't support this optimization. ! 971: ! 972: `-mtail-call' ! 973: `-mno-tail-call' ! 974: Do (or do not) make additional attempts (beyond those of the ! 975: machine-independent portions of the compiler) to optimize ! 976: tail-recursive calls into branches. You may not want to do this ! 977: because the detection of cases where this is not valid is not ! 978: totally complete. The default is `-mno-tail-call'. ! 979: ! 980: `-mcomplex-addr' ! 981: `-mno-complex-addr' ! 982: Assume (or do not assume) that the use of a complex addressing ! 983: mode is a win on this implementation of the i960. Complex ! 984: addressing modes may not be worthwhile on the K-series, but they ! 985: definitely are on the C-series. The default is currently ! 986: `-mcomplex-addr' for all processors except the CB and CC. ! 987: ! 988: `-mcode-align' ! 989: `-mno-code-align' ! 990: Align code to 8-byte boundaries for faster fetching (or don't ! 991: bother). Currently turned on by default for C-series ! 992: implementations only. ! 993: ! 994: `-mic-compat' ! 995: `-mic2.0-compat' ! 996: `-mic3.0-compat' ! 997: Enable compatibility with iC960 v2.0 or v3.0. ! 998: ! 999: `-masm-compat' ! 1000: `-mintel-asm' ! 1001: Enable compatibility with the iC960 assembler. ! 1002: ! 1003: `-mstrict-align' ! 1004: `-mno-strict-align' ! 1005: Do not permit (do permit) unaligned accesses. ! 1006: ! 1007: `-mold-align' ! 1008: Enable structure-alignment compatibility with Intel's gcc release ! 1009: version 1.3 (based on gcc 1.37). Currently this is buggy in that ! 1010: `#pragma align 1' is always assumed as well, and cannot be turned ! 1011: off. ! 1012: ! 1013: ! 1014: File: gcc.info, Node: DEC Alpha Options, Next: System V Options, Prev: Intel 960 Options, Up: Submodel Options ! 1015: ! 1016: DEC Alpha Options ! 1017: ----------------- ! 1018: ! 1019: These `-m' options are defined for the DEC Alpha implementations: ! 1020: ! 1021: `-mno-soft-float' ! 1022: `-msoft-float' ! 1023: Use (do not use) the hardware floating-point instructions for ! 1024: floating-point operations. When `-msoft-float' is specified, ! 1025: functions in `libgcc1.c' will be used to perform floating-point ! 1026: operations. Unless they are replaced by routines that emulate the ! 1027: floating-point operations, or compiled in such a way as to call ! 1028: such emulations routines, these routines will issue floating-point ! 1029: operations. If you are compiling for an Alpha without ! 1030: floating-point operations, you must ensure that the library is ! 1031: built so as not to call them. ! 1032: ! 1033: Note that Alpha implementations without floating-point operations ! 1034: are required to have floating-point registers. ! 1035: ! 1036: `-mfp-reg' ! 1037: `-mno-fp-regs' ! 1038: Generate code that uses (does not use) the floating-point register ! 1039: set. `-mno-fp-regs' implies `-msoft-float'. If the floating-point ! 1040: register set is not used, floating point operands are passed in ! 1041: integer registers as if they were integers and floating-point ! 1042: results are passed in $0 instead of $f0. This is a non-standard ! 1043: calling sequence, so any function with a floating-point argument ! 1044: or return value called by code compiled with `-mno-fp-regs' must ! 1045: also be compiled with that option. ! 1046: ! 1047: A typical use of this option is building a kernel that does not ! 1048: use, and hence need not save and restore, any floating-point ! 1049: registers. ! 1050: ! 1051: ! 1052: File: gcc.info, Node: System V Options, Prev: DEC Alpha Options, Up: Submodel Options ! 1053: ! 1054: Options for System V ! 1055: -------------------- ! 1056: ! 1057: These additional options are available on System V Release 4 for ! 1058: compatibility with other compilers on those systems: ! 1059: ! 1060: `-Qy' ! 1061: Identify the versions of each tool used by the compiler, in a ! 1062: `.ident' assembler directive in the output. ! 1063: ! 1064: `-Qn' ! 1065: Refrain from adding `.ident' directives to the output file (this is ! 1066: the default). ! 1067: ! 1068: `-YP,DIRS' ! 1069: Search the directories DIRS, and no others, for libraries ! 1070: specified with `-l'. ! 1071: ! 1072: `-Ym,DIR' ! 1073: Look in the directory DIR to find the M4 preprocessor. The ! 1074: assembler uses this option. ! 1075: 1.1.1.2 root 1076: 1.1 root 1077: File: gcc.info, Node: Code Gen Options, Next: Environment Variables, Prev: Submodel Options, Up: Invoking GCC 1078: 1079: Options for Code Generation Conventions 1080: ======================================= 1081: 1082: These machine-independent options control the interface conventions 1083: used in code generation. 1084: 1.1.1.3 root 1085: Most of them have both positive and negative forms; the negative form 1086: of `-ffoo' would be `-fno-foo'. In the table below, only one of the 1087: forms is listed--the one which is not the default. You can figure out 1088: the other form by either removing `no-' or adding it. 1.1 root 1089: 1090: `-fpcc-struct-return' 1091: Use the same convention for returning `struct' and `union' values 1092: that is used by the usual C compiler on your system. This 1093: convention is less efficient for small structures, and on many 1094: machines it fails to be reentrant; but it has the advantage of 1095: allowing intercallability between GNU CC-compiled code and 1096: PCC-compiled code. 1097: 1098: `-fshort-enums' 1099: Allocate to an `enum' type only as many bytes as it needs for the 1100: declared range of possible values. Specifically, the `enum' type 1101: will be equivalent to the smallest integer type which has enough 1102: room. 1103: 1104: `-fshort-double' 1105: Use the same size for `double' as for `float'. 1106: 1107: `-fshared-data' 1108: Requests that the data and non-`const' variables of this 1109: compilation be shared data rather than private data. The 1110: distinction makes sense only on certain operating systems, where 1111: shared data is shared between processes running the same program, 1112: while private data exists in one copy per process. 1113: 1114: `-fno-common' 1.1.1.3 root 1115: Allocate even uninitialized global variables in the bss section of 1116: the object file, rather than generating them as common blocks. 1117: This has the effect that if the same variable is declared (without 1118: `extern') in two different compilations, you will get an error 1119: when you link them. The only reason this might be useful is if you 1120: wish to verify that the program will work on other systems which 1121: always work this way. 1.1 root 1122: 1123: `-fno-ident' 1124: Ignore the `#ident' directive. 1125: 1126: `-fno-gnu-linker' 1127: Don't output global initializations such as C++ constructors and 1128: destructors in the form used by the GNU linker (on systems where 1.1.1.3 root 1129: the GNU linker is the standard method of handling them). Use this 1130: option when you want to use a "collect" program and a non-GNU 1131: linker. 1.1 root 1132: 1133: `-finhibit-size-directive' 1134: Don't output a `.size' assembler directive, or anything else that 1.1.1.3 root 1135: would cause trouble if the function is split in the middle, and the 1136: two halves are placed at locations far apart in memory. This 1137: option is used when compiling `crtstuff.c'; you should not need to 1138: use it for anything else. 1139: 1.1.1.4 ! root 1140: `-fnonnull-objects' ! 1141: Assume that objects reached through references are not null (C++ ! 1142: only). ! 1143: ! 1144: Normally, GNU C++ makes conservative assumptions about objects ! 1145: reached through references. For example, the compiler must check ! 1146: that `a' is not null in code like the following: ! 1147: ! 1148: obj &a = g (); ! 1149: a.f (2); ! 1150: ! 1151: Checking that references of this sort have non-null values requires ! 1152: extra code, however, and it is unnecessary for many programs. You ! 1153: can use `-fnonnull-objects' to omit the checks for null, if your ! 1154: program doesn't require checking. ! 1155: 1.1.1.3 root 1156: `-fverbose-asm' 1157: Put extra commentary information in the generated assembly code to 1158: make it more readable. This option is generally only of use to 1159: those who actually need to read the generated assembly code 1160: (perhaps while debugging the compiler itself). 1.1 root 1161: 1162: `-fvolatile' 1163: Consider all memory references through pointers to be volatile. 1164: 1165: `-fpic' 1.1.1.4 ! root 1166: If supported for the target machine, generate position-independent ! 1167: code (PIC) suitable for use in a shared library. All addresses ! 1168: will be accessed through a global offset table (GOT). If the GOT ! 1169: size for the linked executable exceeds a machine-specific maximum ! 1170: size, you will get an error message from the linker indicating ! 1171: that `-fpic' does not work; recompile with `-fPIC' instead. ! 1172: (These maximums are 16k on the m88k, 8k on the Sparc, and 32k on ! 1173: the m68k and RS/6000. The 386 has no such limit.) 1.1 root 1174: 1175: Position-independent code requires special support, and therefore 1.1.1.4 ! root 1176: works only on certain machines. For the 386, GNU CC supports PIC ! 1177: for System V but not for the Sun 386i. Code generated for the IBM 1.1 root 1178: RS/6000 is always position-independent. 1179: 1.1.1.3 root 1180: The GNU assembler does not fully support PIC. Currently, you must 1181: use some other assembler in order for PIC to work. We would 1.1.1.2 root 1182: welcome volunteers to upgrade GAS to handle this; the first part 1.1.1.3 root 1183: of the job is to figure out what the assembler must do differently. 1.1.1.2 root 1184: 1.1 root 1185: `-fPIC' 1186: If supported for the target machine, emit position-independent 1187: code, suitable for dynamic linking and avoiding any limit on the 1188: size of the global offset table. This option makes a difference 1189: on the m68k, m88k and the Sparc. 1190: 1191: Position-independent code requires special support, and therefore 1192: works only on certain machines. 1193: 1194: `-ffixed-REG' 1195: Treat the register named REG as a fixed register; generated code 1196: should never refer to it (except perhaps as a stack pointer, frame 1197: pointer or in some other fixed role). 1198: 1199: REG must be the name of a register. The register names accepted 1.1.1.3 root 1200: are machine-specific and are defined in the `REGISTER_NAMES' macro 1201: in the machine description macro file. 1.1 root 1202: 1203: This flag does not have a negative form, because it specifies a 1204: three-way choice. 1205: 1206: `-fcall-used-REG' 1207: Treat the register named REG as an allocatable register that is 1208: clobbered by function calls. It may be allocated for temporaries 1209: or variables that do not live across a call. Functions compiled 1210: this way will not save and restore the register REG. 1211: 1.1.1.3 root 1212: Use of this flag for a register that has a fixed pervasive role in 1213: the machine's execution model, such as the stack pointer or frame 1214: pointer, will produce disastrous results. 1.1 root 1215: 1216: This flag does not have a negative form, because it specifies a 1217: three-way choice. 1218: 1219: `-fcall-saved-REG' 1220: Treat the register named REG as an allocatable register saved by 1221: functions. It may be allocated even for temporaries or variables 1222: that live across a call. Functions compiled this way will save 1223: and restore the register REG if they use it. 1224: 1.1.1.3 root 1225: Use of this flag for a register that has a fixed pervasive role in 1226: the machine's execution model, such as the stack pointer or frame 1227: pointer, will produce disastrous results. 1.1 root 1228: 1.1.1.3 root 1229: A different sort of disaster will result from the use of this flag 1230: for a register in which function values may be returned. 1.1 root 1231: 1232: This flag does not have a negative form, because it specifies a 1233: three-way choice. 1234: 1235:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.