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