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