|
|
1.1.1.2 ! root 1: This is Info file gcc.info, produced by Makeinfo-1.44 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: 8: Permission is granted to make and distribute verbatim copies of 9: this manual provided the copyright notice and this permission notice 10: are preserved on all copies. 11: 12: Permission is granted to copy and distribute modified versions of 13: this manual under the conditions for verbatim copying, provided also 14: that the section entitled "GNU General Public License" is included 15: exactly as in the original, and provided that the entire resulting 16: derived work is distributed under the terms of a permission notice 17: identical to this one. 18: 19: Permission is granted to copy and distribute translations of this 20: manual into another language, under the above conditions for modified 21: versions, except that the section entitled "GNU General Public 22: License" and this permission notice may be included in translations 23: approved by the Free Software Foundation instead of in the original 24: English. 25: 26: 27: File: gcc.info, Node: Top, Next: Copying, Up: (DIR) 28: 29: Introduction 30: ************ 31: 32: This manual documents how to run, install and port the GNU C 33: compiler, as well as its new features and incompatibilities, and how 34: to report bugs. It corresponds to GNU CC version 2.0. 35: 36: * Menu: 37: 38: * Copying:: GNU General Public License says 39: how you can copy and share GNU CC. 40: * Contributors:: People who have contributed to GNU CC. 41: * Boycott:: Protect your freedom--fight "look and feel". 42: * Invoking GCC:: Command options supported by `gcc'. 43: * Installation:: How to configure, compile and install GNU CC. 44: * Trouble:: If you have trouble installing GNU CC. 45: * Service:: How to find suppliers of support for GNU CC. 46: * Incompatibilities:: Incompatibilities of GNU CC. 47: * Extensions:: GNU extensions to the C language. 48: * Bugs:: How to report bugs (if you want to get them fixed). 49: * VMS:: Using GNU CC on VMS. 50: * Portability:: Goals of GNU CC's portability features. 51: * Interface:: Function-call interface of GNU CC output. 52: * Passes:: Order of passes, what they do, and what each file is for. 53: * RTL:: The intermediate representation that most passes work on. 54: * Machine Desc:: How to write machine description instruction patterns. 1.1.1.2 ! root 55: * Target Macros:: How to write the machine description C macros. 1.1 root 56: * Config:: Writing the `xm-MACHINE.h' file. 57: * Index:: Index of concepts and symbol names. 58: 59: 60: File: gcc.info, Node: Copying, Next: Contributors, Prev: Top, Up: Top 61: 62: GNU GENERAL PUBLIC LICENSE 63: ************************** 64: 65: Version 2, June 1991 66: 67: Copyright (C) 1989, 1991 Free Software Foundation, Inc. 68: 675 Mass Ave, Cambridge, MA 02139, USA 69: 70: Everyone is permitted to copy and distribute verbatim copies 71: of this license document, but changing it is not allowed. 72: 73: Preamble 74: ======== 75: 76: The licenses for most software are designed to take away your 77: freedom to share and change it. By contrast, the GNU General Public 78: License is intended to guarantee your freedom to share and change free 79: software--to make sure the software is free for all its users. This 80: General Public License applies to most of the Free Software 81: Foundation's software and to any other program whose authors commit to 82: using it. (Some other Free Software Foundation software is covered by 83: the GNU Library General Public License instead.) You can apply it to 84: your programs, too. 85: 86: When we speak of free software, we are referring to freedom, not 87: price. Our General Public Licenses are designed to make sure that you 88: have the freedom to distribute copies of free software (and charge for 89: this service if you wish), that you receive source code or can get it 90: if you want it, that you can change the software or use pieces of it 91: in new free programs; and that you know you can do these things. 92: 93: To protect your rights, we need to make restrictions that forbid 94: anyone to deny you these rights or to ask you to surrender the rights. 95: These restrictions translate to certain responsibilities for you if you 96: distribute copies of the software, or if you modify it. 97: 98: For example, if you distribute copies of such a program, whether 99: gratis or for a fee, you must give the recipients all the rights that 100: you have. You must make sure that they, too, receive or can get the 101: source code. And you must show them these terms so they know their 102: rights. 103: 104: We protect your rights with two steps: (1) copyright the software, 105: and (2) offer you this license which gives you legal permission to 106: copy, distribute and/or modify the software. 107: 108: Also, for each author's protection and ours, we want to make certain 109: that everyone understands that there is no warranty for this free 110: software. If the software is modified by someone else and passed on, 111: we want its recipients to know that what they have is not the 112: original, so that any problems introduced by others will not reflect 113: on the original authors' reputations. 114: 115: Finally, any free program is threatened constantly by software 116: patents. We wish to avoid the danger that redistributors of a free 117: program will individually obtain patent licenses, in effect making the 118: program proprietary. To prevent this, we have made it clear that any 119: patent must be licensed for everyone's free use or not licensed at all. 120: 121: The precise terms and conditions for copying, distribution and 122: modification follow. 123: 124: TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 125: 126: 1. This License applies to any program or other work which contains 127: a notice placed by the copyright holder saying it may be 128: distributed under the terms of this General Public License. The 129: "Program", below, refers to any such program or work, and a "work 130: based on the Program" means either the Program or any derivative 131: work under copyright law: that is to say, a work containing the 132: Program or a portion of it, either verbatim or with modifications 133: and/or translated into another language. (Hereinafter, 134: translation is included without limitation in the term 135: "modification".) Each licensee is addressed as "you". 136: 137: Activities other than copying, distribution and modification 138: are not covered by this License; they are outside its scope. The 139: act of running the Program is not restricted, and the output from 140: the Program is covered only if its contents constitute a work 141: based on the Program (independent of having been made by running 142: the Program). Whether that is true depends on what the Program 143: does. 144: 145: 2. You may copy and distribute verbatim copies of the Program's 146: source code as you receive it, in any medium, provided that you 147: conspicuously and appropriately publish on each copy an 148: appropriate copyright notice and disclaimer of warranty; keep 149: intact all the notices that refer to this License and to the 150: absence of any warranty; and give any other recipients of the 151: Program a copy of this License along with the Program. 152: 153: You may charge a fee for the physical act of transferring a 154: copy, and you may at your option offer warranty protection in 155: exchange for a fee. 156: 157: 3. You may modify your copy or copies of the Program or any portion 158: of it, thus forming a work based on the Program, and copy and 159: distribute such modifications or work under the terms of Section 1 160: above, provided that you also meet all of these conditions: 161: 162: a. You must cause the modified files to carry prominent notices 163: stating that you changed the files and the date of any 164: change. 165: 166: b. You must cause any work that you distribute or publish, that 167: in whole or in part contains or is derived from the Program 168: or any part thereof, to be licensed as a whole at no charge 169: to all third parties under the terms of this License. 170: 171: c. If the modified program normally reads commands interactively 172: when run, you must cause it, when started running for such 173: interactive use in the most ordinary way, to print or 174: display an announcement including an appropriate copyright 175: notice and a notice that there is no warranty (or else, 176: saying that you provide a warranty) and that users may 177: redistribute the program under these conditions, and telling 178: the user how to view a copy of this License. (Exception: if 179: the Program itself is interactive but does not normally 180: print such an announcement, your work based on the Program 181: is not required to print an announcement.) 182: 183: These requirements apply to the modified work as a whole. If 184: identifiable sections of that work are not derived from the 185: Program, and can be reasonably considered independent and 186: separate works in themselves, then this License, and its terms, 187: do not apply to those sections when you distribute them as 188: separate works. But when you distribute the same sections as 189: part of a whole which is a work based on the Program, the 190: distribution of the whole must be on the terms of this License, 191: whose permissions for other licensees extend to the entire whole, 192: and thus to each and every part regardless of who wrote it. 193: 194: Thus, it is not the intent of this section to claim rights or 195: contest your rights to work written entirely by you; rather, the 196: intent is to exercise the right to control the distribution of 197: derivative or collective works based on the Program. 198: 199: In addition, mere aggregation of another work not based on the 200: Program with the Program (or with a work based on the Program) on 201: a volume of a storage or distribution medium does not bring the 202: other work under the scope of this License. 203: 204: 4. You may copy and distribute the Program (or a work based on it, 205: under Section 2) in object code or executable form under the 206: terms of Sections 1 and 2 above provided that you also do one of 207: the following: 208: 209: a. Accompany it with the complete corresponding machine-readable 210: source code, which must be distributed under the terms of 211: Sections 1 and 2 above on a medium customarily used for 212: software interchange; or, 213: 214: b. Accompany it with a written offer, valid for at least three 215: years, to give any third party, for a charge no more than 216: your cost of physically performing source distribution, a 217: complete machine-readable copy of the corresponding source 218: code, to be distributed under the terms of Sections 1 and 2 219: above on a medium customarily used for software interchange; 220: or, 221: 222: c. Accompany it with the information you received as to the 223: offer to distribute corresponding source code. (This 224: alternative is allowed only for noncommercial distribution 225: and only if you received the program in object code or 226: executable form with such an offer, in accord with 227: Subsection b above.) 228: 229: The source code for a work means the preferred form of the 230: work for making modifications to it. For an executable work, 231: complete source code means all the source code for all modules it 232: contains, plus any associated interface definition files, plus 233: the scripts used to control compilation and installation of the 234: executable. However, as a special exception, the source code 235: distributed need not include anything that is normally 236: distributed (in either source or binary form) with the major 237: components (compiler, kernel, and so on) of the operating system 238: on which the executable runs, unless that component itself 239: accompanies the executable. 240: 241: If distribution of executable or object code is made by 242: offering access to copy from a designated place, then offering 243: equivalent access to copy the source code from the same place 244: counts as distribution of the source code, even though third 245: parties are not compelled to copy the source along with the 246: object code. 247: 248: 5. You may not copy, modify, sublicense, or distribute the Program 249: except as expressly provided under this License. Any attempt 250: otherwise to copy, modify, sublicense or distribute the Program is 251: void, and will automatically terminate your rights under this 252: License. However, parties who have received copies, or rights, 253: from you under this License will not have their licenses 254: terminated so long as such parties remain in full compliance. 255: 256: 6. You are not required to accept this License, since you have not 257: signed it. However, nothing else grants you permission to modify 258: or distribute the Program or its derivative works. These actions 259: are prohibited by law if you do not accept this License. 260: Therefore, by modifying or distributing the Program (or any work 261: based on the Program), you indicate your acceptance of this 262: License to do so, and all its terms and conditions for copying, 263: distributing or modifying the Program or works based on it. 264: 265: 7. Each time you redistribute the Program (or any work based on the 266: Program), the recipient automatically receives a license from the 267: original licensor to copy, distribute or modify the Program 268: subject to these terms and conditions. You may not impose any 269: further restrictions on the recipients' exercise of the rights 270: granted herein. You are not responsible for enforcing compliance 271: by third parties to this License. 272: 273: 8. If, as a consequence of a court judgment or allegation of patent 274: infringement or for any other reason (not limited to patent 275: issues), conditions are imposed on you (whether by court order, 276: agreement or otherwise) that contradict the conditions of this 277: License, they do not excuse you from the conditions of this 278: License. If you cannot distribute so as to satisfy 279: simultaneously your obligations under this License and any other 280: pertinent obligations, then as a consequence you may not 281: distribute the Program at all. For example, if a patent license 282: would not permit royalty-free redistribution of the Program by 283: all those who receive copies directly or indirectly through you, 284: then the only way you could satisfy both it and this License 285: would be to refrain entirely from distribution of the Program. 286: 287: If any portion of this section is held invalid or 288: unenforceable under any particular circumstance, the balance of 289: the section is intended to apply and the section as a whole is 290: intended to apply in other circumstances. 291: 292: It is not the purpose of this section to induce you to 293: infringe any patents or other property right claims or to contest 294: validity of any such claims; this section has the sole purpose of 295: protecting the integrity of the free software distribution 296: system, which is implemented by public license practices. Many 297: people have made generous contributions to the wide range of 298: software distributed through that system in reliance on 299: consistent application of that system; it is up to the 300: author/donor to decide if he or she is willing to distribute 301: software through any other system and a licensee cannot impose 302: that choice. 303: 304: This section is intended to make thoroughly clear what is 305: believed to be a consequence of the rest of this License. 306: 307: 9. If the distribution and/or use of the Program is restricted in 308: certain countries either by patents or by copyrighted interfaces, 309: the original copyright holder who places the Program under this 310: License may add an explicit geographical distribution limitation 311: excluding those countries, so that distribution is permitted only 312: in or among countries not thus excluded. In such case, this 313: License incorporates the limitation as if written in the body of 314: this License. 315: 316: 10. The Free Software Foundation may publish revised and/or new 317: versions of the General Public License from time to time. Such 318: new versions will be similar in spirit to the present version, 319: but may differ in detail to address new problems or concerns. 320: 321: Each version is given a distinguishing version number. If the 322: Program specifies a version number of this License which applies 323: to it and "any later version", you have the option of following 324: the terms and conditions either of that version or of any later 325: version published by the Free Software Foundation. If the 326: Program does not specify a version number of this License, you 327: may choose any version ever published by the Free Software 328: Foundation. 329: 330: 11. If you wish to incorporate parts of the Program into other free 331: programs whose distribution conditions are different, write to 332: the author to ask for permission. For software which is 333: copyrighted by the Free Software Foundation, write to the Free 334: Software Foundation; we sometimes make exceptions for this. Our 335: decision will be guided by the two goals of preserving the free 336: status of all derivatives of our free software and of promoting 337: the sharing and reuse of software generally. 338: 339: NO WARRANTY 340: 341: 12. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO 342: WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE 343: LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 344: HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT 345: WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT 346: NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 347: FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE 348: QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 349: PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY 350: SERVICING, REPAIR OR CORRECTION. 351: 352: 13. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN 353: WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY 354: MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE 355: LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, 356: INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR 357: INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS 358: OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 359: YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH 360: ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN 361: ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 362: 363: END OF TERMS AND CONDITIONS 364: 365: Appendix: How to Apply These Terms to Your New Programs 366: ======================================================= 367: 368: If you develop a new program, and you want it to be of the greatest 369: possible use to the public, the best way to achieve this is to make it 370: free software which everyone can redistribute and change under these 371: terms. 372: 373: To do so, attach the following notices to the program. It is safest 374: to attach them to the start of each source file to most effectively 375: convey the exclusion of warranty; and each file should have at least 376: the "copyright" line and a pointer to where the full notice is found. 377: 378: ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES. 379: Copyright (C) 19YY NAME OF AUTHOR 380: 381: This program is free software; you can redistribute it and/or modify 382: it under the terms of the GNU General Public License as published by 383: the Free Software Foundation; either version 2 of the License, or 384: (at your option) any later version. 385: 386: This program is distributed in the hope that it will be useful, 387: but WITHOUT ANY WARRANTY; without even the implied warranty of 388: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 389: GNU General Public License for more details. 390: 391: You should have received a copy of the GNU General Public License 392: along with this program; if not, write to the Free Software 393: Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 394: 395: Also add information on how to contact you by electronic and paper 396: mail. 397: 398: If the program is interactive, make it output a short notice like 399: this when it starts in an interactive mode: 400: 401: Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR 402: Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 403: This is free software, and you are welcome to redistribute it 404: under certain conditions; type `show c' for details. 405: 406: The hypothetical commands `show w' and `show c' should show the 407: appropriate parts of the General Public License. Of course, the 408: commands you use may be called something other than `show w' and `show 409: c'; they could even be mouse-clicks or menu items--whatever suits your 410: program. 411: 412: You should also get your employer (if you work as a programmer) or 413: your school, if any, to sign a "copyright disclaimer" for the program, 414: if necessary. Here is a sample; alter the names: 415: 416: Yoyodyne, Inc., hereby disclaims all copyright interest in the program 417: `Gnomovision' (which makes passes at compilers) written by James Hacker. 418: 419: SIGNATURE OF TY COON, 1 April 1989 420: Ty Coon, President of Vice 421: 422: This General Public License does not permit incorporating your 423: program into proprietary programs. If your program is a subroutine 424: library, you may consider it more useful to permit linking proprietary 425: applications with the library. If this is what you want to do, use 426: the GNU Library General Public License instead of this License. 427: 428: 429: File: gcc.info, Node: Contributors, Next: Boycott, Prev: Copying, Up: Top 430: 431: Contributors to GNU CC 432: ********************** 433: 434: In addition to Richard Stallman, several people have written parts 435: of GNU CC. 436: 437: * The idea of using RTL and some of the optimization ideas came 1.1.1.2 ! root 438: from the program PO written at the University of Arizona by Jack 1.1 root 439: Davidson and Christopher Fraser. See "Register Allocation and 440: Exhaustive Peephole Optimization", Software Practice and 441: Experience 14 (9), Sept. 1984, 857-866. 442: 443: * Paul Rubin wrote most of the preprocessor. 444: 445: * Leonard Tower wrote parts of the parser, RTL generator, and RTL 446: definitions, and of the Vax machine description. 447: 448: * Ted Lemon wrote parts of the RTL reader and printer. 449: 450: * Jim Wilson implemented loop strength reduction and some other 451: loop optimizations. 452: 453: * Nobuyuki Hikichi of Software Research Associates, Tokyo, 454: contributed the support for the Sony NEWS machine. 455: 456: * Charles LaBrec contributed the support for the Integrated 457: Solutions 68020 system. 458: 459: * Michael Tiemann of Cygnus Support wrote the front end for C++, as 460: well as the support for inline functions and instruction 461: scheduling. Also the descriptions of the National Semiconductor 462: 32000 series cpu, the SPARC cpu and part of the Motorola 88000 463: cpu. 464: 465: * Jan Stein of the Chalmers Computer Society provided support for 466: Genix, as well as part of the 32000 machine description. 467: 468: * Randy Smith finished the Sun FPA support. 469: 470: * Robert Brown implemented the support for Encore 32000 systems. 471: 472: * David Kashtan of SRI adapted GNU CC to the Vomit-Making System 473: (VMS). 474: 475: * Alex Crain provided changes for the 3b1. 476: 477: * Greg Satz and Chris Hanson assisted in making GNU CC work on 478: HP-UX for the 9000 series 300. 479: 480: * William Schelter did most of the work on the Intel 80386 support. 481: 482: * Christopher Smith did the port for Convex machines. 483: 484: * Paul Petersen wrote the machine description for the Alliant FX/8. 485: 486: * Alain Lichnewsky ported GNU CC to the Mips cpu. 487: 488: * Devon Bowen, Dale Wiles and Kevin Zachmann ported GNU CC to the 489: Tahoe. 490: 491: * Jonathan Stone wrote the machine description for the Pyramid 492: computer. 493: 494: * Richard Kenner of New York University wrote the machine 495: descriptions for the AMD 29000, the IBM RT PC, and the IBM 496: RS/6000 as well as the support for instruction attributes. He 497: also made changes to better support RISC processors including 498: changes to common subexpression elimination, strength reduction, 499: function calling sequence handling, and condition code support, 500: in addition to generalizing the code for frame pointer 501: elimination. 502: 503: * Richard Kenner and Michael Tiemann jointly developed reorg.c, the 504: delay slot scheduler. 505: 506: * Mike Meissner and Tom Wood of Data General finished the port to 507: the Motorola 88000. 508: 509: * Masanobu Yuhara of Fujitsu Laboratories implemented the machine 510: description for the Tron architecture (specifically, the Gmicro). 511: 512: * NeXT, Inc. donated the front end that supports the Objective C 513: language. 514: 515: * James van Artsdalen wrote the code that makes efficient use of 516: the Intel 80387 register stack. 517: 518: * Mike Meissner at the Open Software Foundation finished the port 519: to the MIPS cpu, including adding ECOFF debug support. 520: 521: * Ron Guilmette implemented the protoize and unprotoize tools, the 522: support for Dwarf symbolic debugging information, and much of the 523: support for System V Release 4. He has also worked heavily on 524: the Intel 386 and 860 support. 525: 1.1.1.2 ! root 526: * Torbjorn Granlund of the Swedish Institute of Computer Science ! 527: implemented multiply-by-constant optimization and better long long ! 528: support, and improved leaf function register allocation. ! 529: 1.1 root 530: 531: File: gcc.info, Node: Boycott, Next: Invoking GCC, Prev: Contributors, Up: Top 532: 533: Protect Your Freedom--Fight "Look And Feel" 534: ******************************************* 535: 536: This section is a political message from the League for 537: Programming Freedom to the users of GNU CC. It is included here 538: as an expression of support for the League on the part of the 539: Free Software Foundation. 540: 1.1.1.2 ! root 541: Apple and Lotus are trying to create a new form of legal monopoly: a ! 542: copyright on a class of user interfaces. These monopolies would cause ! 543: serious problems for users and developers of computer software and ! 544: systems. Xerox, too, has tried to make a monopoly for itself on window ! 545: systems; their suit against Apple was thrown out on a technicality, but ! 546: Xerox has not said anything to indicate it wouldn't try again. 1.1 root 547: 548: Until a few years ago, the law seemed clear: no one could restrict 549: others from using a user interface; programmers were free to implement 550: any interface they chose. Imitating interfaces, sometimes with 551: changes, was standard practice in the computer field. The interfaces 552: we know evolved gradually in this way; for example, the Macintosh user 553: interface drew ideas from the Xerox interface, which in turn drew on 554: work done at Stanford and SRI. 1-2-3 imitated VisiCalc, and dBase 555: imitated a database program from JPL. 556: 557: Most computer companies, and nearly all computer users, were happy 558: with this state of affairs. The companies that are suing say it does 559: not offer "enough incentive" to develop their products, but they must 560: have considered it "enough" when they made their decision to do so. It 561: seems they are not satisfied with the opportunity to continue to 562: compete in the marketplace--not even with a head start. 563: 1.1.1.2 ! root 564: If companies like Xerox, Lotus, and Apple are permitted to make law ! 565: through the courts, the precedent will hobble the software industry: 1.1 root 566: 567: * Gratuitous incompatibilities will burden users. Imagine if each 568: car manufacturer had to arrange the pedals in a different order. 569: 570: * Software will become and remain more expensive. Users will be 571: "locked in" to proprietary interfaces, for which there is no real 572: competition. 573: 574: * Large companies have an unfair advantage wherever lawsuits become 575: commonplace. Since they can easily afford to sue, they can 576: intimidate small companies with threats even when they don't 577: really have a case. 578: 579: * User interface improvements will come slower, since incremental 580: evolution through creative imitation will no longer be permitted. 581: 582: * Even Apple, etc., will find it harder to make improvements if 583: they can no longer adapt the good ideas that others introduce, for 584: fear of weakening their own legal positions. Some users suggest 585: that this stagnation may already have started. 586: 587: * If you use GNU software, you might find it of some concern that 588: user interface copyright will make it hard for the Free Software 589: Foundation to develop programs compatible with the interfaces 590: that you already know. 591: 592: To protect our freedom from lawsuits like these, a group of 593: programmers and users have formed a new grass-roots political 594: organization, the League for Programming Freedom. 595: 596: The purpose of the League is to oppose new monopolistic practices 597: such as user-interface copyright and software patents; it calls for a 598: return to the legal policies of the recent past, in which these 599: practices were not allowed. The League is not concerned with free 600: software as an issue, and not affiliated with the Free Software 601: Foundation. 602: 603: The League's membership rolls include John McCarthy, inventor of 604: Lisp, Marvin Minsky, founder of the Artificial Intelligence lab, Guy L. 605: Steele, Jr., author of well-known books on Lisp and C, as well as 606: Richard Stallman, the developer of GNU CC. Please join and add your 607: name to the list. Membership dues in the League are $42 per year for 608: programmers, managers and professionals; $10.50 for students; $21 for 609: others. 610: 611: The League needs both activist members and members who only pay 612: their dues. 613: 614: To join, or for more information, phone (617) 492-0023 or write to: 615: 616: League for Programming Freedom 617: 1 Kendall Square #143 618: P.O. Box 9171 619: Cambridge, MA 02139 620: 621: You can also send electronic mail to `[email protected]'. 622: 623: Here are some suggestions from the League for things you can do to 624: protect your freedom to write programs: 625: 626: * Don't buy from Xerox, Lotus or Apple. Buy from their competitors 627: or from the defendants they are suing. 628: 629: * Don't develop software to work with the systems made by these 630: companies. 631: 632: * Port your existing software to competing systems, so that you 633: encourage users to switch. 634: 635: * Write letters to company presidents to let them know their conduct 636: is unacceptable. 637: 638: * Tell your friends and colleagues about this issue and how it 639: threatens to ruin the computer industry. 640: 641: * Above all, don't work for the look-and-feel plaintiffs, and don't 642: accept contracts from them. 643: 644: * Write to Congress to explain the importance of this issue. 645: 646: House Subcommittee on Intellectual Property 647: 2137 Rayburn Bldg 648: Washington, DC 20515 649: 650: Senate Subcommittee on Patents, Trademarks and Copyrights 651: United States Senate 652: Washington, DC 20510 653: 654: (These committees have received lots of mail already; let's give 655: them even more.) 656: 657: Express your opinion! You can make a difference. 658: 659: 660: File: gcc.info, Node: Invoking GCC, Next: Installation, Prev: Boycott, Up: Top 661: 662: GNU CC Command Options 663: ********************** 664: 665: When you invoke GNU CC, it normally does preprocessing, compilation, 666: assembly and linking. The "overall options" allow you to stop this 667: process at an intermediate stage. For example, the `-c' option says 668: not to run the linker. Then the output consists of object files 669: output by the assembler. 670: 671: Other options are passed on to one stage of processing. Some 672: options control the preprocessor and others the compiler itself. Yet 673: other options control the assembler and linker; most of these are not 674: documented here, since you rarely need to use any of them. 675: 676: The GNU C compiler uses a command syntax much like the Unix C 677: compiler. The `gcc' program accepts options and file names as 678: operands. Multiple single-letter options may *not* be grouped: `-dr' 679: is very different from `-d -r'. 680: 681: You can mix options and other arguments. For the most part, the 682: order you use doesn't matter; `gcc' reorders the command-line options 683: so that the choices specified by option flags are applied to all input 684: files. Order does matter when you use several options of the same 685: kind; for example, if you specify `-L' more than once, the directories 686: are searched in the order specified. 687: 688: Many options have long names starting with `-f' or with `-W'--for 689: example, `-fforce-mem', `-fstrength-reduce', `-Wformat' and so on. 690: Most of these have both positive and negative forms; the negative form 691: of `-ffoo' would be `-fno-foo'. This manual documents only one of 692: these two forms, whichever one is not the default. 693: 694: Here is a summary of all the options, grouped by type. 695: Explanations are in the following sections. 696: 697: *Overall Options* 698: *Note Options Controlling the Kind of Output: Overall Options. 699: -c -S -E -o FILE -pipe -v -x LANGUAGE 700: 701: *Language Options* 702: *Note Options Controlling Dialect: Dialect Options. 703: -ansi -fbuiltin -fcond-mismatch -fno-asm 704: -fsigned-bitfields -fsigned-char 705: -funsigned-bitfields -funsigned-char -fwritable-strings 706: -traditional -traditional-cpp -trigraphs 707: 708: *Warning Options* 709: *Note Options to Request or Suppress Warnings: Warning Options. 710: -fsyntax-only -pedantic -pedantic-errors 711: -w -W -Wall -Waggregate-return 712: -Wcast-align -Wcast-qual -Wcomment -Wconversion -Werror 1.1.1.2 ! root 713: -Wformat -Wid-clash-LEN -Wimplicit -Wimport ! 714: -Winline -Wmissing-prototypes ! 715: -Wparentheses -Wpointer-arith -Wreturn-type -Wshadow 1.1 root 716: -Wstrict-prototypes -Wswitch -Wtraditional -Wtrigraphs 717: -Wuninitialized -Wunused -Wwrite-strings -Wchar-subscripts 718: 719: *Debugging Options* 720: *Note Options for Debugging Your Program or GCC: Debugging 721: Options. 722: -a -dLETTERS -fpretend-float 1.1.1.2 ! root 723: -g -gLEVEL -ggdb -gdwarf ! 724: -gstabs -gstabs+ -gcoff -gxcoff 1.1 root 725: -p -pg -save-temps 726: 727: *Optimization Options* 728: *Note Options that Control Optimization: Optimize Options. 729: -fcaller-saves -fcse-follow-jumps -fdelayed-branch 730: -fexpensive-optimizations -ffloat-store -fforce-addr -fforce-mem 731: -finline -finline-functions -fkeep-inline-functions 732: -fno-defer-pop -fno-function-cse -fomit-frame-pointer 733: -frerun-cse-after-loop -fschedule-insns -fschedule-insns2 734: -fstrength-reduce -fthread-jumps 735: -funroll-all-loops -funroll-loops 736: -O -O2 737: 738: *Preprocessor Options* 739: *Note Options Controlling the Preprocessor: Preprocessor Options. 740: -C -dD -dM -dN 741: -DMACRO[=DEFN] -E -H 742: -include FILE -imacros FILE 743: -M -MD -MM -MMD -nostdinc -P -trigraphs -UMACRO 744: 745: *Linker Options* 746: *Note Options for Linking: Link Options. 747: OBJECT-FILE-NAME 748: -lLIBRARY -nostdlib -static 749: 750: *Directory Options* 751: *Note Options for Directory Search: Directory Options. 752: -BPREFIX -IDIR -I- -LDIR 753: 754: *Target Options* 755: *Note Target Machine and Compiler Version: Target Options. 756: -b MACHINE -V VERSION 757: 758: *Machine Dependent Options* 759: *Note Hardware Models and Configurations: Submodel Options. 760: *M680x0 Options* 761: -m68000 -m68020 -m68881 -mbitfield -mc68000 -mc68020 -mfpa 762: -mnobitfield -mrtd -mshort -msoft-float 763: 764: *VAX Options* 765: -mg -mgnu -munix 766: 767: *SPARC Options* 1.1.1.2 ! root 768: -mforce-align -mfpu -mno-epilogue 1.1 root 769: 770: *Convex Options* 771: -margcount -mc1 -mc2 -mnoargcount 772: 773: *AMD29K Options* 774: -m29000 -m29050 -mbw -mdw -mkernel-registers -mlarge 775: -mnbw -mnodw -msmall -mstack-check -muser-registers 776: 777: *M88K Options* 778: -m88000 -m88100 -m88110 -mbig-pic -mcheck-zero-division 779: -mhandle-large-shift -midentify-revision 780: -mno-check-zero-division -mno-ocs-debug-info 781: -mno-ocs-frame-position -mno-optimize-arg-area -mno-underscores 782: -mocs-debug-info -mocs-frame-position -moptimize-arg-area 783: -mshort-data-NUM -msvr3 -msvr4 -mtrap-large-shift 784: -muse-div-instruction -mversion-03.00 -mwarn-passed-structs 785: 786: *RS/6000 Options* 787: -mfp-in-toc -mno-fop-in-toc 788: 789: *RT Options* 790: -mcall-lib-mul -mfp-arg-in-fpregs -mfp-arg-in-gregs 791: -mfull-fp-blocks -mhc-struct-return -min-line-mul 792: -mminimum-fp-blocks -mnohc-struct-return 793: 794: *MIPS Options* 795: -mcpu=CPU TYPE -mips2 -mips3 -mint64 -mlong64 -mlonglong128 796: -mmips-as -mgas -mrnames -mno-rnames -mgpopt -mno-gpopt -mstats 797: -mno-stats -mmemcpy -mno-memcpy -mno-mips-tfile -mmips-tfile 798: -msoft-float -mhard-float -mabicalls -mno-abicalls -mhalf-pic 1.1.1.2 ! root 799: -mno-half-pic -G NUM -nocpp ! 800: ! 801: *i386 Options* ! 802: -m486 -msoft-float 1.1 root 803: 804: *Code Generation Options* 805: *Note Options for Code Generation Conventions: Code Gen Options. 806: -fcall-saved-REG -fcall-used-REG -ffixed-REG 807: -fno-common -fpcc-struct-return -fpic -fPIC -fshared-data 808: -fshort-enums -fshort-double -fvolatile 809: 810: * Menu: 811: 812: * Overall Options:: Controlling the kind of output: 813: an executable, object files, assembler files, 814: or preprocessed source. 815: * Dialect Options:: Controlling the variant of C language compiled. 816: * Warning Options:: How picky should the compiler be? 817: * Debugging Options:: Symbol tables, measurements, and debugging dumps. 818: * Optimize Options:: How much optimization? 819: * Preprocessor Options:: Controlling header files and macro definitions. 820: Also, getting dependency information for Make. 821: * Link Options:: Specifying libraries and so on. 822: * Directory Options:: Where to find header files and libraries. 823: Where to find the compiler executable files. 824: * Target Options:: Running a cross-compiler, or an old version of GNU CC. 825: * Submodel Options:: Specifying minor hardware or convention variations, 826: such as 68010 vs 68020. 827: * Code Gen Options:: Specifying conventions for function calls, data layout 828: and register usage. 829: * Environment Variables:: Env vars that affect GNU CC. 830: 831: 832: File: gcc.info, Node: Overall Options, Next: Dialect Options, Prev: Invoking GCC, Up: Invoking GCC 833: 834: Options Controlling the Kind of Output 835: ====================================== 836: 837: Compilation can involve up to four stages: preprocessing, 838: compilation proper, assembly and linking, always in that order. The 839: first three stages apply to an individual source file, and end by 840: producing an object file; linking combines all the object files (those 841: newly compiled, and those specified as input) into an executable file. 842: 843: For any given input file, the file name suffix determines what kind 844: of compilation is done: 845: 846: `FILE.c' 847: C source code which must be preprocessed. 848: 849: `FILE.i' 850: C source code which should not be preprocessed. 851: 852: `FILE.m' 853: Objective-C source code 854: 855: `FILE.h' 856: C header file (not to be compiled or linked). 857: 858: `FILE.cc' 859: `FILE.cxx' 860: `FILE.C' 861: C++ source code which must be preprocessed. 862: 863: `FILE.s' 864: Assembler code. 865: 866: `FILE.S' 867: Assembler code which must be preprocessed. 868: 869: `OTHER' 870: An object file to be fed straight into linking. Any file name 871: with no recognized suffix is treated this way. 872: 873: You can specify the input language explicitly with the `-x' option: 874: 875: `-x LANGUAGE' 876: Specify explicitly the LANGUAGE for the following input files 877: (rather than choosing a default based on the file name suffix). 878: This option applies to all following input files until the next 879: `-x' option. Possible values of LANGUAGE are `c', `objective-c', 880: `c-header', `c++', `cpp-output', `assembler', and 881: `assembler-with-cpp'. 882: 883: `-x none' 884: Turn off any specification of a language, so that subsequent 885: files are handled according to their file name suffixes (as they 886: are if `-x' has not been used at all). 887: 888: If you only want some of the stages of compilation, you can use 889: `-x' (or filename suffixes) to tell `gcc' where to start, and one of 890: the options `-c', `-S', or `-E' to say where `gcc' is to stop. Note 891: that some combinations (for example, `-x cpp-output -E' instruct `gcc' 892: to do nothing at all. 893: 894: `-c' 895: Compile or assemble the source files, but do not link. The 896: linking stage simply is not done. The ultimate output is in the 897: form of an object file for each source file. 898: 899: By default, the object file name for a source file is made by 900: replacing the suffix `.c', `.i', `.s', etc., with `.o'. 901: 902: Unrecognized input files, not requiring compilation or assembly, 903: are ignored. 904: 905: `-S' 906: Stop after the stage of compilation proper; do not assemble. The 907: output is in the form of an assembler code file for each 908: non-assembler input file specified. 909: 910: By default, the assembler file name for a source file is made by 911: replacing the suffix `.c', `.i', etc., with `.s'. 912: 913: Input files that don't require compilation are ignored. 914: 915: `-E' 916: Stop after the preprocessing stage; do not run the compiler 917: proper. The output is in the form of preprocessed source code, 918: which is sent to the standard output. 919: 920: Input files which don't require preprocessing are ignored. 921: 922: `-o FILE' 923: Place output in file FILE. This applies regardless to whatever 924: sort of output is being produced, whether it be an executable 925: file, an object file, an assembler file or preprocessed C code. 926: 927: Since only one output file can be specified, it does not make 928: sense to use `-o' when compiling more than one input file, unless 929: you are producing an executable file as output. 930: 931: If `-o' is not specified, the default is to put an executable file 932: in `a.out', the object file for `SOURCE.SUFFIX' in `SOURCE.o', 933: its assembler file in `SOURCE.s', and all preprocessed C source 934: on standard output. 935: 936: `-v' 937: Print (on standard error output) the commands executed to run the 938: stages of compilation. Also print the version number of the 939: compiler driver program and of the preprocessor and the compiler 940: proper. 941: 942: `-pipe' 943: Use pipes rather than temporary files for communication between 944: the various stages of compilation. This fails to work on some 945: systems where the assembler is unable to read from a pipe; but 946: the GNU assembler has no trouble. 947: 948: 949: File: gcc.info, Node: Dialect Options, Next: Warning Options, Prev: Overall Options, Up: Invoking GCC 950: 951: Options Controlling Dialect 952: =========================== 953: 954: The following options control the dialect of C that the compiler 955: accepts: 956: 957: `-ansi' 958: Support all ANSI standard C programs. 959: 960: This turns off certain features of GNU C that are incompatible 961: with ANSI C, such as the `asm', `inline' and `typeof' keywords, 962: and predefined macros such as `unix' and `vax' that identify the 963: type of system you are using. It also enables the undesirable and 964: rarely used ANSI trigraph feature, and disallows `$' as part of 965: identifiers. 966: 967: The alternate keywords `__asm__', `__extension__', `__inline__' 968: and `__typeof__' continue to work despite `-ansi'. You would not 969: want to use them in an ANSI C program, of course, but it useful 970: to put them in header files that might be included in 971: compilations done with `-ansi'. Alternate predefined macros such 972: as `__unix__' and `__vax__' are also available, with or without 973: `-ansi'. 974: 975: The `-ansi' option does not cause non-ANSI programs to be 976: rejected gratuitously. For that, `-pedantic' is required in 977: addition to `-ansi'. *Note Warning Options::. 978: 979: The macro `__STRICT_ANSI__' is predefined when the `-ansi' option 980: is used. Some header files may notice this macro and refrain 981: from declaring certain functions or defining certain macros that 982: the ANSI standard doesn't call for; this is to avoid interfering 983: with any programs that might use these names for other things. 984: 985: `-fno-asm' 986: Do not recognize `asm', `inline' or `typeof' as a keyword. These 987: words may then be used as identifiers. You can use `__asm__', 988: `__inline__' and `__typeof__' instead. `-ansi' implies 989: `-fno-asm'. 990: 991: `-fno-builtin' 992: Don't recognize non-ANSI built-in functions. `-ansi' also has 993: this effect. Currently, the only function affected is `alloca'. 994: 995: `-trigraphs' 996: Support ANSI C trigraphs. You don't want to know about this 997: brain-damage. The `-ansi' option implies `-trigraphs'. 998: 999: `-traditional' 1000: Attempt to support some aspects of traditional C compilers. 1001: Specifically: 1002: 1003: * All `extern' declarations take effect globally even if they 1004: are written inside of a function definition. This includes 1005: implicit declarations of functions. 1006: 1007: * The keywords `typeof', `inline', `signed', `const' and 1008: `volatile' are not recognized. (You can still use the 1009: alternative keywords such as `__typeof__', `__inline__', and 1010: so on.) 1011: 1012: * Comparisons between pointers and integers are always allowed. 1013: 1014: * Integer types `unsigned short' and `unsigned char' promote 1015: to `unsigned int'. 1016: 1017: * Out-of-range floating point literals are not an error. 1018: 1019: * String "constants" are not necessarily constant; they are 1020: stored in writable space, and identical looking constants 1021: are allocated separately. (This is the same as the effect of 1022: `-fwritable-strings'.) 1023: 1024: * All automatic variables not declared `register' are 1025: preserved by `longjmp'. Ordinarily, GNU C follows ANSI C: 1026: automatic variables not declared `volatile' may be clobbered. 1027: 1028: * In the preprocessor, comments convert to nothing at all, 1029: rather than to a space. This allows traditional token 1030: concatenation. 1031: 1032: * In the preprocessor, macro arguments are recognized within 1033: string constants in a macro definition (and their values are 1034: stringified, though without additional quote marks, when 1035: they appear in such a context). The preprocessor always 1036: considers a string constant to end at a newline. 1037: 1038: * The predefined macro `__STDC__' is not defined when you use 1039: `-traditional', but `__GNUC__' is (since the GNU extensions 1040: which `__GNUC__' indicates are not affected by 1041: `-traditional'). If you need to write header files that work 1042: differently depending on whether `-traditional' is in use, by 1043: testing both of these predefined macros you can distinguish 1044: four situations: GNU C, traditional GNU C, other ANSI C 1045: compilers, and other old C compilers. 1046: 1047: `-traditional-cpp' 1048: Attempt to support some aspects of traditional C preprocessors. 1049: This includes the last three items in the table immediately above, 1050: but none of the other effects of `-traditional'. 1051: 1052: `-fcond-mismatch' 1053: Allow conditional expressions with mismatched types in the second 1054: and third arguments. The value of such an expression is void. 1055: 1056: `-funsigned-char' 1057: Let the type `char' be unsigned, like `unsigned char'. 1058: 1059: Each kind of machine has a default for what `char' should be. It 1060: is either like `unsigned char' by default or like `signed char' 1061: by default. 1062: 1063: Ideally, a portable program should always use `signed char' or 1064: `unsigned char' when it depends on the signedness of an object. 1065: But many programs have been written to use plain `char' and 1066: expect it to be signed, or expect it to be unsigned, depending on 1067: the machines they were written for. This option, and its 1068: inverse, let you make such a program work with the opposite 1069: default. 1070: 1071: The type `char' is always a distinct type from each of `signed 1072: char' or `unsigned char', even though its behavior is always just 1073: like one of those two. 1074: 1075: `-fsigned-char' 1076: Let the type `char' be signed, like `signed char'. 1077: 1078: Note that this is equivalent to `-fno-unsigned-char', which is 1079: the negative form of `-funsigned-char'. Likewise, 1080: `-fno-signed-char' is equivalent to `-funsigned-char'. 1081: 1082: `-fsigned-bitfields' 1083: `-funsigned-bitfields' 1084: `-fno-signed-bitfields' 1085: `-fno-unsigned-bitfields' 1086: These options control whether a bitfield is signed or unsigned, 1087: when the declaration does not use either `signed' or `unsigned'. 1088: By default, such a bitfield is signed, because this is 1089: consistent: the basic integer types such as `int' are signed 1090: types. 1091: 1092: However, when `-traditional' is used, bitfields are all unsigned 1093: no matter what. 1094: 1095: `-fwritable-strings' 1096: Store string constants in the writable data segment and don't 1097: uniquize them. This is for compatibility with old programs which 1098: assume they can write into string constants. `-traditional' also 1099: has this effect. 1100: 1101: Writing into string constants is a very bad idea; "constants" 1102: should be constant. 1103: 1104:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.