|
|
1.1.1.7 ! root 1: This is Info file gcc.info, produced by Makeinfo-1.55 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: 1.1.1.5 root 6: Published by the Free Software Foundation 675 Massachusetts Avenue 7: Cambridge, MA 02139 USA 8: 1.1.1.7 ! root 9: Copyright (C) 1988, 1989, 1992, 1993, 1994 Free Software Foundation, ! 10: Inc. 1.1 root 11: 1.1.1.3 root 12: Permission is granted to make and distribute verbatim copies of this 13: manual provided the copyright notice and this permission notice are 14: preserved on all copies. 1.1 root 15: 16: Permission is granted to copy and distribute modified versions of 17: this manual under the conditions for verbatim copying, provided also 1.1.1.7 ! root 18: that the sections entitled "GNU General Public License," "Funding for ! 19: Free Software," and "Protect Your Freedom--Fight `Look And Feel'" are ! 20: included exactly as in the original, and provided that the entire ! 21: resulting derived work is distributed under the terms of a permission ! 22: notice identical to this one. 1.1 root 23: 24: Permission is granted to copy and distribute translations of this 25: manual into another language, under the above conditions for modified 1.1.1.3 root 26: versions, except that the sections entitled "GNU General Public 1.1.1.7 ! root 27: License," "Funding for Free Software," and "Protect Your Freedom--Fight ! 28: `Look And Feel'", and this permission notice, may be included in ! 29: translations approved by the Free Software Foundation instead of in the ! 30: original English. 1.1 root 31: 32: 33: File: gcc.info, Node: Top, Next: Copying, Up: (DIR) 34: 35: Introduction 36: ************ 37: 1.1.1.5 root 38: This manual documents how to run, install and port the GNU compiler, 39: as well as its new features and incompatibilities, and how to report 1.1.1.7 ! root 40: bugs. It corresponds to GNU CC version 2.6. 1.1 root 41: 42: * Menu: 43: 44: * Copying:: GNU General Public License says 45: how you can copy and share GNU CC. 46: * Contributors:: People who have contributed to GNU CC. 1.1.1.7 ! root 47: * Funding:: How to help assure funding for free software. ! 48: * Look and Feel:: Protect your freedom--fight "look and feel". 1.1.1.5 root 49: 50: * G++ and GCC:: You can compile C or C++ programs. 1.1.1.3 root 51: * Invoking GCC:: Command options supported by `gcc'. 1.1 root 52: * Installation:: How to configure, compile and install GNU CC. 1.1.1.5 root 53: * C Extensions:: GNU extensions to the C language family. 54: * C++ Extensions:: GNU extensions to the C++ language. 1.1 root 55: * Trouble:: If you have trouble installing GNU CC. 1.1.1.3 root 56: * Bugs:: How, why and where to report bugs. 1.1 root 57: * Service:: How to find suppliers of support for GNU CC. 58: * VMS:: Using GNU CC on VMS. 1.1.1.5 root 59: 1.1 root 60: * Portability:: Goals of GNU CC's portability features. 61: * Interface:: Function-call interface of GNU CC output. 62: * Passes:: Order of passes, what they do, and what each file is for. 63: * RTL:: The intermediate representation that most passes work on. 64: * Machine Desc:: How to write machine description instruction patterns. 1.1.1.2 root 65: * Target Macros:: How to write the machine description C macros. 1.1 root 66: * Config:: Writing the `xm-MACHINE.h' file. 1.1.1.5 root 67: 1.1 root 68: * Index:: Index of concepts and symbol names. 69: 70: 71: File: gcc.info, Node: Copying, Next: Contributors, Prev: Top, Up: Top 72: 73: GNU GENERAL PUBLIC LICENSE 74: ************************** 75: 1.1.1.3 root 76: Version 2, June 1991 1.1 root 77: 78: Copyright (C) 1989, 1991 Free Software Foundation, Inc. 79: 675 Mass Ave, Cambridge, MA 02139, USA 80: 81: Everyone is permitted to copy and distribute verbatim copies 82: of this license document, but changing it is not allowed. 83: 84: Preamble 85: ======== 86: 87: The licenses for most software are designed to take away your 88: freedom to share and change it. By contrast, the GNU General Public 89: License is intended to guarantee your freedom to share and change free 90: software--to make sure the software is free for all its users. This 91: General Public License applies to most of the Free Software 92: Foundation's software and to any other program whose authors commit to 93: using it. (Some other Free Software Foundation software is covered by 94: the GNU Library General Public License instead.) You can apply it to 95: your programs, too. 96: 97: When we speak of free software, we are referring to freedom, not 98: price. Our General Public Licenses are designed to make sure that you 99: have the freedom to distribute copies of free software (and charge for 100: this service if you wish), that you receive source code or can get it 1.1.1.3 root 101: if you want it, that you can change the software or use pieces of it in 102: new free programs; and that you know you can do these things. 1.1 root 103: 104: To protect your rights, we need to make restrictions that forbid 1.1.1.3 root 105: anyone to deny you these rights or to ask you to surrender the rights. 1.1 root 106: These restrictions translate to certain responsibilities for you if you 107: distribute copies of the software, or if you modify it. 108: 109: For example, if you distribute copies of such a program, whether 110: gratis or for a fee, you must give the recipients all the rights that 111: you have. You must make sure that they, too, receive or can get the 112: source code. And you must show them these terms so they know their 113: rights. 114: 115: We protect your rights with two steps: (1) copyright the software, 1.1.1.3 root 116: and (2) offer you this license which gives you legal permission to copy, 117: distribute and/or modify the software. 1.1 root 118: 119: Also, for each author's protection and ours, we want to make certain 120: that everyone understands that there is no warranty for this free 1.1.1.3 root 121: software. If the software is modified by someone else and passed on, we 122: want its recipients to know that what they have is not the original, so 123: that any problems introduced by others will not reflect on the original 124: authors' reputations. 1.1 root 125: 126: Finally, any free program is threatened constantly by software 127: patents. We wish to avoid the danger that redistributors of a free 128: program will individually obtain patent licenses, in effect making the 129: program proprietary. To prevent this, we have made it clear that any 130: patent must be licensed for everyone's free use or not licensed at all. 131: 132: The precise terms and conditions for copying, distribution and 133: modification follow. 134: 1.1.1.3 root 135: TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 1.1 root 136: 1.1.1.5 root 137: 0. This License applies to any program or other work which contains a 1.1.1.3 root 138: notice placed by the copyright holder saying it may be distributed 139: under the terms of this General Public License. The "Program", 140: below, refers to any such program or work, and a "work based on 141: the Program" means either the Program or any derivative work under 142: copyright law: that is to say, a work containing the Program or a 143: portion of it, either verbatim or with modifications and/or 144: translated into another language. (Hereinafter, translation is 145: included without limitation in the term "modification".) Each 146: licensee is addressed as "you". 147: 148: Activities other than copying, distribution and modification are 149: not covered by this License; they are outside its scope. The act 150: of running the Program is not restricted, and the output from the 151: Program is covered only if its contents constitute a work based on 152: the Program (independent of having been made by running the 1.1.1.5 root 153: Program). Whether that is true depends on what the Program does. 1.1 root 154: 1.1.1.5 root 155: 1. You may copy and distribute verbatim copies of the Program's 1.1 root 156: source code as you receive it, in any medium, provided that you 1.1.1.3 root 157: conspicuously and appropriately publish on each copy an appropriate 158: copyright notice and disclaimer of warranty; keep intact all the 159: notices that refer to this License and to the absence of any 160: warranty; and give any other recipients of the Program a copy of 161: this License along with the Program. 162: 163: You may charge a fee for the physical act of transferring a copy, 164: and you may at your option offer warranty protection in exchange 165: for a fee. 1.1 root 166: 1.1.1.5 root 167: 2. You may modify your copy or copies of the Program or any portion 1.1 root 168: of it, thus forming a work based on the Program, and copy and 169: distribute such modifications or work under the terms of Section 1 170: above, provided that you also meet all of these conditions: 171: 172: a. You must cause the modified files to carry prominent notices 1.1.1.3 root 173: stating that you changed the files and the date of any change. 1.1 root 174: 175: b. You must cause any work that you distribute or publish, that 176: in whole or in part contains or is derived from the Program 177: or any part thereof, to be licensed as a whole at no charge 178: to all third parties under the terms of this License. 179: 180: c. If the modified program normally reads commands interactively 181: when run, you must cause it, when started running for such 1.1.1.3 root 182: interactive use in the most ordinary way, to print or display 183: an announcement including an appropriate copyright notice and 184: a notice that there is no warranty (or else, saying that you 185: provide a warranty) and that users may redistribute the 186: program under these conditions, and telling the user how to 187: view a copy of this License. (Exception: if the Program 188: itself is interactive but does not normally print such an 189: announcement, your work based on the Program is not required 190: to print an announcement.) 1.1 root 191: 1.1.1.3 root 192: These requirements apply to the modified work as a whole. If 1.1 root 193: identifiable sections of that work are not derived from the 1.1.1.3 root 194: Program, and can be reasonably considered independent and separate 195: works in themselves, then this License, and its terms, do not 196: apply to those sections when you distribute them as separate 197: works. But when you distribute the same sections as part of a 198: whole which is a work based on the Program, the distribution of 199: the whole must be on the terms of this License, whose permissions 200: for other licensees extend to the entire whole, and thus to each 201: and every part regardless of who wrote it. 1.1 root 202: 1.1.1.3 root 203: Thus, it is not the intent of this section to claim rights or 1.1 root 204: contest your rights to work written entirely by you; rather, the 205: intent is to exercise the right to control the distribution of 206: derivative or collective works based on the Program. 207: 1.1.1.3 root 208: In addition, mere aggregation of another work not based on the 1.1 root 209: Program with the Program (or with a work based on the Program) on 210: a volume of a storage or distribution medium does not bring the 211: other work under the scope of this License. 212: 1.1.1.5 root 213: 3. You may copy and distribute the Program (or a work based on it, 1.1.1.3 root 214: under Section 2) in object code or executable form under the terms 215: of Sections 1 and 2 above provided that you also do one of the 216: following: 1.1 root 217: 218: a. Accompany it with the complete corresponding machine-readable 219: source code, which must be distributed under the terms of 220: Sections 1 and 2 above on a medium customarily used for 221: software interchange; or, 222: 223: b. Accompany it with a written offer, valid for at least three 1.1.1.3 root 224: years, to give any third party, for a charge no more than your 225: cost of physically performing source distribution, a complete 226: machine-readable copy of the corresponding source code, to be 227: distributed under the terms of Sections 1 and 2 above on a 228: medium customarily used for software interchange; or, 229: 230: c. Accompany it with the information you received as to the offer 231: to distribute corresponding source code. (This alternative is 232: allowed only for noncommercial distribution and only if you 233: received the program in object code or executable form with 234: such an offer, in accord with Subsection b above.) 235: 236: The source code for a work means the preferred form of the work for 237: making modifications to it. For an executable work, complete 238: source code means all the source code for all modules it contains, 239: plus any associated interface definition files, plus the scripts 1.1.1.5 root 240: used to control compilation and installation of the executable. 1.1.1.3 root 241: However, as a special exception, the source code distributed need 242: not include anything that is normally distributed (in either 243: source or binary form) with the major components (compiler, 244: kernel, and so on) of the operating system on which the executable 245: runs, unless that component itself accompanies the executable. 246: 247: If distribution of executable or object code is made by offering 248: access to copy from a designated place, then offering equivalent 249: access to copy the source code from the same place counts as 250: distribution of the source code, even though third parties are not 251: compelled to copy the source along with the object code. 1.1 root 252: 1.1.1.5 root 253: 4. You may not copy, modify, sublicense, or distribute the Program 1.1 root 254: except as expressly provided under this License. Any attempt 255: otherwise to copy, modify, sublicense or distribute the Program is 256: void, and will automatically terminate your rights under this 1.1.1.5 root 257: License. However, parties who have received copies, or rights, 1.1 root 258: from you under this License will not have their licenses 259: terminated so long as such parties remain in full compliance. 260: 1.1.1.5 root 261: 5. You are not required to accept this License, since you have not 1.1 root 262: signed it. However, nothing else grants you permission to modify 263: or distribute the Program or its derivative works. These actions 1.1.1.5 root 264: are prohibited by law if you do not accept this License. 1.1 root 265: Therefore, by modifying or distributing the Program (or any work 266: based on the Program), you indicate your acceptance of this 267: License to do so, and all its terms and conditions for copying, 268: distributing or modifying the Program or works based on it. 269: 1.1.1.5 root 270: 6. Each time you redistribute the Program (or any work based on the 1.1 root 271: Program), the recipient automatically receives a license from the 272: original licensor to copy, distribute or modify the Program 273: subject to these terms and conditions. You may not impose any 274: further restrictions on the recipients' exercise of the rights 1.1.1.5 root 275: granted herein. You are not responsible for enforcing compliance 1.1 root 276: by third parties to this License. 277: 1.1.1.5 root 278: 7. If, as a consequence of a court judgment or allegation of patent 1.1 root 279: infringement or for any other reason (not limited to patent 280: issues), conditions are imposed on you (whether by court order, 281: agreement or otherwise) that contradict the conditions of this 282: License, they do not excuse you from the conditions of this 1.1.1.3 root 283: License. If you cannot distribute so as to satisfy simultaneously 284: your obligations under this License and any other pertinent 285: obligations, then as a consequence you may not distribute the 286: Program at all. For example, if a patent license would not permit 287: royalty-free redistribution of the Program by all those who 288: receive copies directly or indirectly through you, then the only 289: way you could satisfy both it and this License would be to refrain 290: entirely from distribution of the Program. 291: 292: If any portion of this section is held invalid or unenforceable 293: under any particular circumstance, the balance of the section is 294: intended to apply and the section as a whole is intended to apply 295: in other circumstances. 296: 297: It is not the purpose of this section to induce you to infringe any 298: patents or other property right claims or to contest validity of 299: any such claims; this section has the sole purpose of protecting 300: the integrity of the free software distribution system, which is 301: implemented by public license practices. Many people have made 302: generous contributions to the wide range of software distributed 303: through that system in reliance on consistent application of that 304: system; it is up to the author/donor to decide if he or she is 305: willing to distribute software through any other system and a 306: licensee cannot impose that choice. 1.1 root 307: 1.1.1.3 root 308: This section is intended to make thoroughly clear what is believed 309: to be a consequence of the rest of this License. 1.1 root 310: 1.1.1.5 root 311: 8. If the distribution and/or use of the Program is restricted in 1.1 root 312: certain countries either by patents or by copyrighted interfaces, 313: the original copyright holder who places the Program under this 314: License may add an explicit geographical distribution limitation 315: excluding those countries, so that distribution is permitted only 316: in or among countries not thus excluded. In such case, this 317: License incorporates the limitation as if written in the body of 318: this License. 319: 1.1.1.5 root 320: 9. The Free Software Foundation may publish revised and/or new 1.1 root 321: versions of the General Public License from time to time. Such 1.1.1.3 root 322: new versions will be similar in spirit to the present version, but 323: may differ in detail to address new problems or concerns. 1.1 root 324: 1.1.1.3 root 325: Each version is given a distinguishing version number. If the 1.1 root 326: Program specifies a version number of this License which applies 327: to it and "any later version", you have the option of following 328: the terms and conditions either of that version or of any later 1.1.1.3 root 329: version published by the Free Software Foundation. If the Program 330: does not specify a version number of this License, you may choose 331: any version ever published by the Free Software Foundation. 1.1 root 332: 1.1.1.5 root 333: 10. If you wish to incorporate parts of the Program into other free 1.1.1.3 root 334: programs whose distribution conditions are different, write to the 335: author to ask for permission. For software which is copyrighted 336: by the Free Software Foundation, write to the Free Software 337: Foundation; we sometimes make exceptions for this. Our decision 338: will be guided by the two goals of preserving the free status of 339: all derivatives of our free software and of promoting the sharing 340: and reuse of software generally. 1.1 root 341: 1.1.1.3 root 342: NO WARRANTY 1.1 root 343: 1.1.1.5 root 344: 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO 1.1 root 345: WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE 346: LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 347: HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT 348: WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT 349: NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 350: FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE 351: QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 352: PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY 353: SERVICING, REPAIR OR CORRECTION. 354: 1.1.1.5 root 355: 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN 1.1 root 356: WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY 357: MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE 358: LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, 359: INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR 1.1.1.3 root 360: INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 361: DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU 362: OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY 363: OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN 1.1 root 364: ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 365: 1.1.1.3 root 366: END OF TERMS AND CONDITIONS 1.1 root 367: 1.1.1.4 root 368: How to Apply These Terms to Your New Programs 369: ============================================= 1.1 root 370: 371: If you develop a new program, and you want it to be of the greatest 372: possible use to the public, the best way to achieve this is to make it 373: free software which everyone can redistribute and change under these 374: terms. 375: 376: To do so, attach the following notices to the program. It is safest 377: to attach them to the start of each source file to most effectively 378: convey the exclusion of warranty; and each file should have at least 379: the "copyright" line and a pointer to where the full notice is found. 380: 1.1.1.5 root 381: ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES. 1.1 root 382: Copyright (C) 19YY NAME OF AUTHOR 383: 1.1.1.5 root 384: This program is free software; you can redistribute it and/or modify 385: it under the terms of the GNU General Public License as published by 386: the Free Software Foundation; either version 2 of the License, or 387: (at your option) any later version. 1.1 root 388: 389: This program is distributed in the hope that it will be useful, 390: but WITHOUT ANY WARRANTY; without even the implied warranty of 391: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 392: GNU General Public License for more details. 393: 394: You should have received a copy of the GNU General Public License 395: along with this program; if not, write to the Free Software 396: Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 397: 398: Also add information on how to contact you by electronic and paper 399: mail. 400: 401: If the program is interactive, make it output a short notice like 402: this when it starts in an interactive mode: 403: 404: Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR 1.1.1.4 root 405: Gnomovision comes with ABSOLUTELY NO WARRANTY; for details 1.1.1.5 root 406: type `show w'. 407: This is free software, and you are welcome to redistribute it 408: under certain conditions; type `show c' for details. 1.1 root 409: 410: The hypothetical commands `show w' and `show c' should show the 411: appropriate parts of the General Public License. Of course, the 412: commands you use may be called something other than `show w' and `show 413: c'; they could even be mouse-clicks or menu items--whatever suits your 414: program. 415: 416: You should also get your employer (if you work as a programmer) or 417: your school, if any, to sign a "copyright disclaimer" for the program, 418: if necessary. Here is a sample; alter the names: 419: 1.1.1.5 root 420: Yoyodyne, Inc., hereby disclaims all copyright interest in the program 421: `Gnomovision' (which makes passes at compilers) written by James Hacker. 1.1 root 422: 423: SIGNATURE OF TY COON, 1 April 1989 424: Ty Coon, President of Vice 425: 426: This General Public License does not permit incorporating your 427: program into proprietary programs. If your program is a subroutine 428: library, you may consider it more useful to permit linking proprietary 1.1.1.3 root 429: applications with the library. If this is what you want to do, use the 430: GNU Library General Public License instead of this License. 1.1 root 431: 432: 1.1.1.7 ! root 433: File: gcc.info, Node: Contributors, Next: Funding, Prev: Copying, Up: Top 1.1 root 434: 435: Contributors to GNU CC 436: ********************** 437: 438: In addition to Richard Stallman, several people have written parts 439: of GNU CC. 440: 1.1.1.3 root 441: * The idea of using RTL and some of the optimization ideas came from 442: the program PO written at the University of Arizona by Jack 1.1 root 443: Davidson and Christopher Fraser. See "Register Allocation and 444: Exhaustive Peephole Optimization", Software Practice and 445: Experience 14 (9), Sept. 1984, 857-866. 446: 447: * Paul Rubin wrote most of the preprocessor. 448: 449: * Leonard Tower wrote parts of the parser, RTL generator, and RTL 450: definitions, and of the Vax machine description. 451: 452: * Ted Lemon wrote parts of the RTL reader and printer. 453: 1.1.1.3 root 454: * Jim Wilson implemented loop strength reduction and some other loop 455: optimizations. 1.1 root 456: 457: * Nobuyuki Hikichi of Software Research Associates, Tokyo, 458: contributed the support for the Sony NEWS machine. 459: 1.1.1.3 root 460: * Charles LaBrec contributed the support for the Integrated Solutions 461: 68020 system. 1.1 root 462: 463: * Michael Tiemann of Cygnus Support wrote the front end for C++, as 464: well as the support for inline functions and instruction 465: scheduling. Also the descriptions of the National Semiconductor 1.1.1.3 root 466: 32000 series cpu, the SPARC cpu and part of the Motorola 88000 cpu. 1.1 root 467: 1.1.1.7 ! root 468: * Gerald Baumgartner added the signature extension to the C++ ! 469: front-end. ! 470: 1.1 root 471: * Jan Stein of the Chalmers Computer Society provided support for 472: Genix, as well as part of the 32000 machine description. 473: 474: * Randy Smith finished the Sun FPA support. 475: 476: * Robert Brown implemented the support for Encore 32000 systems. 477: 478: * David Kashtan of SRI adapted GNU CC to the Vomit-Making System 479: (VMS). 480: 481: * Alex Crain provided changes for the 3b1. 482: 1.1.1.3 root 483: * Greg Satz and Chris Hanson assisted in making GNU CC work on HP-UX 484: for the 9000 series 300. 1.1 root 485: 486: * William Schelter did most of the work on the Intel 80386 support. 487: 488: * Christopher Smith did the port for Convex machines. 489: 490: * Paul Petersen wrote the machine description for the Alliant FX/8. 491: 1.1.1.7 ! root 492: * Dario Dariol contributed the four varieties of sample programs ! 493: that print a copy of their source. ! 494: 1.1 root 495: * Alain Lichnewsky ported GNU CC to the Mips cpu. 496: 497: * Devon Bowen, Dale Wiles and Kevin Zachmann ported GNU CC to the 498: Tahoe. 499: 500: * Jonathan Stone wrote the machine description for the Pyramid 501: computer. 502: 1.1.1.3 root 503: * Gary Miller ported GNU CC to Charles River Data Systems machines. 504: 1.1.1.4 root 505: * Richard Kenner of the New York University Ultracomputer Research 506: Laboratory wrote the machine descriptions for the AMD 29000, the 507: DEC Alpha, the IBM RT PC, and the IBM RS/6000 as well as the 508: support for instruction attributes. He also made changes to 509: better support RISC processors including changes to common 510: subexpression elimination, strength reduction, function calling 511: sequence handling, and condition code support, in addition to 512: generalizing the code for frame pointer elimination. 1.1 root 513: 514: * Richard Kenner and Michael Tiemann jointly developed reorg.c, the 515: delay slot scheduler. 516: 1.1.1.3 root 517: * Mike Meissner and Tom Wood of Data General finished the port to the 518: Motorola 88000. 1.1 root 519: 520: * Masanobu Yuhara of Fujitsu Laboratories implemented the machine 521: description for the Tron architecture (specifically, the Gmicro). 522: 523: * NeXT, Inc. donated the front end that supports the Objective C 524: language. 525: 1.1.1.3 root 526: * James van Artsdalen wrote the code that makes efficient use of the 527: Intel 80387 register stack. 1.1 root 528: 1.1.1.3 root 529: * Mike Meissner at the Open Software Foundation finished the port to 1.1.1.7 ! root 530: the MIPS cpu, including adding ECOFF debug support, and worked on ! 531: the Intel port for the Intel 80386 cpu. 1.1 root 532: 1.1.1.4 root 533: * Ron Guilmette implemented the `protoize' and `unprotoize' tools, 534: the support for Dwarf symbolic debugging information, and much of 535: the support for System V Release 4. He has also worked heavily on 536: the Intel 386 and 860 support. 1.1 root 537: 1.1.1.2 root 538: * Torbjorn Granlund of the Swedish Institute of Computer Science 539: implemented multiply-by-constant optimization and better long long 540: support, and improved leaf function register allocation. 541: 1.1.1.4 root 542: * Mike Stump implemented the support for Elxsi 64 bit CPU. 543: 1.1.1.5 root 544: * John Wehle added the machine description for the Western Electric 545: 32000 processor used in several 3b series machines (no relation to 546: the National Semiconductor 32000 processor). 547: 548: * Holger Teutsch provided the support for the Clipper cpu. 549: 550: * Kresten Krab Thorup wrote the run time support for the Objective C 551: language. 552: 553: * Stephen Moshier contributed the floating point emulator that 554: assists in cross-compilation and permits support for floating 555: point numbers wider than 64 bits. 556: 1.1.1.6 root 557: * David Edelsohn contributed the changes to RS/6000 port to make it 558: support the PowerPC and POWER2 architectures. 559: 1.1.1.5 root 560: * Steve Chamberlain wrote the support for the Hitachi SH processor. 561: 1.1.1.6 root 562: * Peter Schauer wrote the code to allow debugging to work on the 563: Alpha. 564: 1.1.1.7 ! root 565: * Oliver M. Kellogg of Deutsche Aerospace contributed the port to the ! 566: MIL-STD-1750A. ! 567: ! 568: ! 569: File: gcc.info, Node: Funding, Next: Look and Feel, Prev: Contributors, Up: Top ! 570: ! 571: Funding Free Software ! 572: ********************* ! 573: ! 574: If you want to have more free software a few years from now, it makes ! 575: sense for you to help encourage people to contribute funds for its ! 576: development. The most effective approach known is to encourage ! 577: commercial redistributors to donate. ! 578: ! 579: Users of free software systems can boost the pace of development by ! 580: encouraging for-a-fee distributors to donate part of their selling price ! 581: to free software developers--the Free Software Foundation, and others. ! 582: ! 583: The way to convince distributors to do this is to demand it and ! 584: expect it from them. So when you compare distributors, judge them ! 585: partly by how much they give to free software development. Show ! 586: distributors they must compete to be the one who gives the most. ! 587: ! 588: To make this approach work, you must insist on numbers that you can ! 589: compare, such as, "We will donate ten dollars to the Frobnitz project ! 590: for each disk sold." Don't be satisfied with a vague promise, such as ! 591: "A portion of the profits are donated," since it doesn't give a basis ! 592: for comparison. ! 593: ! 594: Even a precise fraction "of the profits from this disk" is not very ! 595: meaningful, since creative accounting and unrelated business decisions ! 596: can greatly alter what fraction of the sales price counts as profit. ! 597: If the price you pay is $50, ten percent of the profit is probably less ! 598: than a dollar; it might be a few cents, or nothing at all. ! 599: ! 600: Some redistributors do development work themselves. This is useful ! 601: too; but to keep everyone honest, you need to inquire how much they do, ! 602: and what kind. Some kinds of development make much more long-term ! 603: difference than others. For example, maintaining a separate version of ! 604: a program contributes very little; maintaining the standard version of a ! 605: program for the whole community contributes much. Easy new ports ! 606: contribute little, since someone else would surely do them; difficult ! 607: ports such as adding a new CPU to the GNU C compiler contribute more; ! 608: major new features or packages contribute the most. ! 609: ! 610: By establishing the idea that supporting further development is "the ! 611: proper thing to do" when distributing free software for a fee, we can ! 612: assure a steady flow of resources into making more free software. ! 613: ! 614: Copyright (C) 1994 Free Software Foundation, Inc. ! 615: Verbatim copying and redistribution of this section is permitted ! 616: without royalty; alteration is not permitted. ! 617: 1.1 root 618: 1.1.1.7 ! root 619: File: gcc.info, Node: Look and Feel, Next: G++ and GCC, Prev: Funding, Up: Top 1.1 root 620: 621: Protect Your Freedom--Fight "Look And Feel" 622: ******************************************* 623: 1.1.1.3 root 624: This section is a political message from the League for Programming 1.1.1.7 ! root 625: Freedom to the users of GNU CC. We have included it here because ! 626: the issue of interface copyright is important to the GNU project. ! 627: ! 628: Apple and Lotus have tried to create a new form of legal monopoly: a ! 629: copyright on a user interface. 1.1 root 630: 1.1.1.7 ! root 631: An interface is a kind of language--a set of conventions for ! 632: communication between two entities, human or machine. Until a few years ! 633: ago, the law seemed clear: interfaces were outside the domain of ! 634: copyright, so programmers could program freely and implement whatever ! 635: interface the users demanded. Imitating de-facto standard interfaces, ! 636: sometimes with improvements, was standard practice in the computer ! 637: field. These improvements, if accepted by the users, caught on and ! 638: became the norm; in this way, much progress took place. ! 639: ! 640: Computer users, and most software developers, were happy with this ! 641: state of affairs. However, large companies such as Apple and Lotus ! 642: would prefer a different system--one in which they can own interfaces ! 643: and thereby rid themselves of all serious competitors. They hope that ! 644: interface copyright will give them, in effect, monopolies on major ! 645: classes of software. ! 646: ! 647: Other large companies such as IBM and Digital also favor interface ! 648: monopolies, for the same reason: if languages become property, they ! 649: expect to own many de-facto standard languages. But Apple and Lotus are ! 650: the ones who have actually sued. Lotus has won lawsuits against two ! 651: small companies, which were thus put out of business. Then they sued ! 652: Borland; this case is now before the court of appeals. Apple's lawsuit ! 653: against HP and Microsoft is also being decided by an appeals court. ! 654: Widespread rumors that Apple had lost the case are untrue; as of July ! 655: 1994, the final outcome is unknown. ! 656: ! 657: If the monopolists get their way, they will hobble the software ! 658: field: 1.1 root 659: 660: * Gratuitous incompatibilities will burden users. Imagine if each 1.1.1.7 ! root 661: car manufacturer had to design a different way to start, stop, and ! 662: steer a car. 1.1 root 663: 1.1.1.7 ! root 664: * Users will be "locked in" to whichever interface they learn; then ! 665: they will be prisoners of one supplier, who will charge a ! 666: monopolistic price. 1.1 root 667: 668: * Large companies have an unfair advantage wherever lawsuits become 1.1.1.7 ! root 669: commonplace. Since they can afford to sue, they can intimidate ! 670: smaller developers with threats even when they don't really have a ! 671: case. ! 672: ! 673: * Interface improvements will come slower, since incremental ! 674: evolution through creative partial imitation will no longer occur. ! 675: ! 676: If interface monopolies are accepted, other large companies are ! 677: waiting to grab theirs: ! 678: ! 679: * Adobe is expected to claim a monopoly on the interfaces of various ! 680: popular application programs, if Borland's appeal against Lotus ! 681: fails. ! 682: ! 683: * Open Computing magazine reported a Microsoft vice president as ! 684: threatening to sue people who copy the interface of Windows. ! 685: ! 686: Users invest a great deal of time and money in learning to use ! 687: computer interfaces. Far more, in fact, than software developers ! 688: invest in developing *and even implementing* the interfaces. Whoever ! 689: can own an interface, has made its users into captives, and ! 690: misappropriated their investment. ! 691: ! 692: To protect our freedom from monopolies like these, a group of ! 693: programmers and users have formed a grass-roots political organization, ! 694: the League for Programming Freedom. ! 695: ! 696: The purpose of the League is to oppose monopolistic practices such as ! 697: interface copyright and software patents. The League calls for a return ! 698: to the legal policies of the recent past, in which programmers could ! 699: program freely. The League is not concerned with free software as an ! 700: issue, and is not affiliated with the Free Software Foundation. ! 701: ! 702: The League's activities include publicizing the issue, as is being ! 703: done here, and filing friend-of-the-court briefs on behalf of ! 704: defendants sued by monopolists. Recently the League filed a ! 705: friend-of-the-court brief for Borland in its appeal against Lotus. 1.1 root 706: 707: The League's membership rolls include John McCarthy, inventor of 1.1.1.7 ! root 708: Lisp, Marvin Minsky, founder of the MIT Artificial Intelligence lab, ! 709: Guy L. Steele, Jr., author of well-known books on Lisp and C, as well ! 710: as Richard Stallman, the developer of GNU CC. Please join and add your 1.1 root 711: name to the list. Membership dues in the League are $42 per year for 712: programmers, managers and professionals; $10.50 for students; $21 for 713: others. 714: 1.1.1.7 ! root 715: Activist members are especially important, but members who have no ! 716: time to give are also important. Surveys at major ACM conferences have ! 717: indicated a vast majority of attendees agree with the League. If just ! 718: ten percent of the programmers who agree with the League join the ! 719: League, we will probably triumph. 1.1 root 720: 1.1.1.4 root 721: To join, or for more information, phone (617) 243-4091 or write to: 1.1 root 722: 723: League for Programming Freedom 724: 1 Kendall Square #143 725: P.O. Box 9171 726: Cambridge, MA 02139 727: 1.1.1.7 ! root 728: You can also send electronic mail to `[email protected]'. 1.1 root 729: 1.1.1.7 ! root 730: In addition to joining the League, here are some suggestions from the ! 731: League for other things you can do to protect your freedom to write ! 732: programs: 1.1 root 733: 734: * Tell your friends and colleagues about this issue and how it 735: threatens to ruin the computer industry. 736: 1.1.1.7 ! root 737: * Mention that you are a League member in your `.signature', and ! 738: mention the League's email address for inquiries. ! 739: ! 740: * Ask the companies you consider working for or working with to make ! 741: statements against software monopolies, and give preference to ! 742: those that do. ! 743: ! 744: * When employers ask you to sign contracts giving them copyright or ! 745: patent rights, insist on clauses saying they can use these rights ! 746: only defensively. Don't rely on "company policy," since that can ! 747: change at any time; don't rely on an individual executive's ! 748: private word, since that person may be replaced. Get a commitment ! 749: just as binding as the commitment they get from you. 1.1 root 750: 751: * Write to Congress to explain the importance of this issue. 752: 753: House Subcommittee on Intellectual Property 754: 2137 Rayburn Bldg 755: Washington, DC 20515 756: 757: Senate Subcommittee on Patents, Trademarks and Copyrights 758: United States Senate 759: Washington, DC 20510 760: 761: (These committees have received lots of mail already; let's give 762: them even more.) 763: 1.1.1.7 ! root 764: Democracy means nothing if you don't use it. Stand up and be ! 765: counted! 1.1 root 766: 767: 1.1.1.7 ! root 768: File: gcc.info, Node: G++ and GCC, Next: Invoking GCC, Prev: Look and Feel, Up: Top 1.1.1.5 root 769: 770: Compile C, C++, or Objective C 771: ****************************** 772: 773: The C, C++, and Objective C versions of the compiler are integrated; 774: the GNU C compiler can compile programs written in C, C++, or Objective 775: C. 776: 777: "GCC" is a common shorthand term for the GNU C compiler. This is 778: both the most general name for the compiler, and the name used when the 779: emphasis is on compiling C programs. 780: 781: When referring to C++ compilation, it is usual to call the compiler 782: "G++". Since there is only one compiler, it is also accurate to call 783: it "GCC" no matter what the language context; however, the term "G++" 784: is more useful when the emphasis is on compiling C++ programs. 785: 1.1.1.7 ! root 786: We use the name "GNU CC" to refer to the compilation system as a ! 787: whole, and more specifically to the language-independent part of the ! 788: compiler. For example, we refer to the optimization options as ! 789: affecting the behavior of "GNU CC" or sometimes just "the compiler". ! 790: ! 791: Front ends for other languages, such as Ada 9X, Fortran, Modula-3, ! 792: and Pascal, are under development. These front-ends, like that for ! 793: C++, are built in subdirectories of GNU CC and link to it. The result ! 794: is an integrated compiler that can compile programs written in C, C++, ! 795: Objective C, or any of the languages for which you have installed front ! 796: ends. ! 797: ! 798: In this manual, we only discuss the options for the C, Objective-C, ! 799: and C++ compilers and those of the GNU CC core. Consult the ! 800: documentation of the other front ends for the options to use when ! 801: compiling programs written in other languages. ! 802: 1.1.1.5 root 803: G++ is a *compiler*, not merely a preprocessor. G++ builds object 804: code directly from your C++ program source. There is no intermediate C 805: version of the program. (By contrast, for example, some other 806: implementations use a program that generates a C program from your C++ 807: source.) Avoiding an intermediate C representation of the program means 808: that you get better object code, and better debugging information. The 809: GNU debugger, GDB, works with this information in the object code to 810: give you comprehensive C++ source-level editing capabilities (*note C 811: and C++: (gdb.info)C.). 812: 813: 814: File: gcc.info, Node: Invoking GCC, Next: Installation, Prev: G++ and GCC, Up: Top 1.1 root 815: 816: GNU CC Command Options 817: ********************** 818: 819: When you invoke GNU CC, it normally does preprocessing, compilation, 820: assembly and linking. The "overall options" allow you to stop this 821: process at an intermediate stage. For example, the `-c' option says 1.1.1.3 root 822: not to run the linker. Then the output consists of object files output 823: by the assembler. 1.1 root 824: 1.1.1.3 root 825: Other options are passed on to one stage of processing. Some options 826: control the preprocessor and others the compiler itself. Yet other 827: options control the assembler and linker; most of these are not 1.1 root 828: documented here, since you rarely need to use any of them. 829: 1.1.1.5 root 830: Most of the command line options that you can use with GNU CC are 831: useful for C programs; when an option is only useful with another 832: language (usually C++), the explanation says so explicitly. If the 833: description for a particular option does not mention a source language, 834: you can use that option with all supported languages. 835: 836: *Note Compiling C++ Programs: Invoking G++, for a summary of special 837: options for compiling C++ programs. 838: 1.1.1.4 root 839: The `gcc' program accepts options and file names as operands. Many 840: options have multiletter names; therefore multiple single-letter options 841: may *not* be grouped: `-dr' is very different from `-d -r'. 1.1 root 842: 843: You can mix options and other arguments. For the most part, the 1.1.1.4 root 844: order you use doesn't matter. Order does matter when you use several 845: options of the same kind; for example, if you specify `-L' more than 846: once, the directories are searched in the order specified. 1.1 root 847: 848: Many options have long names starting with `-f' or with `-W'--for 1.1.1.5 root 849: example, `-fforce-mem', `-fstrength-reduce', `-Wformat' and so on. 1.1 root 850: Most of these have both positive and negative forms; the negative form 851: of `-ffoo' would be `-fno-foo'. This manual documents only one of 852: these two forms, whichever one is not the default. 853: 1.1.1.4 root 854: * Menu: 855: 856: * Option Summary:: Brief list of all options, without explanations. 857: * Overall Options:: Controlling the kind of output: 858: an executable, object files, assembler files, 859: or preprocessed source. 1.1.1.5 root 860: * Invoking G++:: Compiling C++ programs. 861: * C Dialect Options:: Controlling the variant of C language compiled. 862: * C++ Dialect Options:: Variations on C++. 1.1.1.4 root 863: * Warning Options:: How picky should the compiler be? 864: * Debugging Options:: Symbol tables, measurements, and debugging dumps. 865: * Optimize Options:: How much optimization? 866: * Preprocessor Options:: Controlling header files and macro definitions. 867: Also, getting dependency information for Make. 868: * Assembler Options:: Passing options to the assembler. 869: * Link Options:: Specifying libraries and so on. 870: * Directory Options:: Where to find header files and libraries. 871: Where to find the compiler executable files. 872: * Target Options:: Running a cross-compiler, or an old version of GNU CC. 873: * Submodel Options:: Specifying minor hardware or convention variations, 874: such as 68010 vs 68020. 875: * Code Gen Options:: Specifying conventions for function calls, data layout 876: and register usage. 877: * Environment Variables:: Env vars that affect GNU CC. 878: * Running Protoize:: Automatically adding or removing function prototypes. 879:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.